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]$ |