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 开发人员也能看到它们?
请考虑以下几点:
- 我不想从 SonarQube 手动导出规则并为 Checkstyle/PMD/Findbugs 安装 Eclipse 插件并使用导出的规则配置它们。太麻烦了。
- 我看到一些 Checkstyle/PMD/Findbugs 被标记为已弃用并且有 squid 替代品。没关系。但是我该如何处理所有未弃用的规则?
这是对 SonarLint 开发人员提供解决方案的建议:SonarLint 应该能够从 SonarQube 检索所有违规行为,并将它们显示在 Eclipse 的标准 "Problems" 视图中。这样,SonarLint 不需要在本地执行 Checkstyle/Findbugs/PMD 规则,所以不会有 compatibility/support 问题。同时,Eclipse 开发人员在不离开 Eclipse 的情况下看到了所有 违规行为。
我们是这样解决这个问题的(90% 的解决方案):
- 用推荐的 squid 规则替换了所有弃用的 Checkstyle/PMD/FindBugs 规则。 -> 这留下了 80 个 Checkstyle、16 个 PMD 和 0 个 FindBugs 规则(以及 60 个 squid 规则),消除了 FindBugs。
- 在 Eclipse 中使用 SonarLint + Checkstyle 插件。对于 Checkstyle,我们从 SonarQube 导出规则 XML,将它们放入我们的版本控制中并配置 Checkstyle 插件以使用它。
- 忽略 Eclipse 中的 PMD 并使用直接浏览器访问 SonarQube 以查看代码审查中的 PMD 规则违规。这使我们免于 "only 16 rules".
的 installing/confguring PMD
该解决方案使我们大约 90% 的规则在 Eclipse 中可见。我们付出的代价:
- 安装和配置 2 个规则检查插件,而不是 1 个。
- 每当 SonarQube 更新导致更改时,手动保持 Checkstyle 规则 XML 最新。
- squid 规则违规仅在打开的 类 和单独的 "SonarLint On-the-fly" 视图中可见。
- 只有 90% 的规则在 Eclipse 中直接可见。
如果有一天 SonarLint 能够在 Eclipse 的标准 "Problems" 视图中显示 所有 SonarQube 规则违规,涵盖工作区和选择范围,我们将非常高兴。然后我们只需要一个 Eclipse 插件,而 SonarQube 将是唯一的规则存储库。
如果我使用 Eclipse 并想使用 SonarQube 作为代码规则的单一来源,我知道我需要使用 SonarLint 插件。但是,SonarLint 只会检查 squid 规则,不会检查 Checkstyle/PMD/Findbugs 规则(尽管它们可以在 SonarQube 中使用)。
我的问题:如果一个项目一直在使用 Checkstyle/PMD/Findbugs 规则集,应该如何处理这些规则,以便 Eclipse 开发人员也能看到它们?
请考虑以下几点:
- 我不想从 SonarQube 手动导出规则并为 Checkstyle/PMD/Findbugs 安装 Eclipse 插件并使用导出的规则配置它们。太麻烦了。
- 我看到一些 Checkstyle/PMD/Findbugs 被标记为已弃用并且有 squid 替代品。没关系。但是我该如何处理所有未弃用的规则?
这是对 SonarLint 开发人员提供解决方案的建议:SonarLint 应该能够从 SonarQube 检索所有违规行为,并将它们显示在 Eclipse 的标准 "Problems" 视图中。这样,SonarLint 不需要在本地执行 Checkstyle/Findbugs/PMD 规则,所以不会有 compatibility/support 问题。同时,Eclipse 开发人员在不离开 Eclipse 的情况下看到了所有 违规行为。
我们是这样解决这个问题的(90% 的解决方案):
- 用推荐的 squid 规则替换了所有弃用的 Checkstyle/PMD/FindBugs 规则。 -> 这留下了 80 个 Checkstyle、16 个 PMD 和 0 个 FindBugs 规则(以及 60 个 squid 规则),消除了 FindBugs。
- 在 Eclipse 中使用 SonarLint + Checkstyle 插件。对于 Checkstyle,我们从 SonarQube 导出规则 XML,将它们放入我们的版本控制中并配置 Checkstyle 插件以使用它。
- 忽略 Eclipse 中的 PMD 并使用直接浏览器访问 SonarQube 以查看代码审查中的 PMD 规则违规。这使我们免于 "only 16 rules". 的 installing/confguring PMD
该解决方案使我们大约 90% 的规则在 Eclipse 中可见。我们付出的代价:
- 安装和配置 2 个规则检查插件,而不是 1 个。
- 每当 SonarQube 更新导致更改时,手动保持 Checkstyle 规则 XML 最新。
- squid 规则违规仅在打开的 类 和单独的 "SonarLint On-the-fly" 视图中可见。
- 只有 90% 的规则在 Eclipse 中直接可见。
如果有一天 SonarLint 能够在 Eclipse 的标准 "Problems" 视图中显示 所有 SonarQube 规则违规,涵盖工作区和选择范围,我们将非常高兴。然后我们只需要一个 Eclipse 插件,而 SonarQube 将是唯一的规则存储库。