ant是用来编译java项目的一个工具。其主页是:http://ant.apache.org/
pmd是一个源代码检查器。其主页是:http://pmd.sourceforge.net/
pmd提供了开放性的源代码检查功能,当然最常用的是检查类里面的无用私有成员,方法里面无用临时变量,以及方法定义里面的无用参数等等。
下载pmd压缩包之后,解压后可以直接用其中的pmd.jar对源代码进行检查。例如:
c:\> java -jar pmd-4.2.4.jar c:\my\source\code text unusedcode,imports -targetjdk 1.5 -debug
- text是指输出的结果为text格式,可以将上述命令重定向别的文件。
- unusedcode,imports是检查无用代码和无用import语句。
- -targetjdk 1.5是指定jdk的版本为1.5。
- -debug是调试模式。
然而我们的项目是用ant来编译的,所以希望把pmd集成到ant中。看了一下帮助,稍改动一下:
1.将pmd的lib下的jar文件都copy到项目的build目录下的pmd目录中。
2.打开build.xml,添加如下部分:
<path id=”pmd.classpath”>
<pathelement location=”${basedir}/”/>
<fileset dir=”build/pmd/”>
<include name=”*.jar”/>
</fileset>
</path>
<target name=”pmd”>
<taskdef name=”pmd” classname=”net.sourceforge.pmd.ant.PMDTask” classpathref=”pmd.classpath”>
</taskdef>
<pmd rulesetfiles=”unusedcode”>
<formatter type=”html” toFile=”pmd_report.html” toConsole=”true”/>
<fileset dir=”${basedir}/src/”>
<include name=”**/*.java”/>
</fileset>
</pmd>
</target>
其中path部分是定义jar的目录为pmd.classpath,${basedir}就是项目所在目录,
target部分就是执行pmd的部分,taskdef定义了执行该任务的类是net.sourceforge.pmd.ant.PMDTask,其类路径为pmd.classpath。pmd 部分是pmd的执行设置,rulesetfiles指定其检查类型为unusedcode,formatter是结果输出文件。fileset是被pmd检查的文件目标路径。
保存build.xml之后,可以用ant pmd来执行检查,要显示检查过程,可以用ant -v pmd。