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