你有没有比较过静态分析工具Klocwork和Findbugs?

500*_*ong 11 code-analysis static-analysis findbugs klocwork

我们使用Klocwork作为静态分析工具.

Klocwork是一种商业工具,具有许多优点,但也存在假阳性等局限性.

我想知道谁曾将Klocwork与Findbugs等其他开源工具进行比较.

通常,已知商业工具比开源工具更可靠.

但我认为Klocwork在特定业务领域也有一些可靠的问题,比如android.

你能否说Klocwork优于其他开源工具,尤其是Findbugs在误报和漏报方面?

Lon*_*zak 22

几年前,我对商业和开源静态代码分析工具(SCAT)进行了比较.Klocwork就是其中之一.长话短说,结果是在java环境中,商业工具没有提供证明其价格所需的(附加)价值.在发现的bug数量上,findbugs比任何这些工具都要好得多.只有覆盖率发现了一些其他工具没有发现并具有最低FPR的错误.另一方面,封面并没有发现很多臭虫找不到它们 - 所以对我们来说,所有的工具并没有证明所涉及的金钱是合理的.如果配置正确,findbugs也提供非常低的FPR.在最新版本中,封面包括将findbugs集成到其解决方案中的可能性.嗯,为什么他们这样做?:-)

然而,有些情况例如在使用其他编程语言或编程间语言扫描时(例如,您的代码库包含其他编程语言(如C,C++,C#...))或者您需要这些工具提供的一些附加功能 - 然后它可能值得研究商业工具.但是你可以自己决定,因为每个解决方案都可以进行测试.转到他们的网页下载/请求试用并亲自尝试(也许在此期间事情发生了变化?).

我检查了以下工具:

商业:

  1. Coverity公司
  2. Klocwork的
  3. Parasoft公司

开源:

那么到底我们做了什么?我们安装了免费的声纳服务器,它结合了许多工具,如findbugs,pmd,checkstyle,cobertura等.有了这个,我们得到了一个免费的解决方案,它在许多方面比现有的商业工具更好.如果我需要走商业路线,我可能会仔细研究覆盖性(并且再也不会看CAST了).

[更新] 关于你的性能问题 - findbugs能够毫无问题地扫描巨大的代码库(如果你遇到问题,那么将它发布在findbugs邮件列表上,他们会帮助你).我记得当时findbugs也是最快的工具之一.例如,Coverity需要将近2小时才能完成,而findbugs则需要不到10分钟.这些数字之间的其他工具.

关于C和C++代码的扫描,您可以查看Splintcppcheck.还有一些其他有用的线程讨论该主题.但正如前面提到的那样,findbugs仅适用于java,并且您希望检测编程间语言问题,商业工具可能具有优势.所以最后,findbugs是免费的 - 只需在您的代码库上运行它,看看自己会发生什么 - 您的项目只能从中受益!然后修复发现的错误,然后使用一些商业工具进行试用 - 根据他们找到的错误数量和您将支付的价格,得出您自己的结论.举个例子:其中一个工具是"代码行"/除以10(以美元计).但在你的情况下,你可能会获得折扣;-)

[更新II] 发现了一个讨论这个主题的有趣的硕士论文.主要部分是关于findbugs,但它也提到了klockwork和coverity.