4

我一直在审查静态分析工具,最近遇到了 Atlassian Clover 和 SonarQube。从服务器的角度来看,这两种产品看起来非常相似并且几乎相同,但我无法在网上找到它们的良好比较。

我也一直在审查他们的 IntelliJ 插件,这就是我看到两者之间巨大差异的地方。Clover 的 IDE 集成令人惊叹,它指出了单元测试未涵盖的确切代码行。但是,SonarQube服务器具有此功能,但我不确定 Clover 的 300 美元/人成本是否值得这种 IDE 便利。

Sonar 的插件似乎只是指出了 IDE 中的代码问题,这很好,但 IntelliJ 已经为此提供了功能。另外,Clover 在他们的插件中是否缺少这个,或者我只是因为我还没有将 Clover 插件放在服务器前面而没有看到它?

最后,我还看到 Sonar 可以使用 Clover 生成的报告。有人对这个有经验么?SonarQube 服务器是否充分利用这些报告替代了 Clover 服务器?如果没有,Sonar 缺少什么?

供参考:http ://docs.codehaus.org/display/SONAR/Clover+Plugin

一些背景:正在分析的产品是一个使用 Maven 构建的 Java Web 项目。这两种工具似乎都有适当的 Maven 集成。

4

1 回答 1

10

免责声明:我是 Atlassian 的 Clover 开发人员。

但我当然会尽量做到客观。

首先让我强调一下 Clover 和 Sonar 之间的一个区别:

  • Clover 主要是一个代码覆盖工具。它跟踪总覆盖率和每次测试覆盖率。除此之外,它还有一些代码指标,但它不是典型的静态代码分析工具,如 Checkstyle、FindBugs 或 PMD。

  • Sonar(在我看来)主要是一个数据聚合工具,它可以从各种工具中收集各种数据(如代码覆盖率、静态分析结果、代码指标)并呈现在一个地方。

这两个工具的相似之处在于它们都可以创建丰富的报告。

说了这么多,我来回答你的问题。

Clover 的 IDE 集成令人惊叹,它指出了单元测试未涵盖的确切代码行 [...] 但我不确定 Clover 的 300 美元/人成本是否值得这种 IDE 便利性。

您必须自己回答:-) 有几件事值得考虑:

  • 您的开发人员如何运行单元测试 - 他们是否在提交之前在 IDE 中运行它们?您有“绿色建筑”政策吗?如果两个答案都是肯定的,那么在 IDEA 中使用 Clover 可能是值得的。

  • 在 IDE 中执行单元测试需要多少时间?它们多久启动一次?如果它们需要很长时间并且经常启动,那么在 IDEA 中使用 Clover 的测试优化功能可能会很有趣。

  • 您是否将测试拆分为在 CI 服务器上运行的多个构建计划?在特定环境配置中运行?在这种情况下,服务器报告可能比 IDE 更有价值

  • 您的开发人员更喜欢直接在他们的 IDE 中查看代码覆盖率,还是更愿意在浏览器中单击 HTML 报告?

  • 由于在 IDE 中具有覆盖突出显示的源代码,您是否希望看到团队生产力的任何提升?多少钱?是“节省的时间*薪水>三叶草许可证价格”吗?

Sonar 的插件似乎只是指出了 IDE 中的代码问题,这很好,但 IntelliJ 已经为此提供了功能。另外,Clover 的插件 [...] 中是否缺少此功能?

Clover 不执行静态分析,因此不会显示代码错误。它的 HTML 报告和 IDE 插件(IDEA/Eclipse)都没有。

最后,我还看到 Sonar 可以使用 Clover 生成的报告。[...] SonarQube 服务器是否充分利用这些报告替代了 Clover 服务器?如果没有,Sonar 缺少什么?

我不是 100% 确定(如果我错了,请纠正我),但我认为 Sonar Clover 插件会解析 Clover 的 XML 报告文件(至少 Jenkins、Hudson 和 Bamboo 的 Clover 插件以这种方式工作)以获得一些要显示的数字. 这意味着您不会在 Sonar 中看到Clover 的 HTML 报告,其中包含详细的源代码行着色、每次测试覆盖率、标签云等。

干杯马雷克

于 2014-07-08T13:10:46.193 回答