Java静态分析的覆盖性

2022-09-03 01:39:21

我想从那些使用或评估Coverity来静态分析Java代码的人那里得到评论。我知道它在C / C++世界中很受欢迎,但是是否值得花钱进行Java分析,或者我使用PMD,Findbugs和其他开源工具更好?


答案 1

如果你今天没有使用任何东西,我会从Findbugs和PMD开始。它们易于安装和使用。首先使用Findbugs专注于审查和修复正确性错误 - 他们建议从高和中严重性正确性错误开始,因为检查器的误报率非常低,您将获得良好的时间回报。让开发人员使用 PMD 清理代码,并使用 Eclipse 中的 Findbugs 插件来审查新代码。逐步工作将使开发人员了解并接受这些工具的有用性。

与C / C++检查器相比,Coverity的Java检查器仍然很弱。我们使用Findbugs,PMD,Coverity和Klocwork,因为它们都有不同的优势,我们是偏执狂。如果你不是偏执狂,你可以坚持使用开源工具并获得很多价值。或者,如果您需要安全检查:那么Klocwork或特别是Fortify应该为您做更彻底的工作。


答案 2

我将提出一个有点相关的答案。我使用Klocwork编写Java和C代码。Klocwork是Coverity的紧密竞争对手...在成本方面,它们大致相同(仔细观察,Klocwork看起来更便宜,直到您真正购买所需的东西),并且在功能方面它们来回战斗。

对于C /C++来说,这很棒。对于 Java....好吧,它帮助发现了很多资源泄漏(#$@^#ing Java开发人员似乎忘记了像文件句柄这样的资源没有被垃圾回收),但它似乎没有发现很多“关键”错误。这可能是因为语言本身确实有助于防止一些更基本但难以发现的错误(数组溢出,指针损坏等)。

让Coverity运行演示,他们非常乐意。看看他们发现了什么样的东西。


推荐