我熟悉一些免费的静态分析工具,比如FindBugs和PMD。我想知道的是像Klocwork和Coverity这样的商业产品是如何与这些产品相抗衡的。他们的长处和短处是什么?
发布于 2008-10-31 22:06:37
我们使用了一套开源的商业静态分析工具。不同的工具会发现不同种类的bug,其中一些是为了降低误报率而进行调整的,代价是可能会遗漏一些真正的问题。
在我的经验中,Findbugs在发现真正的问题方面做得很好,特别是如果你像他们的团队建议的那样专注于正确性错误。最近,Findbugs的开发人员也添加了一些基本的安全漏洞检查。Coverity的假阳性率很低,特别是如果你不打开他们的实验检查器,并且Coverity Prevent包括一个很好的趋势/聚类分析跟踪数据库。我还不相信他们的线程检查器(静态或动态)能工作--至少他们没有发现我们感兴趣的东西。Klocwork Developer for Java返回了更高的误报,但我们发现它们在这些工具中具有最强的安全性检查。因此,这取决于您的优先级是质量检查(Findbugs,Coverity)还是安全漏洞分析(Klocwork,或Fortify)。我们的一些开发人员还使用PMD来支持源代码审查,因为它有助于一般的代码清理。
最近与NIST合作进行的一个名为"SATE: Static Analysis Tool Exposition“的项目回顾了各种不同的工具及其底层方法。https://samate.nist.gov/index.php/SATE.html和其他对此项目的引用,例如在OWASP.一般的发现是,不同的工具有不同的优点和缺点,所以如果你想做一项彻底的工作,请使用多个工具。
发布于 2008-10-16 08:04:35
我建议您尝试SONAR,这是一个开源软件质量管理工具,致力于持续分析和测量源代码质量。这个软件从代码分析工具中获取结果,合并这些结果,并为您提供一个用户友好的界面。
发布于 2008-10-16 07:36:33
您肯定会在商业静态分析工具中找到的一个特性(而在免费软件分析工具中很难找到,至少在2008年运行时是这样)
Reporting:随时间推移测量软件质量趋势
正如本question about code metrics中所解释的,任何静态代码分析本身并不总是有意义的,因为您可能会:
您需要能够进行一些分类,并且您需要检查特定的缺陷是否随着时间的推移越来越少地发生,以便帮助您确定要修复的优先级。
这在有数千个类的遗留项目中尤其如此:如果没有充分的理由,你不会像这样修复许多文件上的缺陷。这一原因可以从良好的报告和趋势分析中推断出来,这是免费软件工具找不到的。
更新:从2012年(4年后)开始,Sonar (现在在2018年命名为"SonarQube") "Historical Information" (aka "Time Machine") in its 4.x and 5.x series。
请注意SonarQube 6.1中的这些project dashboards were dropped (9月2016):参见this thread。
这些仪表板将需要重新创建手动through a custom page。
SonarQube 6.5使用活动页面恢复了一些仪表板,该页面获得(多个预定义的和一个可自定义的)图表,以显示项目的演变。
https://stackoverflow.com/questions/207652
复制相似问题