写点什么

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:161801
用户头像

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

关注

评论

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

继承

Jason199

js 继承 7月月更

TiFlink: 使用 TiKV 和 Flink 实现强一致的物化视图

TiDB 社区干货传送门

实践案例 TiDB 底层架构

Tidb灾难恢复演练-多副本丢失

TiDB 社区干货传送门

故障排查/诊断

PD 关于tso 分配源代码分析

TiDB 社区干货传送门

TiDB 底层架构

PD 关于ID分配的源码分析

TiDB 社区干货传送门

TiDB 底层架构

当大数据架构遇上 TiDB

TiDB 社区干货传送门

实践案例

从一个简单的Delete删数据场景谈TiDB数据库开发规范的重要性

TiDB 社区干货传送门

故障排查/诊断

Spring IOC II

武师叔

7月月更

记一次TiDB优化

TiDB 社区干货传送门

性能调优

TSO 时间戳转换为自然时间

TiDB 社区干货传送门

实践案例

TiDB系统调参实战经验

TiDB 社区干货传送门

性能调优 实践案例

TIDB 入门运维基础视频教程(一)-- 快速体验

TiDB 社区干货传送门

安装 & 部署

SpringBoot核心应用第一弹

Java学术趴

7月月更

TiDB+FLINK 实时计算

TiDB 社区干货传送门

实践案例

【TiDB 最佳实践系列】如何高效利用 Grafana 监控分析 TiDB 指标?

TiDB 社区干货传送门

监控

TiDB升级5.0.2有惊喜

TiDB 社区干货传送门

版本测评

TiDB 5.1 发版,打造更流畅的企业级数据库体验

TiDB 社区干货传送门

新版本/特性发布

排序算法总结

乌龟哥哥

7月月更

成年人的周末 2022.7.10

贾献华

7月月更

Spring&SpringBoot 源码笔记整理 |Bean 的加载流程一

自由

Spring5源码解析 7月月更

前端食堂技术周刊第 44 期:Bun、Vue.js 挑战、React 状态管理的新浪潮、Can I DevTools、函数式编程

童欧巴

Vue React Bun

价值几十万的 TiDB优化

TiDB 社区干货传送门

实践案例

【SOP 系列】TiDB 使用 SOP 最全合集

TiDB 社区干货传送门

TiDB 底层架构

一条 like 条件的慢 SQL 语句优化

TiDB 社区干货传送门

管理与运维

TiDB GC 之原理浅析

TiDB 社区干货传送门

TiDB 底层架构

小区搜索过程

柒号华仔

5G 7月月更

TiDB 目录结构分析

TiDB 社区干货传送门

实践案例

悲观事务加锁验证

TiDB 社区干货传送门

管理与运维

TiDB 在网易游戏的应用实践

TiDB 社区干货传送门

实践案例

TiDB 4.0 新特性也太爽了吧

TiDB 社区干货传送门

版本测评

DELETE Statement,懂你不容易

TiDB 社区干货传送门

TiDB 底层架构

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