我们正在使用Klocwork作为静态分析工具。
Klocwork是一种商业工具,有许多优点,但也有一些限制,如假阳性。
我想知道谁曾将Klocwork与其他开源工具(如Findbug)进行比较。
一般来说,商业工具比开源工具更可靠。
但是我认为Klocwork在特定的业务领域也有一些可靠的问题,比如android。
你能说Klocwork优于其他开源工具吗,特别是在假阳性和假阴性方面的Findbug?
发布于 2013-08-20 08:11:54
几年前,我对商业和开源静态代码分析工具(SCAT)进行了比较。Klocwork就是其中之一。长话短说,结果是在java环境中,商业工具没有提供合理价格所需的(额外)价值。在发现的bug数量中,findbug比任何这些工具都要好得多。只有coverity发现了一些其他工具都没有发现并且FPR最低的bug。另一方面,coverity没有检测到很多错误,发现了bugs -所以对我们来说,所有的工具都没有证明所涉及的钱是合理的。如果配置正确,findbug还提供了非常低的FPR。在最近的版本中,coverity包含了将findbug集成到解决方案中的可能性。嗯,那他们为什么要这么做?
然而,也有一些场景,例如在使用其他编程语言或程序间语言扫描时(例如,您的代码库包含其他编程语言(如C、C++、C# .)或者您需要这些工具提供的一些附加功能--那么它就值得研究一下商业工具。但是你可以做出自己的决定,因为每个解决方案都可以被测试。访问他们的网页,下载/请求试用,并自己尝试(也许在此期间,事情发生了变化?)
我查看了以下工具:
商业:
OpenSource:
最后我们做了什么?我们安装了免费的声纳服务器,它结合了许多工具,如findbug、pmd、校验样式、cobertura等等。这样我们就得到了一个免费的解决方案,在许多方面都比现有的商业工具更好。如果我需要走商业路线的话,我可能会仔细看看coverity (再也不看CAST了)。
关于性能问题的更新--findbug能够在没有问题的情况下扫描庞大的代码库(如果您遇到问题,然后将其发布到findbugs邮件列表上,它们将帮助您)。我记得那时候,findbug也是最快的工具之一。例如,Coverity需要近2小时才能完成,而findbug则在不到10分钟内完成。在这些数字之间的其他工具。
关于C和C++代码的扫描,您可以查看夹板和卡普查克。还有其他一些有帮助线程正在讨论这个主题。但是,正如所提到的,因为findbug只用于java,并且您希望检测编程间语言问题,商业工具可能有一个优势。因此,既然findbug是免费的--只需在代码库上运行它,看看会发生什么--您的项目只能从中受益!然后修复发现的bug,然后用一些商业工具进行测试--取决于它们发现的bug数量和您将要付出的代价,得出自己的结论。举个例子:其中一个工具花费‘代码行’/divided 10 (以$为单位)。但在你的情况下,你可能会得到折扣;-)
UPDATE II发现了一个有趣的讨论这个主题的硕士论文。主要部分是关于findbug的,但它也提到了klockwork和coverity。
https://stackoverflow.com/questions/18305195
复制相似问题