1 package net.sourceforge.pmd.renderers;
2
3 import net.sourceforge.pmd.PMD;
4 import net.sourceforge.pmd.Report;
5 import net.sourceforge.pmd.RuleViolation;
6 import net.sourceforge.pmd.util.StringUtil;
7
8 import java.util.Iterator;
9
10 public class XMLRenderer implements Renderer {
11
12 public String render(Report report) {
13 StringBuffer buf = new StringBuffer("<?xml version=\"1.0\"?><pmd>" + PMD.EOL);
14 String filename = "*start*";
15
16 // rule violations
17 for (Iterator i = report.iterator(); i.hasNext();) {
18 RuleViolation rv = (RuleViolation) i.next();
19 if (!rv.getFilename().equals(filename)) { // New File
20 if (!filename.equals("*start*")) {
21 buf.append("</file>");
22 }
23 filename = rv.getFilename();
24 buf.append("<file name=\"" + filename + "\">");
25 buf.append(PMD.EOL);
26 }
27
28 buf.append("<violation ");
29 buf.append("line=\"" + Integer.toString(rv.getLine()) + "\" ");
30 buf.append("rule=\"" + rv.getRule().getName() + "\">");
31 buf.append(PMD.EOL);
32
33 String d = rv.getDescription();
34 d = StringUtil.replaceString(d, '&', "&");
35 d = StringUtil.replaceString(d, '<', "<");
36 d = StringUtil.replaceString(d, '>', ">");
37 buf.append(d);
38
39 buf.append(PMD.EOL);
40 buf.append("</violation>");
41 buf.append(PMD.EOL);
42 }
43 if (!filename.equals("*start*")) {
44 buf.append("</file>");
45 }
46
47 // errors
48 for (Iterator i = report.errors(); i.hasNext();) {
49 Report.ProcessingError pe = (Report.ProcessingError) i.next();
50 buf.append(PMD.EOL);
51 buf.append("<error ");
52 buf.append(PMD.EOL);
53 String attrs = "filename=\"" + pe.getFile() + "\" msg=\"" + pe.getMsg() + "\"";
54 attrs = StringUtil.replaceString(attrs, '&', "&");
55 attrs = StringUtil.replaceString(attrs, '<', "<");
56 attrs = StringUtil.replaceString(attrs, '>', ">");
57 buf.append(attrs);
58 buf.append(PMD.EOL);
59 buf.append("/>");
60 buf.append(PMD.EOL);
61 }
62
63 buf.append("</pmd>");
64 return buf.toString();
65 }
66
67 }
This page was automatically generated by Maven