1
2
3
4 package net.sourceforge.pmd.renderers;
5
6 import java.io.IOException;
7 import java.io.Writer;
8 import java.util.Iterator;
9
10 import net.sourceforge.pmd.PMD;
11 import net.sourceforge.pmd.Report;
12 import net.sourceforge.pmd.RuleViolation;
13
14
15
16
17 public class TextRenderer extends AbstractIncrementingRenderer {
18
19 public static final String NAME = "text";
20
21 public TextRenderer() {
22 super(NAME, "Text format.");
23 }
24
25
26 public String defaultFileExtension() { return "txt"; }
27
28
29
30
31 @Override
32 public void start() throws IOException {
33 }
34
35
36
37
38 @Override
39 public void renderFileViolations(Iterator<RuleViolation> violations) throws IOException {
40 Writer writer = getWriter();
41 StringBuilder buf = new StringBuilder();
42
43 while (violations.hasNext()) {
44 buf.setLength(0);
45 RuleViolation rv = violations.next();
46 buf.append(rv.getFilename());
47 buf.append(':').append(Integer.toString(rv.getBeginLine()));
48 buf.append(":\t").append(rv.getDescription()).append(PMD.EOL);
49 writer.write(buf.toString());
50 }
51 }
52
53
54
55
56 @Override
57 public void end() throws IOException {
58 Writer writer = getWriter();
59 StringBuilder buf = new StringBuilder(500);
60 if (!errors.isEmpty()) {
61
62 for (Report.ProcessingError error : errors) {
63 buf.setLength(0);
64 buf.append(error.getFile());
65 buf.append("\t-\t").append(error.getMsg()).append(PMD.EOL);
66 writer.write(buf.toString());
67 }
68 }
69
70 for (Report.SuppressedViolation excluded : suppressed) {
71 buf.setLength(0);
72 buf.append(excluded.getRuleViolation().getRule().getName());
73 buf.append(" rule violation suppressed by ");
74 buf.append(excluded.suppressedByNOPMD() ? "//NOPMD" : "Annotation");
75 buf.append(" in ").append(excluded.getRuleViolation().getFilename()).append(PMD.EOL);
76 writer.write(buf.toString());
77 }
78 }
79
80 }