BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Ryan Slobojan 关注 0 他的粉丝 ,译者 李剑 关注 1 他的粉丝 发布于 2007年7月24日. 估计阅读时间: 3 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT