Author: michaelo
Date: Sun Nov 30 13:03:26 2014
New Revision: 1642541

URL: http://svn.apache.org/r1642541
Log:
[MPMD-129] Maven PMD plugin does not have suppressMarker property that is 
available in PMD itself

Contributed-by: Andreas Dangel, Svetlomira Manova

Added:
    
maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-with-suppressMarker-plugin-config.xml
Modified:
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
    
maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdReportTest.java
    
maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/def/configuration/App.java

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java?rev=1642541&r1=1642540&r2=1642541&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
 Sun Nov 30 13:03:26 2014
@@ -149,6 +149,16 @@ public class PmdReport
     private String benchmarkOutputFilename;
 
     /**
+     * Source level marker used to indicate whether a RuleViolation should be 
suppressed.
+     * If it is not set, PMD's default will be used, which is 
<code>NOPMD</code>.
+     * See also <a 
href="http://pmd.sourceforge.net/usage/suppressing.html";>PMD - Suppressing 
warnings</a>.
+     *
+     * @since 3.4
+     */
+    @Parameter( property = "pmd.suppressMarker" )
+    private String suppressMarker;
+
+    /**
      */
     @Component
     private ResourceManager locator;
@@ -562,6 +572,11 @@ public class PmdReport
             }
         }
 
+        if ( null != suppressMarker )
+        {
+            configuration.setSuppressMarker( suppressMarker );
+        }
+
         configuration.setBenchmark( benchmark );
 
         return configuration;

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdReportTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdReportTest.java?rev=1642541&r1=1642540&r2=1642541&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdReportTest.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdReportTest.java
 Sun Nov 30 13:03:26 2014
@@ -345,4 +345,28 @@ public class PmdReportTest
 
     }
 
+    /**
+     * Verify that suppressMarker works
+     *
+     * @throws Exception
+     */
+    public void testSuppressMarkerConfiguration()
+            throws Exception
+        {
+            File testPom = new File( getBasedir(),
+                                     
"src/test/resources/unit/default-configuration/pmd-with-suppressMarker-plugin-config.xml"
 );
+            PmdReport mojo = (PmdReport) lookupMojo( "pmd", testPom );
+            mojo.execute();
+
+            //check if the PMD files were generated
+            File generatedFile = new File( getBasedir(), 
"target/test/unit/default-configuration/target/pmd.xml" );
+            assertTrue( FileUtils.fileExists( generatedFile.getAbsolutePath() 
) );
+
+            String str =
+                readFile( new File( getBasedir(), 
"target/test/unit/default-configuration/target/pmd.xml" ) );
+
+            //check that there is no violation reported for "unusedVar2" - as 
it is suppressed
+            assertFalse(str.contains("Avoid unused private fields such as 
'unusedVar2'."));
+        }
+
 }

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/def/configuration/App.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/def/configuration/App.java?rev=1642541&r1=1642540&r2=1642541&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/def/configuration/App.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/def/configuration/App.java
 Sun Nov 30 13:03:26 2014
@@ -28,7 +28,7 @@ public class App
 {
     protected String unusedVar1;
 
-    private int unusedVar2;
+    private int unusedVar2; //SUPPRESSME test for the suppressMarker property
 
     String unusedvar3;
 

Added: 
maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-with-suppressMarker-plugin-config.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-with-suppressMarker-plugin-config.xml?rev=1642541&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-with-suppressMarker-plugin-config.xml
 (added)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-with-suppressMarker-plugin-config.xml
 Sun Nov 30 13:03:26 2014
@@ -0,0 +1,68 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>def.configuration</groupId>
+  <artifactId>suppressMarker-configuration</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <inceptionYear>2006</inceptionYear>
+  <name>Maven PMD Plugin SuppressMarker Configuration Test</name>
+  <url>http://maven.apache.org</url>
+  <build>
+    <finalName>default-configuration</finalName>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-pmd-plugin</artifactId>
+        <configuration>
+          <project 
implementation="org.apache.maven.plugin.pmd.stubs.DefaultConfigurationMavenProjectStub"/>
+          
<outputDirectory>${basedir}/target/test/unit/default-configuration/target/site</outputDirectory>
+          
<targetDirectory>${basedir}/target/test/unit/default-configuration/target</targetDirectory>
+          <format>xml</format>
+          <linkXRef>true</linkXRef>
+          
<xrefLocation>${basedir}/target/test/unit/default-configuration/target/site/xref</xrefLocation>
+          <sourceEncoding>UTF-8</sourceEncoding>
+
+          <suppressMarker>SUPPRESSME</suppressMarker>
+
+          <compileSourceRoots>
+            
<compileSourceRoot>${basedir}/src/test/resources/unit/default-configuration/</compileSourceRoot>
+          </compileSourceRoots>
+        </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>pmd</groupId>
+            <artifactId>pmd</artifactId>
+            <version>3.6</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+    </plugins>
+  </build>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jxr-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </reporting>
+</project>


Reply via email to