Author: adangel Date: Sat Oct 1 09:29:45 2016 New Revision: 1762988 URL: http://svn.apache.org/viewvc?rev=1762988&view=rev Log: [MPMD-162] PMD/CPD report does not take into account pmd.excludeFromFailureFile Basic implementation
Added: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/cpd-check-cpd-exclusions-configuration-plugin-config.xml - copied, changed from r1762963, maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/cpd-report-cpd-exclusions-configuration-plugin-config.xml - copied, changed from r1762963, maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-report-pmd-exclusions-configuration-plugin-config.xml - copied, changed from r1762963, maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml Removed: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java 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/CpdReport.java 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/CpdReportTest.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/PmdReportTest.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/AbstractPmdReport.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java?rev=1762988&r1=1762987&r2=1762988&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java Sat Oct 1 09:29:45 2016 @@ -200,6 +200,18 @@ public abstract class AbstractPmdReport @Parameter( defaultValue = "true" ) protected boolean skipEmptyReport; + /** + * 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. + * + * @since 3.7 + */ + @Parameter( property = "pmd.excludeFromFailureFile", defaultValue = "" ) + protected String excludeFromFailureFile; + + /** The files that are being analyzed. */ protected Map<File, PmdFileInfo> filesToProcess; 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=1762988&r1=1762987&r2=1762988&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 Sat Oct 1 09:29:45 2016 @@ -83,8 +83,10 @@ public abstract class AbstractPmdViolati 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 + * 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. * * @since 3.0 */ Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java?rev=1762988&r1=1762987&r2=1762988&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java Sat Oct 1 09:29:45 2016 @@ -22,13 +22,28 @@ package org.apache.maven.plugin.pmd; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; +import java.io.FileReader; import java.io.IOException; +import java.io.LineNumberReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; import java.util.Locale; import java.util.Properties; import java.util.ResourceBundle; +import java.util.Set; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.reporting.MavenReportException; +import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.StringUtils; +import org.codehaus.plexus.util.WriterFactory; import net.sourceforge.pmd.cpd.CPD; import net.sourceforge.pmd.cpd.CPDConfiguration; @@ -39,16 +54,11 @@ import net.sourceforge.pmd.cpd.JavaLangu import net.sourceforge.pmd.cpd.JavaTokenizer; import net.sourceforge.pmd.cpd.Language; import net.sourceforge.pmd.cpd.LanguageFactory; +import net.sourceforge.pmd.cpd.Mark; +import net.sourceforge.pmd.cpd.Match; import net.sourceforge.pmd.cpd.Renderer; import net.sourceforge.pmd.cpd.XMLRenderer; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.reporting.MavenReportException; -import org.codehaus.plexus.util.FileUtils; -import org.codehaus.plexus.util.StringUtils; -import org.codehaus.plexus.util.WriterFactory; - /** * Creates a report for PMD's CPD tool. See <a * href="http://pmd.sourceforge.net/cpd.html">http://pmd.sourceforge.net/cpd.html</a> for more detail. @@ -239,6 +249,18 @@ public class CpdReport filesToProcess = getFilesToProcess(); } + if ( !StringUtils.isEmpty( excludeFromFailureFile ) ) + { + try + { + loadExcludeFromFailuresData( excludeFromFailureFile ); + } + catch ( MojoExecutionException e ) + { + throw new MavenReportException( "Error loading exclusions", e ); + } + } + String encoding = determineEncoding( !filesToProcess.isEmpty() ); Language cpdLanguage; if ( "java".equals ( language ) || null == language ) @@ -290,10 +312,25 @@ public class CpdReport } } + private Iterator<Match> filterMatches( Iterator<Match> matches ) + { + List<Match> filteredMatches = new ArrayList<>(); + while ( matches.hasNext() ) + { + Match match = matches.next(); + if ( !isExcludedFromFailure( match ) ) + { + filteredMatches.add( match ); + } + } + return filteredMatches.iterator(); + } + private void generateReport( Locale locale ) { CpdReportGenerator gen = new CpdReportGenerator( getSink(), filesToProcess, getBundle( locale ), aggregate ); - gen.generate( cpd.getMatches() ); + Iterator<Match> matches = cpd.getMatches(); + gen.generate( filterMatches( matches ) ); } private String determineEncoding( boolean showWarn ) @@ -327,7 +364,7 @@ public class CpdReport return; } - String buffer = r.render( cpd.getMatches() ); + String buffer = r.render( filterMatches( cpd.getMatches() ) ); File targetFile = new File( targetDirectory, "cpd." + format ); targetDirectory.mkdirs(); try ( Writer writer = new OutputStreamWriter( new FileOutputStream( targetFile ), getOutputEncoding() ) ) @@ -393,4 +430,82 @@ public class CpdReport return renderer; } + + + + + + private final List<Set<String>> exclusionList = new ArrayList<>(); + protected boolean isExcludedFromFailure( final Match errorDetail ) + { + final Set<String> uniquePaths = new HashSet<>(); + for ( Mark mark : errorDetail.getMarkSet() ) + { + uniquePaths.add( mark.getFilename() ); + } + 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; + } + + protected void loadExcludeFromFailuresData( final String excludeFromFailureFile ) + throws MojoExecutionException + { + try ( LineNumberReader reader = new LineNumberReader( new FileReader( excludeFromFailureFile ) ) ) + { + String line; + while ( ( line = reader.readLine() ) != null ) + { + if ( !line.startsWith( "#" ) ) + { + exclusionList.add( createSetFromExclusionLine( line ) ); + } + } + } + catch ( final IOException e ) + { + throw new MojoExecutionException( "Cannot load file " + excludeFromFailureFile, e ); + } + } + + private Set<String> createSetFromExclusionLine( final String line ) + { + final Set<String> result = new HashSet<>(); + for ( final String className : line.split( "," ) ) + { + result.add( className.trim() ); + } + return result; + } } 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=1762988&r1=1762987&r2=1762988&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 Sat Oct 1 09:29:45 2016 @@ -20,6 +20,7 @@ package org.apache.maven.plugin.pmd; */ import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -28,10 +29,16 @@ import java.io.PrintStream; import java.io.Writer; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Properties; import java.util.ResourceBundle; +import java.util.Set; +import java.util.Map.Entry; import net.sourceforge.pmd.PMD; import net.sourceforge.pmd.PMDConfiguration; @@ -40,6 +47,7 @@ import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.RulePriority; import net.sourceforge.pmd.RuleSetFactory; import net.sourceforge.pmd.RuleSetReferenceId; +import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.benchmark.Benchmarker; import net.sourceforge.pmd.benchmark.TextReport; import net.sourceforge.pmd.lang.LanguageRegistry; @@ -53,6 +61,7 @@ import net.sourceforge.pmd.util.datasour import net.sourceforge.pmd.util.datasource.FileDataSource; import org.apache.maven.doxia.sink.Sink; +import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; @@ -63,6 +72,7 @@ import org.codehaus.plexus.resource.load import org.codehaus.plexus.resource.loader.FileResourceLoader; import org.codehaus.plexus.resource.loader.ResourceNotFoundException; import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.StringUtils; @@ -297,6 +307,18 @@ public class PmdReport return; } + if ( !StringUtils.isEmpty( excludeFromFailureFile ) ) + { + try + { + loadExcludeFromFailuresData( excludeFromFailureFile ); + } + catch ( MojoExecutionException e ) + { + throw new MavenReportException( "Unable to load exclusions", e ); + } + } + // configure ResourceManager locator.addSearchPath( FileResourceLoader.ID, project.getFile().getParentFile().getAbsolutePath() ); locator.addSearchPath( "url", "" ); @@ -385,6 +407,16 @@ public class PmdReport getLog().warn( renderer.getErrorsAsString() ); } + Iterator<RuleViolation> violationIt = renderer.getViolations().iterator(); + while ( violationIt.hasNext() ) + { + RuleViolation rv = violationIt.next(); + if ( isExcludedFromFailure( rv ) ) + { + violationIt.remove(); + } + } + // if format is XML, we need to output it even if the file list is empty or we have no violations // so the "check" goals can check for violations if ( isXml() && renderer != null ) @@ -645,4 +677,76 @@ public class PmdReport return renderer; } + private final Map<String, Set<String>> excludeFromFailureClasses = new HashMap<>(); + + protected void loadExcludeFromFailuresData( final String excludeFromFailureFile ) + throws MojoExecutionException + { + File file = new File( excludeFromFailureFile ); + if ( !file.exists() ) + { + return; + } + final Properties props = new Properties(); + FileInputStream fileInputStream = null; + try + { + fileInputStream = new FileInputStream( new File( excludeFromFailureFile ) ); + props.load( fileInputStream ); + fileInputStream.close(); + fileInputStream = null; + } + catch ( final IOException e ) + { + throw new MojoExecutionException( "Cannot load properties file " + excludeFromFailureFile, e ); + } + finally + { + IOUtil.close( fileInputStream ); + } + for ( final Entry<Object, Object> propEntry : props.entrySet() ) + { + final Set<String> excludedRuleSet = new HashSet<>(); + 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 ); + } + } + + protected boolean isExcludedFromFailure( final RuleViolation errorDetail ) + { + final String className = extractClassName( errorDetail ); + final Set<String> excludedRuleSet = excludeFromFailureClasses.get( className ); + return excludedRuleSet != null && excludedRuleSet.contains( errorDetail.getRule().getName() ); + } + + private String extractClassName( final RuleViolation errorDetail ) + { + // for some reason, some violations don't contain the package name, so we have to guess the full class name + // this looks like a bug in PMD - at least for UnusedImport rule. + if ( StringUtils.isNotEmpty( errorDetail.getPackageName() ) + && StringUtils.isNotEmpty( errorDetail.getClassName() ) ) + { + return errorDetail.getPackageName() + "." + errorDetail.getClassName(); + } + else if ( StringUtils.isNotEmpty( errorDetail.getPackageName() ) ) + { + String fileName = errorDetail.getFilename(); + fileName = fileName.substring( fileName.lastIndexOf( File.separatorChar ) + 1 ); + fileName = fileName.substring( 0, fileName.length() - 5 ); + return errorDetail.getPackageName() + "." + fileName; + } + else + { + final String fileName = errorDetail.getFilename(); + final int javaIdx = fileName.indexOf( File.separator + "java" + File.separator ); + return fileName.substring( javaIdx >= 0 ? javaIdx + 6 : 0, fileName.length() - 5 ).replace( + File.separatorChar, '.' ); + } + } + } Modified: maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/CpdReportTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/CpdReportTest.java?rev=1762988&r1=1762987&r2=1762988&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/CpdReportTest.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/test/java/org/apache/maven/plugin/pmd/CpdReportTest.java Sat Oct 1 09:29:45 2016 @@ -37,6 +37,7 @@ import net.sourceforge.pmd.cpd.Mark; import net.sourceforge.pmd.cpd.Match; import net.sourceforge.pmd.cpd.TokenEntry; +import org.apache.commons.lang3.StringUtils; import org.codehaus.plexus.util.FileUtils; import org.w3c.dom.Document; @@ -304,6 +305,22 @@ public class CpdReportTest assertTrue( lowerCaseContains( str, "sampleDup.jsp" ) ); } + public void testExclusionsConfiguration() + throws Exception + { + File testPom = + new File( getBasedir(), + "src/test/resources/unit/default-configuration/cpd-report-cpd-exclusions-configuration-plugin-config.xml" ); + final CpdReport mojo = (CpdReport) lookupMojo( "cpd", testPom ); + mojo.execute(); + + // verify the generated file to exist and no duplications are reported + File generatedFile = new File( getBasedir(), "target/test/unit/default-configuration/target/cpd.xml" ); + assertTrue( FileUtils.fileExists( generatedFile.getAbsolutePath() ) ); + String str = readFile( generatedFile ); + assertEquals( 0, StringUtils.countMatches( str, "<duplication" ) ); + } + public static class MockCpd extends CPD { 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=1762988&r1=1762987&r2=1762988&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 Sat Oct 1 09:29:45 2016 @@ -106,10 +106,10 @@ public class CpdViolationCheckMojoTest testPom = new File( getBasedir(), - "src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml" ); + "src/test/resources/unit/default-configuration/cpd-check-cpd-exclusions-configuration-plugin-config.xml" ); final CpdViolationCheckMojo cpdViolationMojo = (CpdViolationCheckMojo) lookupMojo( "cpd-check", testPom ); - cpdViolationMojo.execute(); - assertTrue( true ); + // this call shouldn't throw an exception, as the classes with duplications have been excluded + cpdViolationMojo.execute(); } } 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=1762988&r1=1762987&r2=1762988&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 Sat Oct 1 09:29:45 2016 @@ -28,6 +28,7 @@ import java.nio.charset.StandardCharsets import java.util.Locale; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.IOUtil; @@ -457,4 +458,20 @@ public class PmdReportTest assertFalse( "Exclusion of an exact source directory not working", str.contains( "OverrideBothEqualsAndHashcode" ) ); assertFalse( "Exclusion of basedirectory with subdirectories not working (MPMD-178)", str.contains( "JumbledIncrementer") ); } + + public void testViolationExclusion() + throws Exception + { + File testPom = + new File( getBasedir(), + "src/test/resources/unit/default-configuration/pmd-report-pmd-exclusions-configuration-plugin-config.xml" ); + final PmdReport mojo = (PmdReport) lookupMojo( "pmd", testPom ); + mojo.execute(); + + File generatedFile = new File( getBasedir(), "target/test/unit/default-configuration/target/pmd.xml" ); + assertTrue( FileUtils.fileExists( generatedFile.getAbsolutePath() ) ); + String str = readFile( generatedFile ); + + assertEquals(0, StringUtils.countMatches(str, "<violation")); + } } 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=1762988&r1=1762987&r2=1762988&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 Sat Oct 1 09:29:45 2016 @@ -151,8 +151,8 @@ public class PmdViolationCheckMojoTest 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 ); + // this call shouldn't throw an exception, as the classes with violations have been excluded + pmdViolationMojo.execute(); } } Copied: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/cpd-check-cpd-exclusions-configuration-plugin-config.xml (from r1762963, 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/cpd-check-cpd-exclusions-configuration-plugin-config.xml?p2=maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/cpd-check-cpd-exclusions-configuration-plugin-config.xml&p1=maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml&r1=1762963&r2=1762988&rev=1762988&view=diff ============================================================================== (empty) Copied: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/cpd-report-cpd-exclusions-configuration-plugin-config.xml (from r1762963, 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/cpd-report-cpd-exclusions-configuration-plugin-config.xml?p2=maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/cpd-report-cpd-exclusions-configuration-plugin-config.xml&p1=maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml&r1=1762963&r2=1762988&rev=1762988&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/cpd-report-cpd-exclusions-configuration-plugin-config.xml Sat Oct 1 09:29:45 2016 @@ -24,7 +24,7 @@ under the License. <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <inceptionYear>2006</inceptionYear> - <name>Maven PMD Plugin Exclusions Configuration Test</name> + <name>Maven CPD Plugin Default Configuration Test</name> <url>http://maven.apache.org</url> <build> <finalName>default-configuration</finalName> @@ -32,15 +32,19 @@ under the License. <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"/> + <outputDirectory>${basedir}/target/test/unit/default-configuration/target/site</outputDirectory> <targetDirectory>${basedir}/target/test/unit/default-configuration/target</targetDirectory> - <failOnViolation>true</failOnViolation> - <verbose>false</verbose> - <language>java</language> - <printFailingErrors>true</printFailingErrors> + <format>xml</format> + <linkXRef>false</linkXRef> + <xrefLocation>${basedir}/target/test/unit/default-configuration/target/site/xref</xrefLocation> + <minimumTokens>100</minimumTokens> + + <compileSourceRoots> + <compileSourceRoot>${basedir}/src/test/resources/unit/default-configuration/</compileSourceRoot> + </compileSourceRoots> + <sourceEncoding>UTF-8</sourceEncoding> <excludeFromFailureFile>${basedir}/src/test/resources/unit/excludes/cpd_exclude.txt</excludeFromFailureFile> </configuration> </plugin> Copied: maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-report-pmd-exclusions-configuration-plugin-config.xml (from r1762963, 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-report-pmd-exclusions-configuration-plugin-config.xml?p2=maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-report-pmd-exclusions-configuration-plugin-config.xml&p1=maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml&r1=1762963&r2=1762988&rev=1762988&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-check-cpd-exclusions-configuration-plugin-config.xml (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/test/resources/unit/default-configuration/pmd-report-pmd-exclusions-configuration-plugin-config.xml Sat Oct 1 09:29:45 2016 @@ -24,7 +24,7 @@ under the License. <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <inceptionYear>2006</inceptionYear> - <name>Maven PMD Plugin Exclusions Configuration Test</name> + <name>Maven PMD Plugin Default Configuration Test</name> <url>http://maven.apache.org</url> <build> <finalName>default-configuration</finalName> @@ -32,17 +32,27 @@ under the License. <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"/> + <outputDirectory>${basedir}/target/test/unit/default-configuration/target/site</outputDirectory> <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> + <format>xml</format> + <linkXRef>true</linkXRef> + <xrefLocation>${basedir}/target/test/unit/default-configuration/target/site/xref</xrefLocation> + <sourceEncoding>UTF-8</sourceEncoding> + + <compileSourceRoots> + <compileSourceRoot>${basedir}/src/test/resources/unit/default-configuration/</compileSourceRoot> + </compileSourceRoots> + <excludeFromFailureFile>${basedir}/src/test/resources/unit/excludes/pmd_exclude.properties</excludeFromFailureFile> </configuration> + <dependencies> + <dependency> + <groupId>pmd</groupId> + <artifactId>pmd</artifactId> + <version>3.6</version> + </dependency> + </dependencies> </plugin> </plugins> </build>