1.代码质量检查的必要性
略(我知道还有人想就此抬杠)
2.Java项目可采用的提高代码质量的工具
我所了解和尝试过的Java项目可采用的代码检查工具(全是开源的):
FindBugs: http://findbugs.sourceforge.net 静态代码分析工具
CheckStyle: http://checkstyle.sourceforge.net 静态代码分析工具
PMD: http://pmd.sourceforge.net 静态代码分析工具
JUnit: http://www.junit.org 单元测试工具
以上工具都可以与Ant结合使用,并可以集成到Eclipse中。(以后慢慢学、慢慢说)
FindBugs、PMD、CheckStyle都提供开发团队自定义检查规则的可能,通过团队自己的开发,可使这些工具按照开发团队自身的规范来检查代码。
多罗嗦两句:
FindBugs和PMD都是以分析Java代码本身为主要功能,而Checkstyle则以分析格式为主。软件工程中对代码质量的定义往往不只是对代码编写的要求,JavaDoc或代码中的注释也是也属于代码质量检查的范围,用FindBugs、PMD就不行了,用CheckStyle吧。
单就Java代码(非注释、非JavaDoc)检查来看,FingBugs和PMD也不同:
FingBugs分析的对象是*.class文件,而PMD的分析对象*.java源代码。分析原理当然也不同了:FindBugs是以字节码设计库(Code Engineering Library)为基础的,欲自行编写需熟练掌握字节码设计库,这是另一个开源项目(http://jakarta.apache.org/bcel/),牛人们看看吧。PMD则是基于抽象语义树(AST,Abstract Syntax Tree)的,即:将Java源代码根据其语义分析为由若干语义节点(Node)的树状结构,PMD根据AST上各节点之间的关系来分析代码中错误或不符合规范的地方。
3.下载安装和使用PMD
PMD工具以及源码可以在其项目首页上下载到,针对各种Java IDE的插件也以下载到,我下了个JBuilder的插件――pmd-jbuilder-1.2.zip。下载后将zip中4个*.jar文件拷入Jbuilder的…\lib\ext目录下,然后重启JBuilder。
重启Jbuilder后,Jbuilder的工具条栏会出现有关PMD的三个工具条按钮:
“PMD Check File”--用PMD检查当前*.java源代码文件;
“PMD Check Project”--用PMD检查当前Java工程中的所有*.java文件;
“CPD Check Project”--用PMD中的CPD工具检查当前Java工程中copy/paste的代码
点击“PMD Check File”试一下,PMD会根据其已经内建的规则(PMD称之为Rule)检查当前*.java源代码文件中的不符合规范(或是不够优化)的地方,每一处均给出所在行号和简单说明。开发人员可以根据其提示进行改进或优化。我查了一下我最近的代码,还真不少,有些错误的确有可能引起严重后果。感谢PMD!
4.总结
PMD是工具,不是方法。开发团队在提高代码质量的努力中需要这样的工具来支持。PMD不但内建若干代码检查的规则(Rule),还可以自行开发(如前面第2节所提到的)规则。下一次,我会分享我自行开发PMD代码检查规则的全过程。希望朋友们多来指教!谢谢!