Author: mperham Date: Sun Jan 8 15:59:54 2006 New Revision: 367134 URL: http://svn.apache.org/viewcvs?rev=367134&view=rev Log: PR: MPMD-7 Submitted by: Christian Schulte Add support for configurable source encodings
Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java maven/plugins/trunk/maven-pmd-plugin/src/site/apt/howto.apt Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java?rev=367134&r1=367133&r2=367134&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java Sun Jan 8 15:59:54 2006 @@ -17,11 +17,15 @@ */ import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.UnsupportedEncodingException; import java.io.Writer; import java.util.Collections; import java.util.Iterator; @@ -116,6 +120,12 @@ private String xrefLocation = "xref"; /** + * The file encoding to use when reading the java source. + * @parameter + */ + private String sourceEncoding; + + /** * @see org.apache.maven.reporting.MavenReport#getName(java.util.Locale) */ public String getName( Locale locale ) @@ -203,6 +213,8 @@ InputStream rulesInput = pmd.getClass().getResourceAsStream( location ); sets[idx] = ruleSetFactory.createRuleSet( rulesInput ); } + + boolean hasEncoding = sourceEncoding != null; for ( Iterator i = files.iterator(); i.hasNext(); ) { @@ -216,8 +228,18 @@ ruleContext.setSourceCodeFilename( file.getAbsolutePath() ); for ( int idx = 0; idx < rulesets.length; idx++ ) { - // PMD closes this Reader even though it did not open it. - pmd.processFile( new FileReader( file ), sets[idx], ruleContext ); + try + { + // PMD closes this Reader even though it did not open it so we have + // to open a new one with every call to processFile(). + Reader reader = hasEncoding ? new InputStreamReader( new FileInputStream( file ), sourceEncoding ) + : new FileReader( file ); + pmd.processFile( reader, sets[idx], ruleContext ); + } + catch ( UnsupportedEncodingException e1 ) + { + throw new MavenReportException( "Encoding '" + sourceEncoding + "' is not supported.", e1 ); + } } reportSink.endFile( file ); } Modified: maven/plugins/trunk/maven-pmd-plugin/src/site/apt/howto.apt URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-pmd-plugin/src/site/apt/howto.apt?rev=367134&r1=367133&r2=367134&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/site/apt/howto.apt (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/site/apt/howto.apt Sun Jan 8 15:59:54 2006 @@ -22,6 +22,9 @@ The PMD report will link directly to the cross-referenced source if you enable this with the linkXref parameter. See the {{{http://mojo.codehaus.org/jxr-maven-plugin/}JXR}} plugin for more details. + If your source uses a non-default encoding, you can use the sourceEncoding parameter to tell Maven which + encoding to use when reading the java source. + +-------- <reporting> <plugins> @@ -35,6 +38,7 @@ </rulesets> <format>xml</format> <linkXref>true</linkXref> + <sourceEncoding>utf-8</sourceEncoding> </configuration> </plugin> </plugins>