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.IRuleViolation; 9 10 import java.util.Iterator; 11 12 public class TextRenderer extends AbstractRenderer implements Renderer { 13 14 public String render(Report report) { 15 StringBuffer buf = new StringBuffer(); 16 17 if (report.isEmpty()) { 18 buf.append("No problems found!"); 19 if (showSuppressedViolations) { 20 addSuppressed(report, buf); 21 } 22 return buf.toString(); 23 } 24 25 for (Iterator i = report.iterator(); i.hasNext();) { 26 IRuleViolation rv = (IRuleViolation) i.next(); 27 buf.append(PMD.EOL + rv.getFilename()); 28 buf.append(":" + Integer.toString(rv.getBeginLine())); 29 buf.append("\t" + rv.getDescription()); 30 } 31 32 for (Iterator i = report.errors(); i.hasNext();) { 33 Report.ProcessingError error = (Report.ProcessingError) i.next(); 34 buf.append(PMD.EOL + error.getFile()); 35 buf.append("\t-"); 36 buf.append("\t" + error.getMsg()); 37 } 38 39 if (showSuppressedViolations) { 40 addSuppressed(report, buf); 41 } 42 43 return buf.toString(); 44 } 45 46 private void addSuppressed(Report report, StringBuffer buf) { 47 for (Iterator i = report.getSuppressedRuleViolations().iterator(); i.hasNext();) { 48 Report.SuppressedViolation excluded = (Report.SuppressedViolation) i.next(); 49 buf.append(PMD.EOL + excluded.getRuleViolation().getRule().getName() + " rule violation suppressed by " + (excluded.suppressedByNOPMD() ? "//NOPMD" : "Annotation") + " in " + excluded.getRuleViolation().getFilename()); 50 } 51 } 52 }