SonarQube是否可以代替Checkstyle,PMD,FindBugs?


105

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

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

该项目基于Maven构建。我没有使用多个工具来实现此目的,而是在寻找一个灵活的解决方案,并遇到了SonarQube。

确实可以通过SonarQube获得Checkstyle,PMD和Findbugs的结果吗?

Answers:


99

Sonar将为Java项目默认运行CheckStyle,FindBugs和PMD,以及其他一些“插件”,例如Cobertura(代码覆盖率)。但是,主要的附加值是将历史记录存储在数据库中。然后您可以看到趋势。您是在改进代码库还是在做相反的事情?只有带有内存的工具才能告诉您。

您应该在CI系统中运行Sonar,以便即使花费一些时间才能执行的事情(例如CPD –复制粘贴检测器)也可以运行。您将拥有自己的历史。例如,使用Eclipse插件,您会更快地检测到违规行为(这很棒),但是如果启动时间太长,或者您运行的“优质插件”(例如跳过CPD或跳过代码覆盖率分析)。而且您将没有历史。

此外,Sonar还会生成可视化报告,即“仪表盘”样式。这使得它很容易掌握。使用Jenkins中的Sonar,您将能够向开发人员和您的管理层展示过去几周和几个月来执行的工作对代码库质量的影响。


我同意在棕地项目中的这些好处。具有零缺陷策略的未开发项目不需要该内存。只是始终保持代码库100%干净。
Christian Hujer

48

Sonar使用这三个工具作为插件,并通过显示这些工具的图形等汇总来自这三个工具的数据,从而提供附加值。因此它们是声纳的补充。


1
yup声纳使用所有这三个
frappuccino

27
虽然在3.x版之前是这样,但Sonar 4.x不再使用至少PMD和CheckStyle来支持其内部的Squid分析器,因为它为他们提供了更大的自由来扩展规则集并解决已存在的问题。使这些项目困扰了一段时间。例如,他们已经弃用了150多个PMD规则,并将最终将其完全删除。
haylem 2014年

1
关于它们弃用这些规则的原因的有趣文章:sonarqube.org/…
Jhack

33

是的,没有。除了其他答案。

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

他们还为您的个人IDE提供了一套名为SonarLint的新插件。


8

Sonar很棒,但是如果您想单独使用提到的工具并且仍然有漂亮的图形,则可以将Analysis Collector插件用作Jenkins CI构建的一部分。这样做的一个小好处是,您可以将PMD / Findbugs / Checkstyle配置检入SCM,并将其集成到Maven构建中,而不必依赖单独的Sonar服务器。


5

Sonar不仅仅是这些工具。gui的最大好处是,它使您可以轻松配置任何内容。它提供的统计信息非常详细(代码行等)。它甚至为测试覆盖率等提供了强大的支持:)

在这里您可以看一下:http : //nemo.sonarsource.org/


3

除了声纳之外,我仍然会使用这些工具,因为当有人违反规则时,它们可能会使Maven构建失败。声纳在哪里更具有追溯力。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.