Answers:
Sonar将为Java项目默认运行CheckStyle,FindBugs和PMD,以及其他一些“插件”,例如Cobertura(代码覆盖率)。但是,主要的附加值是将历史记录存储在数据库中。然后您可以看到趋势。您是在改进代码库还是在做相反的事情?只有带有内存的工具才能告诉您。
您应该在CI系统中运行Sonar,以便即使花费一些时间才能执行的事情(例如CPD –复制粘贴检测器)也可以运行。您将拥有自己的历史。例如,使用Eclipse插件,您会更快地检测到违规行为(这很棒),但是如果启动时间太长,或者您运行的“优质插件”(例如跳过CPD或跳过代码覆盖率分析)。而且您将没有历史。
此外,Sonar还会生成可视化报告,即“仪表盘”样式。这使得它很容易掌握。使用Jenkins中的Sonar,您将能够向开发人员和您的管理层展示过去几周和几个月来执行的工作对代码库质量的影响。
Sonar使用这三个工具作为插件,并通过显示这些工具的图形等汇总来自这三个工具的数据,从而提供附加值。因此它们是声纳的补充。
Sonar很棒,但是如果您想单独使用提到的工具并且仍然有漂亮的图形,则可以将Analysis Collector插件用作Jenkins CI构建的一部分。这样做的一个小好处是,您可以将PMD / Findbugs / Checkstyle配置检入SCM,并将其集成到Maven构建中,而不必依赖单独的Sonar服务器。
Sonar不仅仅是这些工具。gui的最大好处是,它使您可以轻松配置任何内容。它提供的统计信息非常详细(代码行等)。它甚至为测试覆盖率等提供了强大的支持:)
在这里您可以看一下:http : //nemo.sonarsource.org/
……几年后:不,不是!SonarQube假定能够使用自己的分析器来涵盖所有规则,但是SonarQube仍然没有PMD或CheckStyle的规则。例如,请参见:PMD ReturnFromFinallyBlock。
至少自SonarQube 6.3+起,似乎(目前)不再支持Findbugs作为插件。Sonarsource正在努力用自己的Java插件替换Findbugs-rules。
他们甚至在此处列出了每个规则的替换状态:http : //dist.sonarsource.com/reports/coverage/findbugs.html