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.IRuleViolation;
7   import net.sourceforge.pmd.PMD;
8   import net.sourceforge.pmd.Report;
9   
10  import java.io.IOException;
11  import java.io.Writer;
12  import java.util.Iterator;
13  
14  public class TextRenderer extends AbstractRenderer {
15  
16      public void render(Writer writer, Report report) throws IOException {
17          StringBuffer buf = new StringBuffer();
18  
19          if (report.isEmpty()) {
20              buf.append("No problems found!");
21              if (showSuppressedViolations) {
22                  addSuppressed(report, buf);
23              }
24              writer.write(buf.toString());
25              return;
26          }
27          Iterator i;
28          
29          for (i = report.iterator(); i.hasNext();) {
30              buf.setLength(0);
31              IRuleViolation rv = (IRuleViolation) i.next();
32              buf.append(PMD.EOL).append(rv.getFilename());
33              buf.append(':').append(Integer.toString(rv.getBeginLine()));
34              buf.append('\t').append(rv.getDescription());
35              writer.write(buf.toString());
36          }
37  
38          for (i = report.errors(); i.hasNext();) {
39              buf.setLength(0);
40              Report.ProcessingError error = (Report.ProcessingError) i.next();
41              buf.append(PMD.EOL).append(error.getFile());
42              buf.append("\t-\t").append(error.getMsg());
43              writer.write(buf.toString());
44          }
45  
46          if (showSuppressedViolations) {
47              buf.setLength(0);
48              addSuppressed(report, buf);
49              writer.write(buf.toString());
50          }
51      }
52  
53      private void addSuppressed(Report report, StringBuffer buf) {
54      	
55      	Report.SuppressedViolation excluded;
56      	
57          for (Iterator i = report.getSuppressedRuleViolations().iterator(); i.hasNext();) {
58              excluded = (Report.SuppressedViolation) i.next();
59              buf.append(PMD.EOL);
60              buf.append(excluded.getRuleViolation().getRule().getName());
61              buf.append(" rule violation suppressed by ");
62              buf.append(excluded.suppressedByNOPMD() ? "//NOPMD" : "Annotation");
63              buf.append(" in ").append(excluded.getRuleViolation().getFilename());
64          }
65      }
66  }