InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

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

作者 Ryan Slobojan 译者 李剑 发布于 2007年7月23日

领域
过程 & 实践,
架构 & 设计,
语言 & 开发
主题
PMD ,
Java ,
代码分析 ,
调试 ,
语言 ,
编程 ,
开源项目发布

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

PMD是一个静态Java源码分析工具,从概念上讲与CheckstyleFindBugsCoverity很相似。它从Java代码中可以搜索出那些效率低下的代码,bug和常见的编程问题。它可以通过IDE的集成在开发环境中使用,也可以和AntMaven构建直接交互。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

译者 李剑 李剑──ThoughtWorks高级咨询师,在持续集成、重构等领域具有丰富的经验;多次为国内大型企业敏捷组织转型提供咨询和培训服务。