C:\tmp\pmd-4.2.5\pmd\bin>pmd c:\data\pmd\pmd\test-data\Unused1.java xml rulesets/unusedcode.xml <?xml version="1.0"?><pmd> <file name="c:\data\pmd\pmd\test-data\Unused1.java"> <violation line="5" rule="UnusedLocalVariable"> Avoid unused local variables such as 'fr' </violation> </file></pmd> C:\tmp\pmd-4.2.5\pmd\bin>
You can pass a file name, a directory name, or a jar or zip file name containing Java source code to PMD.
Also, the PMD binary distribution includes the ruleset files inside the jar file - even though the "rulesets/unusedcode.xml" parameter above looks like a filesystem reference, it's really being used by a getResourceAsStream() call to load it out of the PMD jar file. And the same applies to the example below.
C:\data\pmd\pmd>java -cp lib\pmd-4.2.5.jar;lib\jaxen-1.1.1.jar;lib\asm-3.1.jar net.sourceforge.pmd.PMD c:\j2sdk1.4.1_01\src\java\lang xml rulesets/imports.xml
java net.sourceforge.pmd.PMD /path/to/source text basic,imports,unusedcode
-debug
- prints a stacktrace if an error is encountered-shortnames
- puts shortened names in the report. This only works if the filename argument is a single directory-targetjdk [1.3|1.4|1.5|1.6]
- selects either JDK 1.3, 1.4, 1.5 or 1.6 language compatibility; default is 1.5-encoding Cp1252
- uses the specified encoding for reading the source code files-excludemarker NOPMDFORME
- uses the specified string of characters as the marker for PMD to ignore. The default string is "NOPMD".-linkprefix
- path to HTML source, for summary html renderer only.-lineprefix
- custom anchor to affected line in the source file, for summary html renderer only.-minimumpriority
- The rule priority threshold; rules with lower priority than they will not be used.-xslt FILENAME
- This option overrides the default XSL stylesheet used by nicehtml renderer.PMD comes with 4 differents type of renderers:
Here is a simple example of 'nicehtml' feature usage:
java net.sourceforge.pmd.PMD /path/to/source nicehtml basic,imports,unusedcode -xslt my-own-stylesheet.xsl