1 package net.sourceforge.pmd.swingui;
2
3 import net.sourceforge.pmd.Report;
4 import net.sourceforge.pmd.Rule;
5 import net.sourceforge.pmd.RuleViolation;
6
7 import java.io.StringWriter;
8 import java.util.Iterator;
9
10 /***
11 *
12 * Converts the violations list into a text string for viewing.
13 *
14 * @author Donald A. Leckie
15 * @since August 17, 2002
16 * @version $Revision: 1.9 $, $Date: 2003/03/14 19:04:12 $
17 */
18 class TextRenderer {
19
20 private boolean m_reportNoViolations;
21 private StringWriter m_writer;
22
23 /***
24 *******************************************************************************
25 *
26 */
27 protected void beginRendering(boolean reportNoViolations) {
28 m_reportNoViolations = reportNoViolations;
29 m_writer = new StringWriter(25000);
30 }
31
32 /***
33 *******************************************************************************
34 *
35 * @return Results text.
36 */
37 protected String endRendering() {
38 return m_writer.toString();
39 }
40
41 /***
42 *******************************************************************************
43 *
44 * @param report
45 */
46 public void render(String fileName, Report report) {
47 Iterator violations = report.iterator();
48
49 if (violations.hasNext() == false) {
50 if (m_reportNoViolations) {
51 m_writer.write("Source File: ");
52 m_writer.write(fileName);
53 m_writer.write('\n');
54 m_writer.write("\nNo rule violations detected.");
55 }
56
57 return;
58 }
59
60 m_writer.write("Source File: ");
61 m_writer.write(fileName);
62 m_writer.write('\n');
63
64 while (violations.hasNext()) {
65 RuleViolation ruleViolation = (RuleViolation) violations.next();
66 Rule rule = ruleViolation.getRule();
67
68 //
69 // Line Number
70 //
71 m_writer.write('\n');
72 m_writer.write("Line: ");
73 m_writer.write(ruleViolation.getLine());
74 m_writer.write('\n');
75
76 //
77 // Rule Message
78 //
79 String ruleMessage = ruleViolation.getDescription();
80
81 if (ruleMessage == null) {
82 ruleMessage = "";
83 } else {
84 ruleMessage = ruleMessage.replace('\n', ' ').trim();
85 }
86
87 m_writer.write("Rule: ");
88 m_writer.write(ruleMessage);
89 m_writer.write('\n');
90
91 //
92 // Rule Priority
93 //
94 m_writer.write("Rule Priority: ");
95 m_writer.write(rule.getPriorityName());
96 m_writer.write('\n');
97
98 //
99 // Rule Description
100 //
101 String description = rule.getDescription();
102
103 if (description == null) {
104 description = "";
105 } else {
106 description = description.replace('\n', ' ').trim();
107 }
108
109 m_writer.write("Description: ");
110 m_writer.write(description);
111 m_writer.write('\n');
112
113 //
114 // Rule Example
115 //
116 String example = rule.getExample();
117
118 if ((example != null) && (example.length() > 0)) {
119 m_writer.write("Example: ");
120 m_writer.write(example);
121 m_writer.write('\n');
122 }
123 }
124
125 //
126 // Space separation between rules.
127 //
128 m_writer.write("\n\n\n");
129 }
130 }
This page was automatically generated by Maven