你有没有比较静态分析工具Klocwork和Findbugs?
我们使用Klocwork作为静态分析工具。你有没有比较静态分析工具Klocwork和Findbugs?
Klocwork是一种商业工具,具有许多优点,但也具有误报等局限性。
我不知道谁曾将Klocwork与其他开源工具(如Findbugs)相比较。
通常,商业工具比开源工具更可靠。
但我认为Klocwork在特定业务领域如android中也有一些可靠的问题。
你可以说Klocwork优于其他开源工具,特别是Findbugs在误报和漏报方面?
几年前,我已经对商业和开源静态代码分析工具(SCAT)进行了比较。 Klocwork就是其中之一。长话短说,结果是在Java环境下,商业工具没有提供必要的(附加)价值来证明其价格。在发现的错误数量方面,findbugs比任何这些工具都要好得多。只有覆盖率发现了一些其他工具没有发现并且具有最低FPR的错误。另一方面,封面没有检测到findbugs找到的许多错误 - 所以对我们来说,所有的工具都没有证明涉及的金钱是正确的。如果配置正确,findbugs还会提供非常低的FPR。在更新的版本中,可以将findbugs集成到他们的解决方案中。 Mhhmmm为什么他们这样做? :-)
但是,当使用其他编程语言或跨编程语言扫描时(例如,您的代码库包含其他编程语言(如C,C++,C#...))或者您需要这些工具提供的某些附加功能时 - 那么可能值得寻找转化为商业工具。但是你可以自己决定,因为每个解决方案都可以被测试。去他们的网页下载/申请一个试用版,并尝试为自己(也许在此期间改变了?)。
我检查了以下工具:
商业:
开放源代码:
- Findbugs
- PMD
- Checkstyle(虽然不是一个真正的SCAT而更像是一种风格检查器)
那么到底为什么我们什么办法呢?我们安装了免费的sonar server,它结合了findbugs,pmd,checkstyle,cobertura等诸多工具。有了这个,我们得到了一个免费的解决方案,在许多方面比商业工具更好。如果我需要走商业路线,我可能会仔细研究一下掩护(而不要再看CAST)。
[更新] 关于你提到的有关性能的问题 - FindBugs的是能够扫描代码库庞大没有问题(如果您遇到问题,那么它张贴在findbugs mailing list,他们会帮助你)。我记得当时findbugs也是最快捷的工具之一。例如Coverity需要近2小时完成,而findbugs则在10分钟内完成。这些数字之间的其他工具。
关于扫描C和C++代码,您可以查看Splint和cppcheck。还有一些其他helpful线程讨论该主题。但如前所述,findbugs仅适用于java,并且您希望检测编程语言间的问题,因此商业工具可能具有优势。 最后,findbugs是免费的 - 只需在代码库上运行它,看看自己会发生什么 - 您的项目只能从中受益!然后修复发现的错误,然后使用一些商业工具进行试用 - 并根据他们发现的错误数量和您将支付的价格,绘制您自己的结论。举一个例子:其中一个工具花费'代码行数'/除以10(单位为美元)。但是,这可能是因为你的情况你会得到一个折扣;-)
[更新II] 发现一个有趣的master thesis讨论这个话题。主要部分是关于findbugs,但它也提到klockwork和覆盖。
非常感谢。你的回答非常有帮助。我还有一个问题。其实我必须对包含java,c和C++的android完整源代码进行静态分析。据你介绍,Findbugs在涵盖其他语言方面有限制。关于局限性,我还想知道Findbugs是否可以覆盖像android AOSP(java:1000万LOC,c/C++:500万LOC)这样的大型源代码,而不仅仅是一个android应用。 – 500004dolkong
您的回答和建议非常有用,对我很有帮助。非常感谢。^^ – 500004dolkong
你的回答是一个很好的参考点。根据你的经验,这些套房的假阳性率与假阴性率有什么区别。谢谢。 –
投票结束太宽泛。 –