写点什么

PMD:自动化源码分析和 bug 检测

  • 2007-07-23
  • 本文字数:909 字

    阅读完需:约 3 分钟

PMD 这款开源的自动化 Java 源码分析和 bug 检测工具刚刚发布了 4.0 版。InfoQ 就 PMD 所提供的功能与该项目的负责人 Tom Copeland 进行了深入探讨。

PMD 是一个静态 Java 源码分析工具,从概念上讲与 Checkstyle FindBugs Coverity 很相似。它从 Java 代码中可以搜索出那些效率低下的代码,bug 和常见的编程问题。它可以通过 IDE 的集成在开发环境中使用,也可以和 Ant Maven 构建直接交互。PMD 使用规则(rules)来执行源码分析,这些规则可以被组织为规则集(rulesets)。InfoQ 就具体细节向 Cohen 进行了提问,Cohen 回答说:

这些规则是按照它们所检查的问题进行分类的——“无用代码”的规则集检查那些没有用到的局部变量,私有变量和方法;“严格异常”的规则集检查那些抛出异常的方法和捕获如 NullPointerException 等异常的代码块。还有一些是特定于代码库的规则集。例如, JUnit 规则集用来在 JUnit 测试套件中寻找常见的问题(如使用了assert(x==null) 而不是``assertNull(x))等。当前我们已经有了 225 条规则,还有更多的规则正在制定中。当有人想到了新的规则并提交补丁或是请求时,新规则就会被添加进来。每一条规则都有一系列相关的单元测试,来减少那些比较明显的“假阳性(false positive)”的数量;我们希望这也会使得 PMD 产生的检查报告保持相当的整洁。

InfoQ 问到在 4.0 中有哪些新特性时,Copeland 回答说,最大的新特性就是 Java 5。PMD 在 Java 5 的基础上进行了重写,现在已经是默认对基于 Java 5 的源码进行分析了——当然 1.4 和之前的代码一样可以支持。在性能上也有了提升,同时还有些 bug 的修复和新的代码检查规则。当被问到 PMD 下一步比较大的计划是什么时,Copeland 答道:

类型解析将是一块比较重要的内容。目前 PMD 只能一次检查一个源码文件,这就对它的规则作用区域有所限制。我们的一个核心开发人员 Allan Caplan 已经在这个方向做了大量的工作,他用了 ASM 这个字节码操作库来解析类文件依赖,我们认为这将减少“假阳性”的数量,发现更多真正的问题。我们现在已经有了一个数据流分析层,当类型解析完成之后,它就能用得上这个功能了。这是多么美妙的事情啊!

查看英文原文: PMD: Automated source code analysis and bug detection

2007-07-23 08:161984
用户头像

发布了 197 篇内容, 共 57.6 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

从聚水潭开始,自动化您的电商工作流程

RestCloud

零代码 CRM APPlink 聚水潭

研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库

冰河

程序员 DevOps 研发效能 系统架构 架构师

云技术分享 | EC2 之 Windows 忘记密码(一)

亚马逊云科技 (Amazon Web Services)

ssm Amazon EC2 launch

从身份治理出发,助力教育行业回归教育本质

Authing

低代码 教育 Authing 身份管理平台 身份管理

文心一言 VS 讯飞星火 VS chatgpt (161)-- 算法导论13.1 1题

福大大架构师每日一题

福大大架构师每日一题

融云数智办公获 IT168「2023 年度信创卓越贡献奖」

融云 RongCloud

产品 IT 信创 信息技术 数智办公

倒计时1天|2023开放原子开发者大会,明天见!

开放原子开源基金会

开源

大模型高效微调技术

百度开发者中心

人工智能 深度学习 大模型

Fine-tuning: 深度解析P-tuning v2在大模型上的应用

百度开发者中心

深度学习 nlp 大模型

胡润研究院首次发布“全球猎豹企业榜”,涛思数据榜上有名

TDengine

涛思数据 tdengine 时序数据库

每日一题:LeetCode-162. 寻找峰值

Geek_4z9ami

Go 算法 LeetCode 分治 搜索

用友BIP资产云,盘活数据,助力国有资产保值增值

用友BIP

资产管理

BRC-20铭文代币合约质押挖矿系统开发丨详情开发

l8l259l3365

【终极教程】cocos2dx-js 分批次混淆压缩js文件

Geek_66e2f3

软件测试/测试开发丨深入了解软件测试:原则、对象、作用与缺陷

测试人

Python 人工智能 软件测试 测试开发

玩转Spring状态机

不在线第一只蜗牛

spring 状态机

致敬中国数据库的黄金时代-记录阿里云数据库从落选到登顶魔力象限的全过程

小猿姐

数据库 阿里云 Gartner 魔力象限

11项指标!企业应用软件国产替代的选型标准与创新之路

用友BIP

国产替代

身份管理如何提升中小企业生产力?

Authing

企业管理 中小企业 Authing 身份管理

速抢早鸟票|阿里云PolarDB开发者大会,高能来袭

阿里云瑶池数据库

阿里云 开发者大会 阿里云瑶池数据库 阿里云PolarDB

通过解析封装关键词搜索速卖通商品列表数据接口,速卖通API接口

tbapi

速卖通API接口 速卖通商品数据接口 关键词搜索速卖通接口 速卖通商品列表数据接口 速卖通商品列表接口

Solidity之旅(十三)函数及其可见性和状态可变性

BSN研习社

PMD:自动化源码分析和bug检测_Java_Ryan Slobojan_InfoQ精选文章