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