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("<error ") 52 .append("filename=\""); 53 StringUtil.appendXmlEscaped(buf, pe.getFile()); 54 buf.append("\" msg=\""); 55 StringUtil.appendXmlEscaped(buf, pe.getMsg()); 56 buf.append("/>") 57 .append(PMD.EOL); 58 } 59 60 buf.append("</pmd>"); 61 return buf.toString(); 62 } 63 64 }

This page was automatically generated by Maven