Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java静态分析的覆盖性_Java_Static Analysis_Coverity Prevent - Fatal编程技术网

Java静态分析的覆盖性

Java静态分析的覆盖性,java,static-analysis,coverity-prevent,Java,Static Analysis,Coverity Prevent,我想从使用或评估Coverity静态分析Java代码的人那里得到一些评论。我知道它在C/C++世界中很流行,但花这笔钱进行Java分析值得吗?还是我最好使用PMD、Findbugs和其他开源工具?我会给出一个有点相关的答案。我在Java和C代码中都使用了Klocwork。Klocwork是Coverity的亲密竞争对手。。。从成本上看,它们几乎是一样的(仔细看,Klocwork看起来更便宜,直到你真正购买了你所需要的),从功能上看,它们反反复复 对于C/C++来说,这太棒了。对于Java。。。。

我想从使用或评估Coverity静态分析Java代码的人那里得到一些评论。我知道它在C/C++世界中很流行,但花这笔钱进行Java分析值得吗?还是我最好使用PMD、Findbugs和其他开源工具?

我会给出一个有点相关的答案。我在Java和C代码中都使用了Klocwork。Klocwork是Coverity的亲密竞争对手。。。从成本上看,它们几乎是一样的(仔细看,Klocwork看起来更便宜,直到你真正购买了你所需要的),从功能上看,它们反反复复

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


让Coverity参与演示,他们非常乐意。看看他们发现了什么。

如果您今天没有使用任何东西,我将从Findbugs和PMD开始。它们易于安装和使用。首先集中精力检查和修复Findbugs的正确性错误-他们建议从严重程度高和中等的正确性错误开始,因为检查者的误报率非常低,您的时间会得到很好的回报。让开发人员使用PMD清理代码,并使用Eclipse中的Findbugs插件检查新代码。增量工作将使开发人员理解并接受这些工具的有用性


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

我将在前面的答案中添加一个有限的我,这在某种程度上受到我所受保密协议约束的限制。Coverity Prevent在发现开源C/C++代码中的bug方面有着令人印象深刻的公开记录,但他们的Java产品要更新得多。(Coverity发布了一份关于我前雇主的新闻稿,所以我可以说它确实帮助我们发现并修复了C/C++代码中的许多bug,这比我以前在bug搜索方面的所有职业生涯都要多。)FindBugs在Java代码方面做得非常出色,而且价格也不菲。但重要的一点已经被提出:在购买之前,在你真正的代码中试用这两种方法。现实是不可替代的,静态分析中的传统智慧是,工具发现的内容几乎没有重叠。

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

Coverity最近发布了一款托管的静态分析即服务产品,名为Code Spotter(),目前处于测试阶段。它使用与Coverity enterprise产品相同的分析引擎,但它包装在不同的(简化的)用户界面中。因为这是一个托管服务,所以很容易使用它来了解Coverity分析功能


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

您对这些Java工具有何比较?使用findbugs就足够了,甚至Coverity也可以使用它。检查关键功能(FindBugs子标题)