是否为Checkstyle,PMD,FindBugs更换SonarQube?

Joh*_*nny 101 findbugs checkstyle pmd sonarqube

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

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

该项目建立在Maven之上.我没有使用多种工具来实现这一目的,而是在寻找一个灵活的解决方案并且遇到了SonarQube.

我们是否可以通过SonarQube实现Checkstyle,PMD和Findbugs的结果?

Oli*_*ent 95

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

您应该在CI系统中运行Sonar,以便即使需要一些时间来执行(例如CPD - 复制粘贴检测器)也可以运行.你会有你的历史.例如,使用Eclipse插件,您可以更快地检测到违规行为 - 这很好 - 但如果开始耗时太长,或者运行较少的"高质量插件"(例如跳过CPD或跳过代码覆盖率分析).你不会有历史.

此外,Sonar还生成视觉报告"仪表板"样式.这使得它很容易掌握.借助Jenkins中的Sonar,您将能够向开发人员和管理人员展示过去几周和几个月内对代码库质量所做工作的影响.

  • 建议的+1:基于IDE /基于CI的Sonar运行 (3认同)

MeB*_*Guy 47

Sonar使用这3个工具作为插件,并通过显示这些工具中的图表等来汇总来自所有三个数据的数据.所以他们是声纳的补充.

  • 虽然在版本3.x之前这是正确的,但Sonar 4.x正在逐渐停止使用至少PMD和CheckStyle,转而使用自己的内部Squid分析器,因为它使他们有更大的自由来扩展规则集并修复已经存在的问题.困扰这些项目一段时间.例如,他们已经弃用了超过150条PMD规则,并最终将其完全删除. (26认同)
  • 关于他们弃用这些规则的原因的有趣帖子:http://www.sonarqube.org/already-158-checkstyle-and-pmd-rules-deprecated-by-sonarqube-java-rules/。 (2认同)

kei*_*iki 31

是的,不是.除了其他答案.

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

他们还为您的个人IDE获得了一组名为SonarLint的新插件.


art*_*tol 7

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


oer*_*ers 5

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

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


dea*_*mon 5

... 几年后:不,不是!SonarQube 假设能够用自己的分析器覆盖所有规则,但仍有来自 PMD 或 CheckStyle 的规则没有被 SonarQube 覆盖。参见示例:PMD ReturnFromFinallyBlock。