You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ad...@apache.org on 2016/10/01 09:29:45 UTC
svn commit: r1762988 - in /maven/plugins/trunk/maven-pmd-plugin/src:
main/java/org/apache/maven/plugin/pmd/ test/java/org/apache/maven/plugin/pmd/
test/resources/unit/default-configuration/
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>