Eclipse / SonarQube 集成:如何处理 Checkstyle / PMD / FindBugs

Eclipse / SonarQube Integration: How to handle Checkstyle / PMD / FindBugs

如果我使用 Eclipse 并想使用 SonarQube 作为代码规则的单一来源,我知道我需要使用 SonarLint 插件。但是,SonarLint 只会检查 squid 规则,不会检查 Checkstyle/PMD/Findbugs 规则(尽管它们可以在 SonarQube 中使用)。

我的问题:如果一个项目一直在使用 Checkstyle/PMD/Findbugs 规则集,应该如何处理这些规则,以便 Eclipse 开发人员也能看到它们?

请考虑以下几点:

这是对 SonarLint 开发人员提供解决方案的建议:SonarLint 应该能够从 SonarQube 检索所有违规行为,并将它们显示在 Eclipse 的标准 "Problems" 视图中。这样,SonarLint 不需要在本地执行 Checkstyle/Findbugs/PMD 规则,所以不会有 compatibility/support 问题。同时,Eclipse 开发人员在不离开 Eclipse 的情况下看到了所有 违规行为。

我们是这样解决这个问题的(90% 的解决方案):

  1. 用推荐的 squid 规则替换了所有弃用的 Checkstyle/PMD/FindBugs 规则。 -> 这留下了 80 个 Checkstyle、16 个 PMD 和 0 个 FindBugs 规则(以及 60 个 squid 规则),消除了 FindBugs。
  2. 在 Eclipse 中使用 SonarLint + Checkstyle 插件。对于 Checkstyle,我们从 SonarQube 导出规则 XML,将它们放入我们的版本控制中并配置 Checkstyle 插件以使用它。
  3. 忽略 Eclipse 中的 PMD 并使用直接浏览器访问 SonarQube 以查看代码审查中的 PMD 规则违规。这使我们免于 "only 16 rules".
  4. 的 installing/confguring PMD

该解决方案使我们大约 90% 的规则在 Eclipse 中可见。我们付出的代价:

  • 安装和配置 2 个规则检查插件,而不是 1 个。
  • 每当 SonarQube 更新导致更改时,手动保持 Checkstyle 规则 XML 最新。
  • squid 规则违规仅在打开的 类 和单独的 "SonarLint On-the-fly" 视图中可见。
  • 只有 90% 的规则在 Eclipse 中直接可见。

如果有一天 SonarLint 能够在 Eclipse 的标准 "Problems" 视图中显示 所有 SonarQube 规则违规,涵盖工作区和选择范围,我们将非常高兴。然后我们只需要一个 Eclipse 插件,而 SonarQube 将是唯一的规则存储库。