SonarQube是否替代Checkstyle,PMD,FindBugs?

我们正在从头开始一个Web项目,正在研究以下静态代码分析工具。

  • 公约(Checkstyle)
  • 不良做法(PMD)
  • 潜在的错误(FindBugs)

该项目是build立在Maven上的。 我没有使用多种工具,而是在寻找一种灵活的解决scheme,并发现SonarQube。

SonarQube是否可以通过Checkstyle,PMD和Findbugs获得结果?

Sonar将运行CheckStyle,FindBugs和PMD,以及一些其他“插件”,例如Cobertura(代码覆盖),默认情况下用于Java项目。 然而,主要的附加价值在于它将历史存储在数据库中。 你可以看到趋势 。 你在改进代码基础还是在做相反的事情? 只有内存工具可以告诉你。

您应该在CI系统中运行Sonar,以便即使需要一些时间执行的事情(例如CPD – 复制粘贴检测器)也可以运行。 你会有你的历史。 例如,对于Eclipse插件,您可以更快地发现违规行为 – 这很好 – 但是,如果开始时间过长,或者运行的“高质量插件”(例如跳过CPD或跳过代码覆盖率分析)。 你将不会有历史。

此外,Sonar还生成可视化报告“Dashboard”风格。 这使得它很容易掌握。 在Jenkins的Sonar中,您将能够向开发人员和pipe理人员展示在过去几周和几个月中对代码库质量所做的工作的影响。

声纳使用这三种工具作为插件,并通过显示来自这些工具的graphics等来汇总来自所有三个数据的附加值。 所以它们是声纳的补充。

是和不是。 除了其他的答案。

SonarQube目前正在使用PMD,Checkstyle和Findbugs,并使用他们自己的技术来分析Java代码(称为SonarJava )。 他们这样做,是因为他们不想花费时间修复,升级(或等待)那些库(例如Java 8),例如使用过时的库。

他们还为您的个人IDE获得了一套新的插件SonarLint 。

声纳不仅仅是这些工具。 最大的好处是gui,它可以让你轻松configuration任何东西。 它提供的统计数据非常详细(代码行等)。 它甚至为testing覆盖率等提供了很好的支持:)

在这里你可以看看: http : //nemo.sonarsource.org/

Sonar很棒,但是如果你想单独使用上述工具,并且仍然有很好的图表,你可以使用Analysis Collector插件作为Jenkins CI构build的一部分。 这样做的一个好处就是你可以在你的SCM中检查你的PMD / Findbugs / Checkstyleconfiguration,并将它集成到你的Maven版本中,而不是依靠单独的Sonar服务器。

除了声纳之外,我还会使用这些工具,因为当有人违反规则时他们可能会失败。 声纳在哪里更具回顾性。

…几年后:不,不是! SonarQube假设能够用自己的分析仪覆盖所有的规则,但是仍然有来自SonarQube未覆盖的PMD或CheckStyle的规则。 看例如:PMD ReturnFromFinallyBlock。

至less从SonarQube 6.3+开始,似乎Findbugs(现在)不再支持插件了。 Sonarsource正在用自己的Java插件替代Findbugs-rules。

他们甚至在这里列出了每个规则的replace状态: http : //dist.sonarsource.com/reports/coverage/findbugs.html