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 2017/12/16 20:53:01 UTC
[maven-pmd-plugin] 03/03: [MPMD-246] Output details of processing
errors
This is an automated email from the ASF dual-hosted git repository.
adangel pushed a commit to branch MPMD-246
in repository https://gitbox.apache.org/repos/asf/maven-pmd-plugin.git
commit e4be7da1cd940f6499fb2525e0aee87e31814b7e
Author: Andreas Dangel <ad...@apache.org>
AuthorDate: Fri Dec 15 19:58:08 2017 +0100
[MPMD-246] Output details of processing errors
Add new parameter "renderProcessingErrors"
---
.../org/apache/maven/plugins/pmd/PmdReport.java | 17 +++++++-
.../apache/maven/plugins/pmd/PmdReportTest.java | 36 ++++++++++++++++
...md-processing-error-no-report-plugin-config.xml | 50 ++++++++++++++++++++++
3 files changed, 102 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/maven/plugins/pmd/PmdReport.java b/src/main/java/org/apache/maven/plugins/pmd/PmdReport.java
index 4152070..ae2a96a 100644
--- a/src/main/java/org/apache/maven/plugins/pmd/PmdReport.java
+++ b/src/main/java/org/apache/maven/plugins/pmd/PmdReport.java
@@ -206,6 +206,18 @@ public class PmdReport
private String analysisCacheLocation;
/**
+ * Also render processing errors into the HTML report.
+ * Processing errors are problems, that PMD encountered while executing the rules.
+ * It can be parsing errors or exceptions during rule execution.
+ * Processing errors indicate a bug in PMD and the information provided help in
+ * reporting and fixing bugs in PMD.
+ *
+ * @since 3.9.0
+ */
+ @Parameter( property = "pmd.renderProcessingErrors", defaultValue = "true" )
+ private boolean renderProcessingErrors = true;
+
+ /**
* {@inheritDoc}
*/
public String getName( Locale locale )
@@ -505,7 +517,10 @@ public class PmdReport
PmdReportGenerator doxiaRenderer = new PmdReportGenerator( getLog(), sink, getBundle( locale ), aggregate );
doxiaRenderer.setFiles( filesToProcess );
doxiaRenderer.setViolations( renderer.getViolations() );
- doxiaRenderer.setProcessingErrors( renderer.getErrors() );
+ if ( renderProcessingErrors )
+ {
+ doxiaRenderer.setProcessingErrors( renderer.getErrors() );
+ }
try
{
diff --git a/src/test/java/org/apache/maven/plugins/pmd/PmdReportTest.java b/src/test/java/org/apache/maven/plugins/pmd/PmdReportTest.java
index 9096c8c..0ba7bbc 100644
--- a/src/test/java/org/apache/maven/plugins/pmd/PmdReportTest.java
+++ b/src/test/java/org/apache/maven/plugins/pmd/PmdReportTest.java
@@ -494,6 +494,42 @@ public class PmdReportTest
}
}
+ public void testPMDProcessingErrorWithDetailsNoReport()
+ throws Exception
+ {
+ File testPom = new File( getBasedir(),
+ "src/test/resources/unit/processing-error/pmd-processing-error-no-report-plugin-config.xml" );
+ PmdReport mojo = (PmdReport) lookupMojo( "pmd", testPom );
+
+ PrintStream originalOut = System.out;
+ ByteArrayOutputStream logging = new ByteArrayOutputStream();
+ System.setOut( new PrintStream( logging ) );
+
+ try {
+ mojo.execute();
+ String output = logging.toString();
+ assertTrue ( output.contains( "There are 1 PMD processing errors:" ) );
+
+ File generatedFile = new File( getBasedir(), "target/test/unit/parse-error/target/pmd.xml" );
+ assertTrue( FileUtils.fileExists( generatedFile.getAbsolutePath() ) );
+ String str = readFile( generatedFile );
+ assertTrue( str.contains( "Error while parsing" ) );
+ // The parse exception must be in the XML report
+ assertTrue( str.contains( "ParseException: Encountered \"\" at line 23, column 5." ) );
+
+ generatedFile = new File( getBasedir(), "target/test/unit/default-configuration/target/site/pmd.html" );
+ renderer( mojo, generatedFile );
+ assertTrue( FileUtils.fileExists( generatedFile.getAbsolutePath() ) );
+ str = readFile( generatedFile );
+ // The parse exception must NOT be in the HTML report, since reportProcessingErrors is false
+ assertFalse( str.contains( "ParseException: Encountered \"\" at line 23, column 5." ) );
+
+ } finally {
+ System.setOut( originalOut );
+ System.out.println( logging.toString() );
+ }
+ }
+
public void testPMDExcludeRootsShouldExcludeSubdirectories() throws Exception {
File testPom = new File(getBasedir(), "src/test/resources/unit/exclude-roots/pmd-exclude-roots-plugin-config.xml");
PmdReport mojo = (PmdReport) lookupMojo ("pmd", testPom);
diff --git a/src/test/resources/unit/processing-error/pmd-processing-error-no-report-plugin-config.xml b/src/test/resources/unit/processing-error/pmd-processing-error-no-report-plugin-config.xml
new file mode 100644
index 0000000..77953cf
--- /dev/null
+++ b/src/test/resources/unit/processing-error/pmd-processing-error-no-report-plugin-config.xml
@@ -0,0 +1,50 @@
+<!--
+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>parse.error.configuration</groupId>
+ <artifactId>parse-error-configuration</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <inceptionYear>2006</inceptionYear>
+ <name>Maven PMD Plugin Parse Error Test</name>
+ <url>http://maven.apache.org</url>
+ <build>
+ <finalName>parse-error</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-pmd-plugin</artifactId>
+ <configuration>
+ <project implementation="org.apache.maven.plugins.pmd.stubs.DefaultConfigurationMavenProjectStub"/>
+ <outputDirectory>${basedir}/target/test/unit/parse-error/target/site</outputDirectory>
+ <targetDirectory>${basedir}/target/test/unit/parse-error/target</targetDirectory>
+ <format>xml</format>
+ <sourceEncoding>UTF-8</sourceEncoding>
+ <skipPmdError>true</skipPmdError>
+ <renderProcessingErrors>false</renderProcessingErrors>
+ <compileSourceRoots>
+ <compileSourceRoot>${basedir}/src/test/resources/unit/processing-error/src</compileSourceRoot>
+ </compileSourceRoots>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
--
To stop receiving notification emails like this one, please contact
"commits@maven.apache.org" <co...@maven.apache.org>.