Maven – PMD example
In this article, we will show you how to use Maven PMD Plugin to analyze the Java code.
P.S PMD requires Java 1.7
1. Maven PMD Plugin
Define the maven-pmd-plugin
in the reporting
tag, so that mvn site
will generate the PMD report.
pom.xml
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.11.0</version>
</plugin>
</plugins>
</reporting>
2. Java Code
A simple Java code. We will use Maven PMD plugin to analyze this code and display the issues in a report.
package com.mkyong.examples;
public class StaticCodeExample {
//Unused field
private int abc;
private String ip = "127.0.0.1";
public void test() {
String[] field = {"a", "b", "c", "s", "e"};
String s = "";
for (int i = 0; i < field.length; ++i) {
s = s + field[i];
}
System.out.println(ip);
}
}
3. Maven Site
mvn compile site
to generate a Maven site for the Java project, the PMD report will be generated and integrated into the Maven site automatically.
$ mvn compile site
[INFO] Generating "PMD" report --- maven-pmd-plugin:3.11.0:pmd
[INFO] Generating "Dependency Information" report --- maven-project-info-reports-plugin:3.0.0:dependency-info
[INFO] Generating "About" report --- maven-project-info-reports-plugin:3.0.0:index
[INFO] Generating "Plugin Management" report --- maven-project-info-reports-plugin:3.0.0:plugin-management
[INFO] Generating "Plugins" report --- maven-project-info-reports-plugin:3.0.0:plugins
[INFO] Generating "Summary" report --- maven-project-info-reports-plugin:3.0.0:summary
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.732 s
[INFO] Finished at: 2018-11-19T15:38:56+08:00
[INFO] ------------------------------------------------------------------------
4. PMD Report
Review the report at target/site/pmd.html
5. FAQs
5.1 Review all PMD built-in rules for Java here.
Download Source Code
$ git clone https://github.com/mkyong/maven-examples.git
$ cd maven-static-code-analysis
$ mvn compile site
# view report at target/site/pmd.html
I am getting a build failure…I’ve done exactly what you’ve told
tried to do with Groovy? Do you know if it works?