View Javadoc
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