在上一篇文章中,我们列举了一些资源关闭需要考虑的特殊场景,并且预告了会在这篇放出火线和其他开源产品横向的扫描结果对比报告,包括Sonar、Infer、PMD和Findbugs(由于Lint没有针对资源关闭的规则,未加入对比)。
一. 对比结果
我们将资源关闭场景进行了细化和拆分,以保证代码扫描过程中既能检测出已有的问题,同时也不会对正确的写法产生误报。目前共计30个场景。
废话不多说,先上结果:
二. 结果分析
PMD
对比报告中使用的PMD版本为目前最新版本PMD5.6.1。
PMD是业界老牌的开源静态代码扫描产品,于2002年发布了第一个版本,至今已有15年的积淀。它的优点是支持多种语言的静态扫描,同时由于其将源代码转化为抽象语法树进行分析的引擎特点,扫描速度快。但是也是由于引擎的特点,限制了它应对更加深入的检查需求,目前还难以满足。
所以大家可以看到上面的结果中,PMD针对很多问题都无法成功检出。Findbugs
对比报告中使用的Findbugs版本为目前最新版本Findbugs3.0.1。
Findbugs也是业界老牌的开源静态代码扫描产品,同时也应该是知