maven pmd plugin does not like empty rule sets
A source code analyzer
Brought to you by:
adangel,
juansotuyo
This is our pmd plugin configuration:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.0.1</version> <dependencies> <dependency> <groupId>net.sourceforge.pmd</groupId> <artifactId>pmd</artifactId> <version>5.0.5</version> </dependency> </dependencies> <configuration> <skip>false</skip> <failOnViolation>true</failOnViolation> <failurePriority>4</failurePriority> <targetJdk>1.7</targetJdk> <sourceEncoding>UTF-8</sourceEncoding> <minimumTokens>100</minimumTokens> <excludes> <exclude>**/*Bean.java</exclude> <exclude>**/generated/*.java</exclude> </excludes> <excludeRoots> <excludeRoot>target/generated-sources/stubs</excludeRoot> </excludeRoots> <rulesets/> </configuration> <executions> <execution> <id>default</id> <phase>verify</phase> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin>
note that by default we have no rulesets configured.
this causes
[DEBUG] Searching for files in directory /home/henning/fb/src/nifty/nifty-client/src/main/java [WARNING] Failure executing PMD: null java.lang.NullPointerException at net.sourceforge.pmd.PMD.removeBrokenRules(PMD.java:102) at net.sourceforge.pmd.PMD.setupReport(PMD.java:79) at net.sourceforge.pmd.processor.MonoThreadProcessor.processFiles(MonoThreadProcessor.java:47) at net.sourceforge.pmd.PMD.processFiles(PMD.java:271) at org.apache.maven.plugin.pmd.PmdReport.generateReport(PmdReport.java:296) at org.apache.maven.plugin.pmd.PmdReport.execute(PmdReport.java:194) at org.apache.maven.plugin.pmd.PmdReport.executeReport(PmdReport.java:168) at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:190) at org.apache.maven.reporting.AbstractMavenReport.execute(AbstractMavenReport.java:99) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:364) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:198) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) at org.apache.maven.cli.MavenCli.main(MavenCli.java:158) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
when running mvn pmd:check using maven 3.1.1 on JDK 1.7.0_45 on Linux.
Added a fix for this at https://github.com/pmd/pmd/pull/31
Thank you for the pull request.