PMDDescriptionRuns a set of static code analysis rules on some Java source code files and generates a list of problems found. Parameters
ExamplesRunning one ruleset to produce a HTML report
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>
<target name="pmd">
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>
<pmd rulesetfiles="rulesets/imports.xml">
<formatter type="html" toFile="pmd_report.html"/>
<fileset dir="C:\j2sdk1.4.1_01\src\java\lang\">
<include name="**/*.java"/>
</fileset>
</pmd>
</target>
Running multiple rulesets to produce an XML report
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>
<target name="pmd">
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>
<pmd rulesetfiles="rulesets/imports.xml,rulesets/unusedcode.xml">
<formatter type="xml" toFile="c:\pmd_report.xml"/>
<fileset dir="C:\j2sdk1.4.1_01\src\java\lang\">
<include name="**/*.java"/>
</fileset>
</pmd>
</target>
Using a custom renderer
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>
<target name="pmd">
<pmd rulesetfiles="rulesets/favorites.xml">
<formatter type="net.sourceforge.pmd.renderers.HTMLRenderer" toFile="foo.html"/>
<fileset dir="/usr/local/java/src/java/lang/ref">
<include name="**/*.java"/>
</fileset>
</pmd>
</target>
Using a classpath reference in the taskdef
<path id="pmd.classpath">
<pathelement location="${build}"/>
<fileset dir="/path/to/my/pmd/lib/">
<include name="*.jar"/>
</fileset>
</path>
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="classpath.path"/>
<target name="pmd">
<pmd rulesetfiles="rulesets/favorites.xml">
<formatter type="net.sourceforge.pmd.renderers.HTMLRenderer" toFile="foo.html"/>
<fileset dir="/usr/local/java/src/java/lang/ref">
<include name="**/*.java"/>
</fileset>
</pmd>
</target>
Getting verbose output
[tom@hal etc]$ ant -verbose pmd
Apache Ant version 1.5.2 compiled on March 31 2003
Buildfile: build.xml
Detected Java version: 1.4 in: /usr/local/j2sdk1.4.1_02/jre
Detected OS: Linux
parsing buildfile build.xml with URI = file:/home/tom/data/pmd/pmd/etc/build.xml
Project base dir set to: /home/tom/data/pmd/pmd
Build sequence for target `pmd' is [pmd]
Complete build sequence is [pmd, copy, cppjavacc, cpd, delete,
compile, clean, jar, dist, cpdjnlp, jjtree, javadoc, test, tomserver]
pmd:
[pmd] Using the normal ClassLoader
[pmd] Using these rulesets: rulesets/imports.xml
[pmd] Using rule DontImportJavaLang
[pmd] Using rule UnusedImports
[pmd] Using rule ImportFromSamePackage
[pmd] Using rule DuplicateImports
[pmd] Processing file /usr/local/java/src/java/lang/ref/Finalizer.java
[pmd] Processing file /usr/local/java/src/java/lang/ref/FinalReference.java
[pmd] Processing file /usr/local/java/src/java/lang/ref/PhantomReference.java
[pmd] Processing file /usr/local/java/src/java/lang/ref/Reference.java
[pmd] Processing file /usr/local/java/src/java/lang/ref/ReferenceQueue.java
[pmd] Processing file /usr/local/java/src/java/lang/ref/SoftReference.java
[pmd] Processing file /usr/local/java/src/java/lang/ref/WeakReference.java
[pmd] 0 problems found
BUILD SUCCESSFUL
Total time: 2 seconds
[tom@hal etc]$
|