Clover coverage report - PMD - 3.3
Coverage timestamp: Thu Sep 15 2005 17:59:57 EDT
file stats: LOC: 74   Methods: 5
NCLOC: 58   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
HTMLRenderer.java 0% 5.9% 40% 8.5%
coverage coverage
 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 HTMLRenderer implements Renderer {
 14   
 15    private String linkPrefix;
 16   
 17  2 public HTMLRenderer(String linkPrefix) {
 18  2 this.linkPrefix = linkPrefix;
 19    }
 20   
 21  1 public HTMLRenderer() {
 22  1 this(null);
 23    }
 24   
 25  0 public String render(Report report) {
 26  0 StringBuffer buf = new StringBuffer("<html><head><title>PMD</title></head><body>" + PMD.EOL + "<table align=\"center\" cellspacing=\"0\" cellpadding=\"3\"><tr>" + PMD.EOL + "<th>#</th><th>File</th><th>Line</th><th>Problem</th></tr>" + PMD.EOL);
 27  0 buf.append(renderBody(report));
 28  0 buf.append("</table></body></html>");
 29  0 return buf.toString();
 30    }
 31   
 32  0 public String renderBody(Report report) {
 33  0 boolean colorize = true;
 34  0 int violationCount = 1;
 35  0 StringBuffer buf = new StringBuffer();
 36  0 for (Iterator i = report.iterator(); i.hasNext();) {
 37  0 RuleViolation rv = (RuleViolation) i.next();
 38  0 buf.append("<tr");
 39  0 if (colorize) {
 40  0 buf.append(" bgcolor=\"lightgrey\"");
 41  0 colorize = false;
 42    } else {
 43  0 colorize = true;
 44    }
 45  0 buf.append("> " + PMD.EOL);
 46  0 buf.append("<td align=\"center\">" + violationCount + "</td>" + PMD.EOL);
 47  0 buf.append("<td width=\"*%\">" + maybeWrap(rv.getFilename(), Integer.toString(rv.getLine())) + "</td>" + PMD.EOL);
 48  0 buf.append("<td align=\"center\" width=\"5%\">" + Integer.toString(rv.getLine()) + "</td>" + PMD.EOL);
 49   
 50  0 String d = rv.getDescription();
 51  0 d = StringUtil.replaceString(d, '&', "&amp;");
 52  0 d = StringUtil.replaceString(d, '<', "&lt;");
 53  0 d = StringUtil.replaceString(d, '>', "&gt;");
 54  0 if (rv.getRule().getExternalInfoUrl() != null && rv.getRule().getExternalInfoUrl().length() != 0) {
 55  0 d = "<a href=\"" + rv.getRule().getExternalInfoUrl() + "\">" + d + "</a>";
 56    }
 57   
 58  0 buf.append("<td width=\"*\">" + d + "</td>" + PMD.EOL);
 59   
 60  0 buf.append("</tr>" + PMD.EOL);
 61   
 62  0 violationCount++;
 63    }
 64  0 return buf.toString();
 65    }
 66   
 67  0 private String maybeWrap(String filename, String line) {
 68  0 if (linkPrefix == null) {
 69  0 return filename;
 70    }
 71  0 String newFileName = filename.substring(0, filename.indexOf(".java"));
 72  0 return "<a href=\"" + linkPrefix + newFileName + ".html#" + line + "\">" + newFileName + "</a>";
 73    }
 74    }