12

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

Klocwork 是一种商业工具,具有许多优点,但也有误报等限制。

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

通常,众所周知,商业工具比开源工具更可靠。

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

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

4

1 回答 1

22

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

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

我检查了以下工具:

商业的:

  1. 覆盖率
  2. 克洛克作品
  3. 副软件
  4. 投掷

开源:

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

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

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

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

于 2013-08-20T08:11:54.963 回答