01 /**
02 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
03 */
04 package net.sourceforge.pmd.renderers;
05
06 import java.io.IOException;
07 import java.util.Map;
08 import java.util.Properties;
09
10 import net.sourceforge.pmd.PMD;
11
12 /**
13 * Renderer to a summarized HTML format.
14 */
15 public class SummaryHTMLRenderer extends AbstractAccumulatingRenderer {
16
17 public static final String NAME = "summaryhtml";
18
19 public static final String LINK_PREFIX = HTMLRenderer.LINK_PREFIX;
20 public static final String LINE_PREFIX = HTMLRenderer.LINE_PREFIX;
21
22 public SummaryHTMLRenderer(Properties properties) {
23 super(NAME, "Summary HTML format.", properties);
24
25 // These properties are defined here, but used by the HTMLRenderer
26 super.defineProperty(HTMLRenderer.LINK_PREFIX, "Path to HTML source.");
27 super.defineProperty(HTMLRenderer.LINE_PREFIX, "Prefix for line number anchor in the source file.");
28 }
29
30 /**
31 * {@inheritDoc}
32 */
33 @Override
34 public void end() throws IOException {
35 writer.write("<html><head><title>PMD</title></head><body>" + PMD.EOL);
36 renderSummary();
37 writer.write("<h2><center>Detail</h2></center>");
38 writer.write("<table align=\"center\" cellspacing=\"0\" cellpadding=\"3\"><tr>" + PMD.EOL);
39 new HTMLRenderer(properties).renderBody(writer, report);
40 writer.write("</table></body></html>" + PMD.EOL);
41 }
42
43 /**
44 * Write a Summary HTML table.
45 *
46 * @throws IOException
47 */
48 public void renderSummary() throws IOException {
49 StringBuffer buf = new StringBuffer(500);
50 buf.append("<h2><center>Summary</h2></center>");
51 buf.append("<table align=\"center\" cellspacing=\"0\" cellpadding=\"3\">");
52 buf.append("<th>Rule name</th>");
53 buf.append("<th>Number of violations</th>");
54 writer.write(buf.toString());
55 Map<String, Integer> summary = report.getSummary();
56 for (Map.Entry<String, Integer> entry : summary.entrySet()) {
57 String ruleName = entry.getKey();
58 buf.setLength(0);
59 buf.append("<tr>");
60 buf.append("<td>" + ruleName + "</td>");
61 buf.append("<td align=center>" + entry.getValue().intValue() + "</td>");
62 buf.append("</tr>");
63 writer.write(buf.toString());
64 }
65 writer.write("</table>");
66 }
67 }
|