Qodana
The code quality platform for teams
使用 Qodana 2024.1 在 IntelliJ IDEA 中创建自定义代码检查和执行其他操作
自 2023 年 7 月正式商业发布以来,JetBrains Qodana 一直是代码质量领域的热门话题。
Qodana 是面向团队的官方 JetBrains 静态代码分析平台,与 JetBrains IDE 和团队工具高度兼容。它还包含一系列独特检查,全程提供出色的客户支持。
Qodana 的全球采用标志着推出新功能和更新的最佳时机,让团队在需求正盛的行业中维护软件质量。
无论您是想为团队创建自定义检查、默认审核许可证以达到或保持合规,还是更轻松地浏览代码分析结果,Qodana 的 2024.1 版本都能帮您搞定。
跳转到:
FlexInspect
适用于 qodana-dotnet 的差异分析
开箱即启用的许可证审核
GitLab 代码质量和 BitBucket 代码洞察支持
IDE 插件 UX 改进
未通过 qodana.yaml 定义时的默认 linter 选择
适用于 qodana.yaml 配置文件的自定义名称
预订演示
FlexInspect – 编写自定义检查的新方式
每个团队在代码质量方面都有独特的需求。 目前,还没有哪款代码质量工具默认涵盖所有规则,这就可能给具有特定需求的团队留下空白。
借助 Qodana 的 FlexInspect,您可以为想在代码或仓库中强制执行的规则创建自定义代码检查。 然后,您可以在 IntelliJ IDEA 中针对项目运行这些检查,或者在 CI/CD 管道中使用 Qodana 运行检查。
由此,您可以快速高效地识别代码库和团队的特有问题。
遵循以下步骤,在 IntelliJ IDEA 内使用 Kotlin IntelliJ API 编写自定义检查:
- 访问源代码的抽象语法树 (AST)。
- 在代码上实时调试新检查。
- 观察新的自定义检查的实际运作情况,包括对不符合预期行为的代码段的高亮显示。
通过此功能,您可以访问 PSI(所有 IntelliJ 和 Qodana 检查使用的 API),并实现您可能需要的额外自定义检查。
下面展示了如何使用 IntelliJ IDEA PSI 查看器访问代码的 AST:
FlexInspect 可用于分析多种语言的代码,包括 Java、Kotlin、JavaScript、TypeScript、PHP、Go、Python、Ruby、SQL、XML、CSS、YAML、JSON、shell 和 Dockerfile。 我们正在积极增加支持的语言,敬请期待!
请注意:只有在 Kotlin 中编写代码才能实现自定义检查,因此您需要使用 IntelliJ IDEA Ultimate。
此外,由于这是 FlexInspect 的第一个版本,如果您遇到问题,请随时联系我们的支持团队。 请发送电子邮件至 qodana-support@jetbrains.com 与我们联系,或者向 Qodana 问题跟踪器提交 bug 报告。
Qodana for .NET 中新增的差异分析
现在,您可以使用 QDnet linter 根据需要分析合并与拉取请求,不必扫描整个代码库。
使用此模式对更改集(合并或拉取请求)运行增量或差异分析。 对于 qodana-github-action
的用户,这项更改将自动生效。
如何使用:
“我刚刚完成提交,想要分析一下更改。”
qodana scan --diff-start=$GIT_START_HASH
“我想分析两次提交之间的一组更改。”
qodana scan --diff-start=$GIT_HASH_START --diff-end=$GIT_HASH_END
“我正在为 CI 运行使用 Qodana GitHub 操作。”
它将自动运作。
请注意:这项功能仅受付费 Qodana for .NET linter 支持,不受 Qodana for .NET Community linter 支持。
默认启用的许可证审核
如果没有合适的工具,合规性可能会成为一个大难题,而这也是我们的许可证审核功能如此受用户欢迎的部分原因。 现在,License Audit(许可证审核)功能默认启用(如果您拥有 Ultimate Plus 许可证,这是通常支持此功能的唯一许可证)。
Qodana 找到的项目依赖项许可证信息将自动显示在 Qodana Cloud 中项目的 License Audit(许可证审核)标签页上,无需配置分析即可运行。
现有的 License Audit(许可证审核)用户可以在 Qodana Cloud UI 标签页中查看审核问题,而不是在整体问题列表中。 如果您和您的团队想继续在整体问题中看到许可证问题,请更新配置。
GitLab 代码质量和 BitBucket 代码洞察支持(拉取请求装饰)
从 2024.1 开始,Qodana linter 支持适用于 BitBucket Pipelines 和 GitLab CI 的拉取请求装饰。 此前,这项功能仅适用于 GitHub Actions。
现在,对于 GitHub Actions、GitLab CI 和 BitBucket Pipelines,通过拉取或合并请求界面中对代码质量的直接自动化洞察,Qodana 能够增强代码审查。
得益于这种集成,您可以直接从拉取或合并请求访问检测到问题的具体代码行,并获取问题的描述和可能的解决方案或建议。
如何启用该功能:
- BitBucket 代码洞察:无需额外配置,将 linter 更新到 2024.1 版本即可。
- GitLab 代码质量:需要额外配置(指定报告文件位置)。
脚本:
- qodana --results-dir=$CI_PROJECT_DIR/.qodana/results --cache-dir=$CI_PROJECT_DIR/.qodana/cache
工件:
报告:
codequality: .qodana/results/gl-code-quality-report.json
未通过 qodana.yaml 定义时的默认 linter 选择
我们正在对 JVM 和 Python 项目的默认 linter 选择做出更改。 为了向用户提供功能丰富的先进分析功能,Qodana 将默认使用我们 linter 的 Ultimate 版本 – JVM 项目为 QDJVM,Python 项目为 QDPY,而不是 Community 版本(分别为 QDJVMC 和 QDPYC)。
经过这项更改,如果您的 qodana.yaml 配置未指定具体的 linter 版本,也未提供 Qodana Cloud 令牌,将自动使用 Ultimate 版本,让您体验 Qodana 的全部功能。
如果您更喜欢 Community 版本,则需要在 qodana.yaml 文件中明确定义,避免升级到 Qodana 2024.1 后出现中断。
适用于 IDE 插件的改进 UX
- Qodana 高亮显示不再重复 IDE 的高亮显示。 如果 IDE 已经高亮显示 Qodana 报告中的某个问题,则 Qodana 插件不会再尝试高亮显示。
- 修正 Qodana 报告中列出的一个问题或调整相关代码段时,Qodana 插件会自动将报告中问题的状态更新为 Fixed(已修正 – 如果已修正)或 Not found(找不到 – 如果相关代码段被移除)。
这样,您可以立即看到报告中的哪些问题已经解决,哪些问题还需要处理。
按问题严重性配置质量门
您应该不会想因为低严重性问题导致构建失败。 现在,您可以微调构建失败。
除 Qodana Community for .NET 之外的所有 linter 都允许您为每个问题严重性配置单独的质量门,并且仅超过一项设置限制(包括问题总数)就会导致构建失败。 以下是 qodana.yaml 严重性配置的示例:
failureConditions: severityThresholds: any: # Total problems critical: # Critical and other severities high: moderate: low: info:
适用于自定义 qodana.yaml 文件的参数
版本 2024.1 简化了在同一仓库上使用不同配置运行 Qodana 构建的流程。
在先前的版本中,Qodana linter 使用 qodana.yaml 文件保留配置并定义 linter 的行为方式(包括运行的检查集、应分析的文件夹和文件等)。
要使用不同的配置通过 linter 运行 CI 作业,您需要替换 qodana.yaml 文件。
此外,举例来说,如果您有一个包含 JavaScript、PHP 和 Python 的单仓库,并且为每个 linter 运行三个各自的作业,那么您可能希望使用不同的 qodana.yaml 文件,这在过去无法实现。
从 Qodana 2024.1 开始,您可以使用任何文件名并将其作为参数传递。 所有 linter 现在都提供名为 config
的可选参数,允许您将任何文件作为配置传递。
用法示例:
#qodana-cli qodana scan --config custom.qodana.yaml #qodana docker docker run \ -v :/data/project \ -v :/data/results \ jetbrains/qodana-jvm:2024.1 \ --config .qodana/license-check.qodana.yaml
以上是目前最重要的几大亮点,还有更多即将到来。 如果您想推荐新功能或新特性,请在 Qodana YouTrack 面板上告诉我们。 您可以阅读完整的 Qodana 2024.1 发布文档了解更多信息。
本博文英文原作者: