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

时间:2013-08-19 01:08:20

标签: code-analysis static-analysis findbugs klocwork

我们正在使用Klocwork作为静态分析工具。

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

我想知道谁曾将Klocwork与其他开源工具(如Findbugs)进行比较。

通常,商业工具比开源工具更可靠。

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

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

1 个答案:

答案 0 :(得分:21)

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

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

我检查了以下工具:

商业:

  1. Coverity
  2. Klocwork
  3. Parasoft
  4. Cast
  5. 开放源代码:

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

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

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

    [更新II] 找到一个有趣的master thesis讨论这个主题。主要部分是关于findbugs,但它也提到了klockwork和coverity。