Author: olamy Date: Mon Feb 4 20:53:13 2013 New Revision: 1442345 URL: http://svn.apache.org/viewvc?rev=1442345&view=rev Log: [MPMD-161] PMD/CPD violation exclusions by class/issue Submitted by Andrey Utis.
Added: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml (with props) maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-pmd-exclusions-configuration-plugin-config.xml (with props) Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojoTest.java maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojoTest.java Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java?rev=1442345&r1=1442344&r2=1442345&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdViolationCheckMojo.java Mon Feb 4 20:53:13 2013 @@ -26,6 +26,7 @@ import org.apache.maven.plugins.annotati import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import java.io.File; @@ -74,14 +75,28 @@ public abstract class AbstractPmdViolati */ @Parameter( property = "pmd.verbose", defaultValue = "false" ) private boolean verbose; + + /** + * Print details of errors that cause build failure + */ + @Parameter( property = "pmd.printFailingErrors", defaultValue = "false" ) + private boolean printFailingErrors; /** + * File that lists classes and rules to be excluded from failures + * For PMD, this is a properties file + * For CPD, this is a text file that contains comma-separated lists of classes that are allowed to duplicate + */ + @Parameter( property = "pmd.excludeFromFailureFile", defaultValue = "" ) + private String excludeFromFailureFile; + + /** * The project to analyze. */ @Component protected MavenProject project; - protected void executeCheck( String filename, String tagName, String key, int failurePriority ) + protected void executeCheck( final String filename, final String tagName, final String key, final int failurePriority ) throws MojoFailureException, MojoExecutionException { if ( aggregate && !project.isExecutionRoot() ) @@ -91,27 +106,30 @@ public abstract class AbstractPmdViolati if ( "java".equals( language ) || aggregate ) { - File outputFile = new File( targetDirectory, filename ); + if (!StringUtils.isEmpty(excludeFromFailureFile)) { + loadExcludeFromFailuresData(excludeFromFailureFile); + } + final File outputFile = new File( targetDirectory, filename ); if ( outputFile.exists() ) { - Reader reader = null; + final Reader reader = null; try { - ViolationDetails<D> violations = getViolations( outputFile, failurePriority ); + final ViolationDetails<D> violations = getViolations( outputFile, failurePriority ); - List<D> failures = violations.getFailureDetails(); - List<D> warnings = violations.getWarningDetails(); + final List<D> failures = violations.getFailureDetails(); + final List<D> warnings = violations.getWarningDetails(); if ( verbose ) { printErrors( failures, warnings ); } - int failureCount = failures.size(); - int warningCount = warnings.size(); + final int failureCount = failures.size(); + final int warningCount = warnings.size(); - String message = getMessage( failureCount, warningCount, key, outputFile ); + final String message = getMessage( failureCount, warningCount, key, outputFile ); if ( failureCount > 0 && isFailOnViolation() ) { @@ -120,12 +138,12 @@ public abstract class AbstractPmdViolati this.getLog().info( message ); } - catch ( IOException e ) + catch ( final IOException e ) { throw new MojoExecutionException( "Unable to read PMD results xml: " + outputFile.getAbsolutePath(), e ); } - catch ( XmlPullParserException e ) + catch ( final XmlPullParserException e ) { throw new MojoExecutionException( "Unable to read PMD results xml: " + outputFile.getAbsolutePath(), e ); @@ -142,6 +160,8 @@ public abstract class AbstractPmdViolati } } + protected abstract void loadExcludeFromFailuresData(String excludeFromFailureFile) throws MojoExecutionException; + /** * Method for collecting the violations found by the PMD tool * @@ -151,20 +171,23 @@ public abstract class AbstractPmdViolati * @throws XmlPullParserException * @throws IOException */ - private ViolationDetails<D> getViolations( File analysisFile, int failurePriority ) + private ViolationDetails<D> getViolations( final File analysisFile, final int failurePriority ) throws XmlPullParserException, IOException { - List<D> failures = new ArrayList<D>(); - List<D> warnings = new ArrayList<D>(); + final List<D> failures = new ArrayList<D>(); + final List<D> warnings = new ArrayList<D>(); - List<D> violations = getErrorDetails( analysisFile ); + final List<D> violations = getErrorDetails( analysisFile ); - for ( D violation : violations ) + for ( final D violation : violations ) { - int priority = getPriority( violation ); - if ( priority <= failurePriority ) + final int priority = getPriority( violation ); + if ( priority <= failurePriority && !isExcludedFromFailure(violation)) { failures.add( violation ); + if (printFailingErrors) { + printError(violation, "Failure"); + } } else { @@ -172,7 +195,7 @@ public abstract class AbstractPmdViolati } } - ViolationDetails<D> details = newViolationDetailsInstance(); + final ViolationDetails<D> details = newViolationDetailsInstance(); details.setFailureDetails( failures ); details.setWarningDetails( warnings ); return details; @@ -180,6 +203,8 @@ public abstract class AbstractPmdViolati protected abstract int getPriority( D errorDetail ); + protected abstract boolean isExcludedFromFailure(D errorDetail); + protected abstract ViolationDetails<D> newViolationDetailsInstance(); /** @@ -188,14 +213,14 @@ public abstract class AbstractPmdViolati * @param failures list of failures * @param warnings list of warnings */ - protected void printErrors( List<D> failures, List<D> warnings ) + protected void printErrors( final List<D> failures, final List<D> warnings ) { - for ( D warning : warnings ) + for ( final D warning : warnings ) { printError( warning, "Warning" ); } - for ( D failure : failures ) + for ( final D failure : failures ) { printError( failure, "Failure" ); } @@ -210,9 +235,9 @@ public abstract class AbstractPmdViolati * @param outputFile * @return */ - private String getMessage( int failureCount, int warningCount, String key, File outputFile ) + private String getMessage( final int failureCount, final int warningCount, final String key, final File outputFile ) { - StringBuilder message = new StringBuilder(); + final StringBuilder message = new StringBuilder(); if ( failureCount > 0 || warningCount > 0 ) { if ( failureCount > 0 ) Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java?rev=1442345&r1=1442344&r2=1442345&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojo.java Mon Feb 4 20:53:13 2013 @@ -34,7 +34,11 @@ import org.codehaus.plexus.util.xml.pull import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.io.LineNumberReader; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Fail the build if there were any CPD violations in the source code. @@ -55,6 +59,8 @@ public class CpdViolationCheckMojo @Parameter( property = "cpd.skip", defaultValue = "false" ) private boolean skip; + private final List<Set<String>> exclusionList = new ArrayList<Set<String>>(); + /** * Whether to fail the build if the validation check fails. * @@ -112,6 +118,73 @@ public class CpdViolationCheckMojo return details.getDuplications(); } + @Override + protected boolean isExcludedFromFailure(final Duplication errorDetail) { + final Set<String> uniquePaths = new HashSet<String>(); + for (final CpdFile cpdFile : errorDetail.getFiles()) { + uniquePaths.add(cpdFile.getPath()); + } + for (final Set<String> singleExclusionGroup : exclusionList) { + if (uniquePaths.size() == singleExclusionGroup.size() && duplicationExcludedByGroup(uniquePaths, singleExclusionGroup)) { + return true; + } + } + return false; + } + + private boolean duplicationExcludedByGroup(final Set<String> uniquePaths, final Set<String> singleExclusionGroup) { + for (final String path : uniquePaths) { + if (!fileExcludedByGroup(path, singleExclusionGroup)) { + return false; + } + } + return true; + } + + private boolean fileExcludedByGroup(final String path, final Set<String> singleExclusionGroup) { + final String formattedPath = path.replace('\\', '.').replace('/', '.'); + for (final String className : singleExclusionGroup) { + if (formattedPath.contains(className)) { + return true; + } + } + return false; + } + + @Override + protected void loadExcludeFromFailuresData(final String excludeFromFailureFile) throws MojoExecutionException { + LineNumberReader reader = null; + try { + reader = new LineNumberReader(new FileReader(excludeFromFailureFile)); + String line = null; + while ((line = reader.readLine()) != null) { + exclusionList.add(createSetFromExclusionLine(line)); + } + } + catch (final IOException e) { + throw new MojoExecutionException("Cannot load file " + excludeFromFailureFile, e); + } + finally { + if (reader != null) { + try { + reader.close(); + } + catch (final IOException e) { + getLog().warn("Cannot close file " + excludeFromFailureFile, e); + } + } + } + + } + + private Set<String> createSetFromExclusionLine(final String line) { + final Set<String> result = new HashSet<String>(); + for(final String className : line.split(",")) { + result.add(className.trim()); + } + return result; + } + @Override protected int getPriority( Duplication errorDetail ) { Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java?rev=1442345&r1=1442344&r2=1442345&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojo.java Mon Feb 4 20:53:13 2013 @@ -36,7 +36,13 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.Set; /** * Fail the build if there were any PMD violations in the source code. @@ -65,6 +71,8 @@ public class PmdViolationCheckMojo @Parameter( property = "pmd.skip", defaultValue = "false" ) private boolean skip; + private final Map<String, Set<String>> excludeFromFailureClasses = new HashMap<String, Set<String>>(); + /** * {@inheritDoc} */ @@ -77,6 +85,45 @@ public class PmdViolationCheckMojo } } + @Override + protected void loadExcludeFromFailuresData(final String excludeFromFailureFile) throws MojoExecutionException { + final Properties props = new Properties(); + try { + props.load(new FileReader(excludeFromFailureFile)); + } + catch (final IOException e) { + throw new MojoExecutionException("Cannot load properties file " + excludeFromFailureFile, e); + } + for (final Entry<Object, Object> propEntry : props.entrySet()) { + final Set<String> excludedRuleSet = new HashSet<String>(); + final String className = propEntry.getKey().toString(); + final String[] excludedRules = propEntry.getValue().toString().split(","); + for (final String excludedRule : excludedRules) { + excludedRuleSet.add(excludedRule.trim()); + } + excludeFromFailureClasses.put(className, excludedRuleSet); + } + } + + @Override + protected boolean isExcludedFromFailure(final Violation errorDetail) { + final String className = extractClassName(errorDetail); + final Set<String> excludedRuleSet = excludeFromFailureClasses.get(className); + return excludedRuleSet != null && excludedRuleSet.contains(errorDetail.getRule()); + } + + private String extractClassName(final Violation errorDetail) { + //for some reason, some violations don't contain the package name, so we have to guess the full class name + if (errorDetail.getViolationPackage() != null && errorDetail.getViolationClass() != null) { + return errorDetail.getViolationPackage() + "." + errorDetail.getViolationClass(); + } + else { + final String fileName = errorDetail.getFileName(); + final int javaIdx = fileName.indexOf("\\java\\"); + return fileName.substring(javaIdx >= 0 ? javaIdx + 6 : 0, fileName.length() - 5).replace('\\', '.'); + } + } + /** * {@inheritDoc} */ Modified: maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojoTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojoTest.java?rev=1442345&r1=1442344&r2=1442345&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojoTest.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/CpdViolationCheckMojoTest.java Mon Feb 4 20:53:13 2013 @@ -32,6 +32,7 @@ public class CpdViolationCheckMojoTest extends AbstractMojoTestCase { /** {@inheritDoc} */ + @Override protected void setUp() throws Exception { @@ -43,14 +44,14 @@ public class CpdViolationCheckMojoTest { try { - File testPom = new File( getBasedir(), + final File testPom = new File( getBasedir(), "src/test/resources/unit/default-configuration/pmd-check-default-configuration-plugin-config.xml" ); - CpdViolationCheckMojo mojo = (CpdViolationCheckMojo) lookupMojo( "cpd-check", testPom ); + final CpdViolationCheckMojo mojo = (CpdViolationCheckMojo) lookupMojo( "cpd-check", testPom ); mojo.execute(); fail( "MojoFailureException should be thrown." ); } - catch ( Exception e ) + catch ( final Exception e ) { assertTrue( true ); } @@ -62,12 +63,12 @@ public class CpdViolationCheckMojoTest File testPom = new File( getBasedir(), "src/test/resources/unit/default-configuration/cpd-default-configuration-plugin-config.xml" ); - CpdReport mojo = (CpdReport) lookupMojo( "cpd", testPom ); + final CpdReport mojo = (CpdReport) lookupMojo( "cpd", testPom ); mojo.execute(); testPom = new File( getBasedir(), "src/test/resources/unit/default-configuration/pmd-check-notfailonviolation-plugin-config.xml" ); - CpdViolationCheckMojo cpdViolationMojo = (CpdViolationCheckMojo) lookupMojo( "cpd-check", testPom ); + final CpdViolationCheckMojo cpdViolationMojo = (CpdViolationCheckMojo) lookupMojo( "cpd-check", testPom ); cpdViolationMojo.execute(); assertTrue( true ); @@ -78,16 +79,30 @@ public class CpdViolationCheckMojoTest { try { - File testPom = new File( getBasedir(), + final File testPom = new File( getBasedir(), "src/test/resources/unit/custom-configuration/pmd-check-exception-test-plugin-config.xml" ); - CpdViolationCheckMojo mojo = (CpdViolationCheckMojo) lookupMojo( "cpd-check", testPom ); + final CpdViolationCheckMojo mojo = (CpdViolationCheckMojo) lookupMojo( "cpd-check", testPom ); mojo.execute(); fail( "MojoFailureException should be thrown." ); } - catch ( Exception e ) + catch ( final Exception e ) { assertTrue( true ); } } + + public void testExclusionsConfiguration() throws Exception { + File testPom = new File(getBasedir(), + "src/test/resources/unit/default-configuration/cpd-default-configuration-plugin-config.xml"); + final CpdReport mojo = (CpdReport) lookupMojo("cpd", testPom); + mojo.execute(); + + testPom = new File(getBasedir(), + "src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml"); + final CpdViolationCheckMojo cpdViolationMojo = (CpdViolationCheckMojo) lookupMojo("cpd-check", testPom); + cpdViolationMojo.execute(); + + assertTrue( true ); + } } Modified: maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojoTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojoTest.java?rev=1442345&r1=1442344&r2=1442345&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojoTest.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/PmdViolationCheckMojoTest.java Mon Feb 4 20:53:13 2013 @@ -34,6 +34,7 @@ public class PmdViolationCheckMojoTest /** * {@inheritDoc} */ + @Override protected void setUp() throws Exception { @@ -45,14 +46,14 @@ public class PmdViolationCheckMojoTest { try { - File testPom = new File( getBasedir(), + final File testPom = new File( getBasedir(), "src/test/resources/unit/default-configuration/pmd-check-default-configuration-plugin-config.xml" ); - PmdViolationCheckMojo mojo = (PmdViolationCheckMojo) lookupMojo( "check", testPom ); + final PmdViolationCheckMojo mojo = (PmdViolationCheckMojo) lookupMojo( "check", testPom ); mojo.execute(); fail( "MojoFailureException should be thrown." ); } - catch ( Exception e ) + catch ( final Exception e ) { assertTrue( true ); } @@ -63,12 +64,12 @@ public class PmdViolationCheckMojoTest { File testPom = new File( getBasedir(), "src/test/resources/unit/default-configuration/default-configuration-plugin-config.xml" ); - PmdReport mojo = (PmdReport) lookupMojo( "pmd", testPom ); + final PmdReport mojo = (PmdReport) lookupMojo( "pmd", testPom ); mojo.execute(); testPom = new File( getBasedir(), "src/test/resources/unit/default-configuration/pmd-check-notfailonviolation-plugin-config.xml" ); - PmdViolationCheckMojo pmdViolationMojo = (PmdViolationCheckMojo) lookupMojo( "check", testPom ); + final PmdViolationCheckMojo pmdViolationMojo = (PmdViolationCheckMojo) lookupMojo( "check", testPom ); pmdViolationMojo.execute(); assertTrue( true ); @@ -79,7 +80,7 @@ public class PmdViolationCheckMojoTest { File testPom = new File( getBasedir(), "src/test/resources/unit/default-configuration/default-configuration-plugin-config.xml" ); - PmdReport mojo = (PmdReport) lookupMojo( "pmd", testPom ); + final PmdReport mojo = (PmdReport) lookupMojo( "pmd", testPom ); mojo.execute(); testPom = new File( getBasedir(), @@ -95,7 +96,7 @@ public class PmdViolationCheckMojoTest pmdViolationMojo.execute(); fail( "Exception Expected" ); } - catch ( MojoFailureException e ) + catch ( final MojoFailureException e ) { System.out.println( "Caught Expected Message: " + e.getMessage() );// expected } @@ -107,17 +108,33 @@ public class PmdViolationCheckMojoTest { try { - File testPom = new File( getBasedir(), + final File testPom = new File( getBasedir(), "src/test/resources/unit/custom-configuration/pmd-check-exception-test-plugin-config.xml" ); - PmdViolationCheckMojo mojo = (PmdViolationCheckMojo) lookupMojo( "check", testPom ); + final PmdViolationCheckMojo mojo = (PmdViolationCheckMojo) lookupMojo( "check", testPom ); mojo.execute(); fail( "MojoFailureException should be thrown." ); } - catch ( Exception e ) + catch ( final Exception e ) { assertTrue( true ); } } + + public void testViolationExclusion() + throws Exception + { + File testPom = new File( getBasedir(), + "src/test/resources/unit/default-configuration/default-configuration-plugin-config.xml" ); + final PmdReport mojo = (PmdReport) lookupMojo( "pmd", testPom ); + mojo.execute(); + + testPom = new File( getBasedir(), + "src/test/resources/unit/default-configuration/pmd-check-pmd-exclusions-configuration-plugin-config.xml" ); + final PmdViolationCheckMojo pmdViolationMojo = (PmdViolationCheckMojo) lookupMojo( "check", testPom ); + pmdViolationMojo.execute(); + + assertTrue( true ); + } } Added: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml?rev=1442345&view=auto ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml (added) +++ maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml Mon Feb 4 20:53:13 2013 @@ -0,0 +1,57 @@ +<!-- +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>default-configuration</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <inceptionYear>2006</inceptionYear> + <name>Maven PMD Plugin Exclusions 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> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + <configuration> + <!-- project implementation="org.apache.maven.plugin.pmd.stubs.DefaultConfigurationMavenProjectStub"/--> + <targetDirectory>${basedir}/target/test/unit/default-configuration/target</targetDirectory> + <failOnViolation>true</failOnViolation> + <verbose>false</verbose> + <language>java</language> + <printFailingErrors>true</printFailingErrors> + <excludeFromFailureFile>${basedir}/src/test/resources/unit/excludes/cpd_exclude.txt</excludeFromFailureFile> + </configuration> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jxr-plugin</artifactId> + </plugin> + </plugins> + </reporting> +</project> Propchange: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Added: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-pmd-exclusions-configuration-plugin-config.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-pmd-exclusions-configuration-plugin-config.xml?rev=1442345&view=auto ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-pmd-exclusions-configuration-plugin-config.xml (added) +++ maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-pmd-exclusions-configuration-plugin-config.xml Mon Feb 4 20:53:13 2013 @@ -0,0 +1,56 @@ +<!-- +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>custom.configuration</groupId> + <artifactId>custom-configuration</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <inceptionYear>2006</inceptionYear> + <name>Maven PMD Violation Check Custom Configuration Test</name> + <url>http://maven.apache.org</url> + <build> + <finalName>custom-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"/--> + <targetDirectory>${basedir}/target/test/unit/default-configuration/target</targetDirectory> + <failOnViolation>true</failOnViolation> + <failurePriority>3</failurePriority> + <verbose>false</verbose> + <language>java</language> + <printFailingErrors>true</printFailingErrors> + <excludeFromFailureFile>${basedir}/src/test/resources/unit/excludes/pmd_exclude.properties</excludeFromFailureFile> + </configuration> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jxr-plugin</artifactId> + </plugin> + </plugins> + </reporting> +</project> Propchange: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-pmd-exclusions-configuration-plugin-config.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-pmd-exclusions-configuration-plugin-config.xml ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision