All Things Web Code Review Coding Collaboration Development Kotlin Plugins Releases

使用 Qodana 2024.1 在 IntelliJ IDEA 中创建自定义代码检查和执行其他操作

Read this post in other languages:

自 2023 年 7 月正式商业发布以来,JetBrains Qodana 一直是代码质量领域的热门话题。

Qodana 是面向团队的官方 JetBrains 静态代码分析平台,与 JetBrains IDE 和团队工具高度兼容。它还包含一系列独特检查,全程提供出色的客户支持

Qodana 的全球采用标志着推出新功能和更新的最佳时机,让团队在需求正盛的行业中维护软件质量。

无论您是想为团队创建自定义检查、默认审核许可证以达到或保持合规,还是更轻松地浏览代码分析结果,Qodana 的 2024.1 版本都能帮您搞定。

试用 Qodana

跳转到:

FlexInspect
适用于 qodana-dotnet 的差异分析
开箱即启用的许可证审核
GitLab 代码质量和 BitBucket 代码洞察支持
IDE 插件 UX 改进
未通过 qodana.yaml 定义时的默认 linter 选择
适用于 qodana.yaml 配置文件的自定义名称
预订演示

FlexInspect – 编写自定义检查的新方式

每个团队在代码质量方面都有独特的需求。 目前,还没有哪款代码质量工具默认涵盖所有规则,这就可能给具有特定需求的团队留下空白。

借助 Qodana 的 FlexInspect您可以为想在代码或仓库中强制执行的规则创建自定义代码检查。 然后,您可以在 IntelliJ IDEA 中针对项目运行这些检查,或者在 CI/CD 管道中使用 Qodana 运行检查。

Qodana 中的自定义代码检查。
FlexInspect – Qodana 中的自定义代码检查。

由此,您可以快速高效地识别代码库和团队的特有问题。

遵循以下步骤,在 IntelliJ IDEA 内使用 Kotlin IntelliJ API 编写自定义检查:

  • 访问源代码的抽象语法树 (AST)。
  • 在代码上实时调试新检查。
  • 观察新的自定义检查的实际运作情况,包括对不符合预期行为的代码段的高亮显示。

通过此功能,您可以访问 PSI(所有 IntelliJ 和 Qodana 检查使用的 API),并实现您可能需要的额外自定义检查。

下面展示了如何使用 IntelliJ IDEA PSI 查看器访问代码的 AST:

用于代码审查中的自定义检查和提高代码质量的 PSI 查看器

PSI 查看器。

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 标签页中查看审核问题,而不是在整体问题列表中。 如果您和您的团队想继续在整体问题中看到许可证问题,请更新配置

代码审查中保证代码安全的许可证审核。

Qodana 许可证审核。

GitLab 代码质量和 BitBucket 代码洞察支持(拉取请求装饰)

从 2024.1 开始,Qodana linter 支持适用于 BitBucket Pipelines 和 GitLab CI 的拉取请求装饰。 此前,这项功能仅适用于 GitHub Actions。

现在,对于 GitHub Actions、GitLab CI 和 BitBucket Pipelines,通过拉取或合并请求界面中对代码质量的直接自动化洞察,Qodana 能够增强代码审查。

得益于这种集成,您可以直接从拉取或合并请求访问检测到问题的具体代码行,并获取问题的描述和可能的解决方案或建议。

如何启用该功能:

    脚本:

 - qodana --results-dir=$CI_PROJECT_DIR/.qodana/results
            --cache-dir=$CI_PROJECT_DIR/.qodana/cache

  工件:

        报告:

     codequality: .qodana/results/gl-code-quality-report.json

BitBucket example.

未通过 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

  1. Qodana 高亮显示不再重复 IDE 的高亮显示。 如果 IDE 已经高亮显示 Qodana 报告中的某个问题,则 Qodana 插件不会再尝试高亮显示。
  2. 修正 Qodana 报告中列出的一个问题或调整相关代码段时,Qodana 插件会自动将报告中问题的状态更新为 Fixed(已修正 – 如果已修正)或 Not found(找不到 – 如果相关代码段被移除)。

    这样,您可以立即看到报告中的哪些问题已经解决,哪些问题还需要处理。

IDE plugin improvements.

按问题严重性配置质量门

您应该不会想因为低严重性问题导致构建失败。 现在,您可以微调构建失败。

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 发布文档了解更多信息。

安排 Qodana 演示

本博文英文原作者:

Sue

Kerry Beetge

Qodana Advocate, Tech Journalist and IoT enthusiast.

image description

Discover more