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

发表于:2007-7-25 13:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Ryan Slobojan    来源:Infoq中文站

        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这个字节码操作库来解析类文件依赖,我们认为这将减少“假阳性”的数量,发现更多真正的问题。我们现在已经有了一个数据流分析层,当类型解析完成之后,它就能用得上这个功能了。这是多么美妙的事情啊!

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号