Java静态分析的Coverity

时间:2008-10-06 10:02:34

标签: java static-analysis coverity-prevent

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

4 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:4)

我会提出一个有点相关的答案。我已经将Klocwork用于Java和C代码。 Klocwork是Coverity的竞争对手......成本方面他们大致相同(仔细观察,Klocwork看起来更便宜,直到你真正购买你需要的东西),并且功能方面他们来回打架。

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

获得Coverity进行演示,他们非常乐意。看看他们找到了什么样的东西。

答案 2 :(得分:3)

我将对前面的答案添加一个有限的限制,在某种程度上受到我所受的Coverity NDA的限制。 Coverity Prevent在开源C / C ++代码中发现bug方面有着令人印象深刻的公开记录,但他们的Java产品更新。 (Coverity在我的前雇主上有一个新闻稿,所以我可以说它确实有助于在我们的C / C ++代码中找到并修复许多错误,比我以前在寻找bug的过程中发现的更多。)FindBugs一个令人印象深刻的Java代码工作,你不能打败价格。但最重要的一点是:在购买之前,先在 真实代码上试用它们。现实无可替代,静态分析的传统智慧是工具发现的重叠程度令人惊讶。

答案 3 :(得分:0)

正如其他人所说,最好的决定方法是尝试所有这些工具。

Coverity最近宣布推出名为Code Spotter(https://code-spotter.com/)的托管静态分析即服务产品,该产品目前处于测试阶段。它使用与Coverity企业产品相同的分析引擎,但它包含在不同的(简化的)用户界面中。由于这是托管服务,因此很容易使用它来了解Coverity分析功能。

在撰写本文时,Code Spotter仅支持Java,但其他Coverity支持的语言应该很快就会推出。