我们正在从头开始研究一个Web项目,并且正在研究以下静态代码分析工具。
该项目建立在Maven之上。我没有使用多种工具来实现这一目的,而是在寻找一种灵活的解决方案,并且遇到了SonarQube。
我们能否通过SonarQube实现Checkstyle,PMD和Findbugs的结果?
答案 0 :(得分:91)
Sonar将默认为Java项目运行CheckStyle,FindBugs和PMD,以及其他一些“插件”,例如Cobertura(代码覆盖)。然而,主要的附加值是它将历史记录存储在数据库中。然后,您可以看到趋势。您是否正在改进代码库,或者您正在做相反的事情?只有带记忆功能的工具才能告诉你。
您应该在CI系统中运行Sonar,以便即使需要一些时间来执行(例如CPD - 复制粘贴检测器)也可以运行。你会有你的历史。例如,使用Eclipse插件,您可以更快地检测到违规行为 - 这是非常好的 - 但如果开始耗时太长,或者运行较少的“高质量插件”,您将很少经常运行它“(例如跳过CPD或跳过代码覆盖率分析)。而且你没有历史。
此外,Sonar会生成视觉报告,“仪表板”样式。这使得它很容易掌握。借助詹金斯的Sonar,您将能够向开发人员和管理人员展示过去几周和几个月内对代码库质量所做工作的影响。
答案 1 :(得分:43)
Sonar使用这3个工具作为插件,并通过显示来自这些工具的图表等来聚合来自所有三个数据的数据。所以它们是声纳的补充。
答案 2 :(得分:29)
是和否。除了其他答案。
SonarQube目前正在弃用PMD,Checkstyle和Findbugs,并使用他们自己的技术来分析Java代码(称为SonarJava)。他们这样做,因为他们不想花时间修复,升级(或等待)那些库(例如Java 8),例如使用过时的库。
他们还为您的个人IDE获得了一组名为SonarLint的新插件。
答案 3 :(得分:7)
声纳很棒,但是如果你想单独使用上面提到的工具并且仍然有很好的图形,你可以使用Analysis Collector Plugin作为Jenkins CI构建的一部分。这方面的一个小优点是,您可以将PMD / Findbugs / Checkstyle配置签入SCM并将其集成到Maven构建中,而不是依赖于单独的Sonar服务器。
答案 4 :(得分:5)
声纳不仅仅是这些工具。 最大的好处是gui,它可以让你轻松配置任何东西。 它提供的统计数据非常详细(代码行等)。 它甚至为测试覆盖等提供了很好的支持:)
在这里你可以好好看看: http://nemo.sonarsource.org/
答案 5 :(得分:3)
除了声纳之外,我仍然会使用这些工具,因为当有人违反规则时,他们可能会失败maven构建。声纳更具回顾性。
答案 6 :(得分:3)
......几年后:不,它不是! SonarQube假设能够使用自己的分析仪覆盖所有规则,但仍然存在SonarQube未涵盖的PMD或CheckStyle规则。参见例如:PMD ReturnFromFinallyBlock。
答案 7 :(得分:2)
至少从SonarQube 6.3+开始,似乎Findbugs(目前)不再支持插件。 Sonarsource正致力于用自己的Java插件替换Findbugs规则。
他们甚至在这里列出了每条规则的替换状态: http://dist.sonarsource.com/reports/coverage/findbugs.html