商业Java静态分析工具与免费工具相比如何?[已关闭]

我熟悉一些可用于Java的免费静态分析工具,例如FindBugs和PMD。我想知道的是Klocwork和Coverity等商业产品如何与这些产品相抗衡。他们的优势和劣势是什么?


答案 1

我们使用一套开源和商业静态分析工具。不同的工具会发现不同类型的错误,有些工具会针对较低的误报率进行调整,但代价是可能会遗漏一些真正的问题。

根据我的经验,Findbugs在发现实际问题方面做得很好,特别是如果你像他们的团队建议的那样专注于正确性错误。最近,Findbugs的开发人员也添加了一些基本的安全漏洞检查。Coverity的误报率很低,特别是如果您不打开他们的实验检查器,而Coverity Prevent包括一个用于趋势/聚类分析的良好跟踪数据库。我还不相信他们的线程检查器(静态或动态)有效 - 至少他们没有发现任何有趣的东西。Klocwork Developer for Java 返回更高的误报,但我们发现他们在这些工具中具有最强的安全检查。因此,这取决于您的优先级是质量检查(Findbugs,Coverity)还是安全漏洞分析(Klocwork或Fortify)。我们的一些开发人员还使用PMD来支持源代码审查,因为它有助于常规代码清理。

最近与NIST合作开展的一个名为“SATE:静态分析工具博览会”的项目审查了各种不同的工具及其基础方法。https://samate.nist.gov/index.php/SATE.html 和该项目的其他引用,例如在OWASP。一般发现,不同的工具有不同的优点和缺点,因此,如果您想彻底完成工作,请使用多个工具。


答案 2

我建议您尝试使用SONAR一种开源软件质量管理工具,专门用于持续分析和测量源代码质量。这个软从代码分析工具中获取结果,整合结果,并允许您访问用户友好的界面。


推荐