Ale*_*rju 33 java static-analysis
我熟悉一些可用于Java的免费静态分析工具,例如FindBugs和PMD.我想知道的是Klocwork和Coverity等商业产品如何与这些产品相抗衡.他们的优点和缺点是什么?
小智 18
我们使用一套开源和商业静态分析工具.不同的工具会发现不同类型的错误,有些会针对较低的误报率进行调整,但可能会遗漏一些实际问题.
根据我的经验,Findbugs可以很好地发现真正的问题,特别是如果你专注于团队建议的正确性错误.最近,Findbugs的开发人员也添加了一些基本的安全漏洞检查.Coverity具有较低的误报率,特别是如果您不打开实验检查器,Coverity Prevent包含一个良好的趋势/聚类分析跟踪数据库.我不相信他们的线程检查器(静态或动态)工作 - 至少他们没有找到任何有趣的东西给我们.Klocwork Developer for Java返回更高的误报,但我们发现他们对这些工具进行了最强大的安全检查.因此,这取决于您的优先级是质量检查(Findbugs,Coverity)还是安全漏洞分析(Klocwork或Fortify).
NIST最近进行的一项名为"SATE:静态分析工具博览会"的项目审查了各种不同的工具及其基本方法. https://samate.nist.gov/index.php/SATE.html 以及此项目的其他参考资料,例如OWASP.一般的发现是不同的工具有不同的优点和缺点,所以如果你想做一个彻底的工作,使用不止一个.
您肯定会在商业静态分析工具中找到的一个功能(并且您在免费软件分析工具中不容易找到,至少在 2008 年,在 OP 时)是
报告: 随时间推移测量软件质量趋势
正如这个关于代码度量的问题所解释的,任何静态代码分析本身并不总是有意义的,因为你可以:
您需要能够进行一些分类,并且需要检查特定缺陷是否随着时间的推移越来越少发生,以帮助您确定要修复的优先级。
在具有数千个类的遗留项目中尤其如此:在没有充分理由的情况下,您不会像那样修复许多文件的缺陷。这个原因可以从免费软件工具中找不到的良好报告和趋势分析中推断出来。
更新:从2012年(4年后),声纳(现在在2018年命名为“ SonarQube ”)的‘历史信息’(又名‘时间机器’)在其4.x和5.x系列。
请注意,这些项目仪表板已在SonarQube 6.1(2016 年 9 月)中删除:请参阅此线程。
这些仪表板需要通过自定义页面手动重新创建。
SonarQube 6.5使用 Activity 页面恢复了一些仪表板,该页面获取(几个预定义和一个可定制)图表来显示项目的演变。
这是商业分析工具的列表:http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java_2
coverity 有几个工具:
http://www.coverity.com/html/coverity-readiness-manager-java.html:这应该与 findbugs 和 PMD 相当,但具有更好的演示效果
预防:http://www.coverity.com/html/prevent-for-java.html:低假阳性。
线程分析器:http://www.coverity.com/html/coverity-thread-analyzer-java.html:这是大多数开源工具中所缺少的。
归档时间: |
|
查看次数: |
19363 次 |
最近记录: |