You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mp...@apache.org on 2006/01/09 00:27:32 UTC

svn commit: r367128 - in /maven/plugins/trunk/maven-pmd-plugin/src: main/java/org/apache/maven/plugin/pmd/PmdReport.java main/java/org/apache/maven/plugin/pmd/PmdReportListener.java site/apt/howto.apt

Author: mperham
Date: Sun Jan  8 15:27:28 2006
New Revision: 367128

URL: http://svn.apache.org/viewcvs?rev=367128&view=rev
Log:
MPMD-9
Submitted by: Nick Giles
Add JXR support to PMD report

Modified:
    maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
    maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.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=367128&r1=367127&r2=367128&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:27:28 2006
@@ -102,6 +102,20 @@
     private String[] rulesets = new String[] { "controversial" };
 
     /**
+     * Link the violation line numbers to the source xref.
+     * @parameter
+     * 
+     * TODO Can we automagically determine if xfer is being run and enable this?
+     */
+    private boolean linkXref;
+
+    /**
+     * The location of the xref pages relative to the location of the pmd report.
+     * @parameter
+     */
+    private String xrefLocation = "xref";
+    
+    /**
      * @see org.apache.maven.reporting.MavenReport#getName(java.util.Locale)
      */
     public String getName( Locale locale )
@@ -160,6 +174,11 @@
         // TODO: use source roots instead
         String sourceDirectory = getProject().getBuild().getSourceDirectory();
         PmdReportListener reportSink = new PmdReportListener( sink, sourceDirectory, getBundle( locale ) );
+        if ( linkXref )
+        {
+            reportSink.setXrefLocation( xrefLocation );
+        }
+
         report.addListener( reportSink );
         ruleContext.setReport( report );
         reportSink.beginDocument();

Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java?rev=367128&r1=367127&r2=367128&view=diff
==============================================================================
--- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java (original)
+++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java Sun Jan  8 15:27:28 2006
@@ -50,6 +50,8 @@
 
     private ResourceBundle bundle;
 
+    private String xrefLocation;
+
     private List violations = new ArrayList();
 
     private List metrics = new ArrayList();
@@ -111,8 +113,18 @@
             sink.text( ruleViolation.getDescription() );
             sink.tableCell_();
             sink.tableCell();
-            // TODO: xref link the line number
+
+            if ( getXrefLocation() != null )
+            {
+                sink.link( getXrefLocation() + "/" + currentFilename.replaceAll( "\\.java$", ".html" ) + "#"
+                    + ruleViolation.getLine() );
+            }
             sink.text( String.valueOf( ruleViolation.getLine() ) );
+            if ( getXrefLocation() != null )
+            {
+                sink.link_();
+            }
+
             sink.tableCell_();
             sink.tableRow_();
         }
@@ -121,9 +133,10 @@
 
     public void metricAdded( Metric metric )
     {
-        if (metric.getCount() != 0) {
+        if ( metric.getCount() != 0 )
+        {
             // Skip metrics which have no data
-            metrics.add(metric);
+            metrics.add( metric );
         }
     }
 
@@ -239,5 +252,15 @@
         sink.flush();
 
         sink.close();
+    }
+
+    public String getXrefLocation()
+    {
+        return xrefLocation;
+    }
+
+    public void setXrefLocation( String xrefLocation )
+    {
+        this.xrefLocation = xrefLocation;
     }
 }

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=367128&r1=367127&r2=367128&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:27:28 2006
@@ -18,6 +18,9 @@
   PMD rulesets and output the report in XML format.  The rulesets are assumed to reside in /rulesets/[name].xml 
   in the classpath.  Note that HTML is always generated in addition to any other alternate format.  Legal formats
   are "html", "csv", "xml" and "txt".
+  
+  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.
 
 +--------
     <reporting>
@@ -31,6 +34,7 @@
                         <ruleset>controversial</ruleset>
                     </rulesets>
                     <format>xml</format>
+                    <linkXref>true</linkXref>
                 </configuration>
             </plugin>
         </plugins>