Qodana
The code quality platform for teams
JetBrains Qodana 2023.3:新的代码质量功能
我们的团队一直在根据用户反馈创建新功能,帮助用户增强代码质量和提升合规性。 本文将介绍 JetBrains Qodana 2023.3(最新版本)中的更新。
针对 .NET 有哪些变化?
为适用于 .NET 的 Qodana Community linter 启动 EAP
先前,如果您想在 IDE 之外(在 CI/CD 服务器上)运行社区版 ReSharper 的代码分析,您需要使用 ReSharper Command Line Tools 中的 InspectCode。
在 2023.3 版本中,我们将为适用于 .NET 的 Qodana Community linter 启动抢先体验计划 (EAP),此 linter 将替代 InspectCode!
为什么? Qodana 虽然与 ReSharper 基于相同的静态代码分析引擎,但还具有额外优势。
借助 Qodana,您可以:
- 使用 Qodana Cloud 中的标志性旭日图查看分析结果。
- 快速评估项目整体健康状况。
- 使用基线管理技术债务。
我们暂时不会停止支持 ReSharper Command Line Tools,但未来,适用于 .NET 的 Qodana Community linter 将成为在 IDE 之外运行社区版 ReSharper 分析的首选方式。
审核依赖项
付费的适用于 .NET 的 Qodana linter 现在允许您运行第三方许可证审核与检测易受攻击的依赖项,这两项均不包含在 ReSharper 中。
Qodana 许可证审核包括两个级别的功能,帮助您的企业检查许可证并保持合规。
此版本中的许可证审核功能有哪些变化?
- 许可证信息收集:在 License Audit(许可证审核)标签页中自动收集并显示项目依赖项中的所有许可证信息。
- 许可证合规性检查器:评估许可证合规性并识别与依赖项许可证相关的潜在法律风险。
要查看和下载许可证审核结果,首先在执行检查的 Qodana Cloud 中打开项目,然后导航到 License audit(许可证审核)标签页。

则:
- 展开列表以查看依赖项树。
- 在查看所有许可证或仅查看不兼容的许可证之间切换。
- 查看兼容性许可证规则。
- 点击 Download license list(下载许可证列表)按钮以下载 MD、XML、HTML、CSV 或高级 SPDX 格式的依赖项列表。
适用于 .NET Framework 的 .NET 原生模式
现在,Qodana 在原生环境中运行,使您能够使用私有 NuGet 源中的软件包并在 Windows 代理上分析以 .NET 框架为目标的项目。 您可以在用于构建发行版的同一台计算机上运行 Qodana。 在启动分析之前,我们建议通过向 `qodana.yaml` 文件的 `bootstrap:` 部分提供构建命令来构建源。
许可证审核“软件物料清单”(SBOM) 导出
SPDX 格式不仅包含依赖项列表,还包含项目结构、库校验和、版权和包含的许可证文本,都位于软件物料清单 (SBOM) 中。
点击 Download license list(下载许可证列表)按钮即可检索许可证审核报告。

针对 .NET、Go 和 Python 的代码覆盖率
自 2023.2 版本以来,代码覆盖率一直是深受 Java、JavaScript 和 PHP 用户喜爱的功能。 在 Qodana 2023.3 中,我们将 .NET、Go 和 Python 添加到您可以衡量代码覆盖率的语言列表中。

在最新的 Qodana 版本中,新增的检查可以帮助您确定方法、类或文件的覆盖率是否低于预定义的阈值。 生成的覆盖率信息将被计算并在命令行界面 (CLI) 输出和 Qodana Cloud UI 中显示。
检查默认启用,位于我们的 Starter(入门)和 Recommended(推荐)检查配置文件中。 要开始查看测试覆盖率结果,只需提供测试数据。
要利用此功能,可以将包含覆盖率报告的目录映射到 `/data/coverage` 目录(如果您使用的是 Docker 镜像),也可以将其放入所分析项目的根文件夹下的 `.qodana/code-coverage` 中。 测试应该由开发者运行并存储执行数据。
计算代码覆盖率需要测试框架提供的额外信息:
- .NET
- 访问代码覆盖率框架 Coverlet 以获取 .NET 代码覆盖率。
- Python
- 使用 coverage.py 执行单元测试并将结果转换为 XML 格式。
- Go
- 使用 `% go test –coverprofile=coverage.out` 运行单元测试。 无需额外转换。
VS Code 扩展程序
我们最近宣布,您现在可以使用 VS Code 或许多主流 JetBrains IDE 将 JetBrains 代码质量智能扩展到混合开发团队。

增强漏洞搜索能力
Qodana 可以帮助您的团队找到项目中易受攻击的依赖项。 但这又提出了另一个重要问题:“您的代码真的使用了易受攻击的 API 吗?”
现在,我们不仅可以针对 Java、Kotlin 和 PHP 回答这个问题,还可以针对 Go、JS 和 Python 回答这个问题。 这项功能对于 JetBrains Qodana 以及您的 JetBrains IDE 都是开箱即用。

Qodana IDE 插件焕然一新
Qodana 团队进行了设计更新,在最新版本的 Qdana IDE 插件中升级了 UI。 为了避免在切换分支时出现困惑,您现在可以在 IDE 中查看与分支匹配的分析结果。
如需详细了解我们的 IDE 插件,请观看技术布道师 Anton Arhipov 有关使用 Qodana IDE 插件解锁代码质量的视频。
请注意,本文介绍的只是部分亮点! 版本说明涵盖了更多详细信息、额外功能,以及本文未列出的 Qodana 2023.3 功能。
与 Qodana 团队讨论如何正确开展代码质量工作
如果您对 Qodana 有任何疑问或建议,或者只是想详细了解 Qodana 如何帮助您的团队和业务,请在此处发表评论,或发送电子邮件至 qodana-support@jetbrains.com 与我们联系。
祝您开发愉快!
您的 Qodana 团队
本博文英文原作者: