View Javadoc

1   /***
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd.renderers;
5   
6   import net.sourceforge.pmd.PMD;
7   import net.sourceforge.pmd.Report;
8   import net.sourceforge.pmd.IRuleViolation;
9   
10  import java.util.Iterator;
11  
12  /***
13   * <P>A Renderer for running PMD via a TextPad 'tool'.  <a href="http://www.textpad.com">TextPad</a> is a text editor by Helios Software Solutions.</P>
14   * <p/>
15   * <P>Output lines are in the form:</P>
16   * <p/>
17   * <P><CODE>pathtojavafile(line#, NameOfRule):&nbsp; Specific rule violation message</CODE></P>
18   * <p/>
19   * <P>For example:</P>
20   * <p/>
21   * <P><CODE>D:\java\pmd\src\src\net\sourceforge\pmd\renderers\TextPadRenderer.java(24, AtLeastOneConstructor):&nbsp; Each class should declare at least one constructor
22   * <br>D:\java\pmd\src\src\net\sourceforge\pmd\renderers\TextPadRenderer.java(26, VariableNamingConventionsRule):&nbsp; Variables should start with a lowercase character
23   * <br>D:\java\pmd\src\src\net\sourceforge\pmd\renderers\TextPadRenderer.java(31, ShortVariable):&nbsp; Avoid variables with short names</CODE></P>
24   *
25   * @author Jeff Epstein, based upon <a href="EmacsRenderer.html">EmacsRenderer</a>, Tuesday, September 23, 2003
26   */
27  public class TextPadRenderer extends AbstractRenderer implements Renderer {
28      public String render(Report report) {
29          StringBuffer buf = new StringBuffer();
30          Iterator i;
31          try {
32              i = report.iterator();
33          } catch (NullPointerException npx) {
34              throw new NullPointerException("ERROR in " + this.getClass().getName() + ".render:  Parameter report is null.");
35          }
36          while (i.hasNext()) {
37              IRuleViolation rv = (IRuleViolation) i.next();
38              //Filename
39              buf.append(PMD.EOL).append(rv.getFilename() + "(");
40              //Line number
41              buf.append(Integer.toString(rv.getBeginLine())).append(",  ");
42              //Name of violated rule
43              buf.append(rv.getRule().getName()).append("):  ");
44              //Specific violation message
45              buf.append(rv.getDescription());
46          }
47          return buf.toString();
48      }
49  }