我想从Checkstyle + PMD + Findbugs迁移到SonarQube。我读过SonarQube取代了所有3个插件(此外还有一些新规则)。但是在我的项目中,我们对这些插件进行了一些自定义配置,例如checkstyle.xml
,它支持自定义检查样式规则(其中至少有一半是自定义修改后的检查样式规则(例如特殊的代码格式,粗鲁的单词过滤器等)。 。
...
<module name="RegexpSingleline">
<property name="format" value="debugger" />
<property name="message" value="Javascript files must not contain 'debugger' statement" />
<property name="fileExtensions" value="js" />
</module>
...
findbug的相同内容
<FindBugsFilter>
...
<Match><Bug pattern="XXE_XMLREADER" /></Match>
...
</FindBugsFilter>
和PMD
...
<rule ref="category/java/errorprone.xml/AvoidBranchingStatementAsLastInLoop" />
<rule ref="category/java/errorprone.xml/AvoidDecimalLiteralsInBigDecimalConstructor" />
...
那么是否有可能分析当前规则,迁移到声纳立方体并添加默认的声纳立方体配置中不存在的新自定义规则?
[主要动机是在一个服务器上运行一个声纳多维数据集实例,所有开发人员都将在IDEA中安装Sonar插件,该插件将连接到该声纳多维数据集实例(例如从Jenkins进行的一些自动构建等),因此所有根据当前PMD,Checkstyle和Findbugs中设置的规则使用相同的规则(在jenkins构建中,这3个检查分别运行,理想的解决方案是仅运行声纳检查)
根据我的经验,关于仅使用SonarQube和SonarLint,仅具有checkstyle,PMD和Findbugs并同时具有两者,这是有起有落的。
SonarQube本身的好处是,它具有易于理解的良好UI,可以轻松地将其集成到构建管道和PR工具中。
使用SonarLint,您还可以很好地集成到IDE中。但是我认为它不适合git hooks或快速本地验证。我们可能会使用SonarLint分析某些类,而不是整个项目。因此,我们使用CI / CD。
所以这些就是SonarQube SonarLint的好处。最大的一点是,您还可以在Sonarqube中使用Checkstyle PMD和Findbugs。 SonarLint不支持这些工具,但是您可以使用Sonarqube显示这些工具的错误。有专门的插件可以维护,并且还会向您显示其他工具的错误。缺点是SonarLint不支持此插件。
Sonarqube插件有时也接受来自外部分析的报告。例如。 Findbugs,您可以使用findbugs分析代码,只需将报告提供给sonarQube。
但是一般来说,可以迁移这些规则。对于checkstyle,您可以导入checkstyle.xml-我不确定是否有findbug和PMD,也许您需要手动配置它们。
无论如何,我会仔细评估什么对您的构建很重要,什么不重要。通过gradle进行checkstyle检查确实非常快,因为声纳扫描仪将在低谷运行,并且仅在最后报告。如果您的构建资源有限,有时这可能至关重要。
我希望这种见识至少在某种程度上有所帮助,尽管它不能100%覆盖您的问题。