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

Jör*_*örn 6 eclipse checkstyle pmd sonarqube sonarlint

如果我使用Eclipse并希望将SonarQube用作代码规则的单一来源,那么我了解我需要使用SonarLint插件。但是,SonarLint仅检查鱿鱼规则,不检查Checkstyle / PMD / Findbugs规则(尽管可以在SonarQube中使用它们)。

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

请考虑以下几点:

  • 我不想从SonarQube手动导出规则,并为Checkstyle / PMD / Findbugs安装Eclipse插件,并使用导出的规则配置它们。太麻烦了
  • 我看到一些Checkstyle / PMD / Findbugs被标记为已弃用,并且有鱿鱼替代品。没关系。但是,对于所有不推荐使用的规则,我该怎么办?

Jör*_*örn 2

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

  1. 用推荐的鱿鱼规则替换了所有已弃用的 Checkstyle/PMD/FindBugs 规则。-> 这留下了 80 个 Checkstyle、16 个 PMD 和 0 个 FindBugs 规则(以及 60 个鱿鱼规则),从而消除了 FindBugs。
  2. 在 Eclipse 中使用 SonarLint + Checkstyle 插件。对于 Checkstyle,我们从 SonarQube 导出规则 XML,将它们放入版本控制中并配置 Checkstyle 插件以使用它。
  3. 忽略 Eclipse 中的 PMD,并使用浏览器直接访问 SonarQube 来查看代码审查中的 PMD 规则违规情况。这使我们无需为“仅 16 条规则”安装/配置 PMD。

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

  • 安装并配置 2 个用于规则检查的插件,而不是 1 个。
  • 每当 SonarQube 更新导致更改时,手动使 Checkstyle 规则 XML 保持最新。
  • 鱿鱼规则违规仅对开放类可见,并且在单独的“SonarLint On-the-fly”视图中。
  • 只有 90% 的规则可以直接在 Eclipse 中可见。

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