静态代码扫描(六)——火线针对资源关闭问题的横向对比报告

本文对比了火线与其他知名静态代码扫描工具在资源关闭问题上的表现,包括PMD, Findbugs, Sonar和Infer。分析结果显示,尽管各工具各有优势,但在资源关闭的复杂场景下,均存在不足。火线作为后起之秀,致力于解决这一痛点并持续改进。" 108086486,7872847,正则表达式:匹配分组实战解析,"['正则表达式', '字符串处理', '编程技术']

在上一篇文章中,我们列举了一些资源关闭需要考虑的特殊场景,并且预告了会在这篇放出火线和其他开源产品横向的扫描结果对比报告,包括Sonar、Infer、PMD和Findbugs(由于Lint没有针对资源关闭的规则,未加入对比)。

一. 对比结果

我们将资源关闭场景进行了细化和拆分,以保证代码扫描过程中既能检测出已有的问题,同时也不会对正确的写法产生误报。目前共计30个场景。
废话不多说,先上结果:

这里写图片描述

二. 结果分析
  1. PMD
    对比报告中使用的PMD版本为目前最新版本PMD5.6.1。
    PMD是业界老牌的开源静态代码扫描产品,于2002年发布了第一个版本,至今已有15年的积淀。它的优点是支持多种语言的静态扫描,同时由于其将源代码转化为抽象语法树进行分析的引擎特点,扫描速度快。但是也是由于引擎的特点,限制了它应对更加深入的检查需求,目前还难以满足。
    所以大家可以看到上面的结果中,PMD针对很多问题都无法成功检出。

  2. Findbugs
    对比报告中使用的Findbugs版本为目前最新版本Findbugs3.0.1。
    Findbugs也是业界老牌的开源静态代码扫描产品,同时也应该是知名度较高的一款产品。我从官网上只能追踪到最早2004年的BUG反馈,说明Findbugs的积淀和PMD不相上下。Findbugs只支持Java代码扫描,但是它的引擎技术是解析源码编译后的class文件,专业术语为控制流图和数据流分析技术。所以它能做的事情相比较PMD而言深度上更胜一筹。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值