[jsword-svn] r1158 - trunk/jsword-support/tools/pmd
dmsmith at www.crosswire.org
dmsmith at www.crosswire.org
Fri Oct 13 13:48:58 MST 2006
Author: dmsmith
Date: 2006-10-13 13:48:53 -0700 (Fri, 13 Oct 2006)
New Revision: 1158
Added:
trunk/jsword-support/tools/pmd/cpdhtml.xslt
Log:
Add a new report form for CPD.
Added: trunk/jsword-support/tools/pmd/cpdhtml.xslt
===================================================================
--- trunk/jsword-support/tools/pmd/cpdhtml.xslt 2006-10-13 20:43:58 UTC (rev 1157)
+++ trunk/jsword-support/tools/pmd/cpdhtml.xslt 2006-10-13 20:48:53 UTC (rev 1158)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Stylesheet to turn the XML output of CPD into a nice-looking HTML page -->
+<!-- $Id: cpdhtml.xslt,v 1.1 2006/08/14 14:09:56 tomcopeland Exp $ -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="html" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+ doctype-system="http://www.w3.org/TR/html4/loose.dtd" indent="yes"/>
+
+<xsl:template match="pmd-cpd">
+<html>
+ <head>
+ <script type="text/javascript">
+ function toggleCodeSection(btn, id)
+ {
+ area = document.getElementById(id);
+ if (area.style.display == 'none')
+ {
+ btn.innerHTML = '-';
+ area.style.display = 'inline';
+ }
+ else
+ {
+ btn.innerHTML = '+';
+ area.style.display = 'none';
+ }
+ }
+ </script>
+ <style>
+ .SummaryTitle { }
+ .SummaryNumber { background-color:#DDDDDD; text-align: center; }
+ .ItemNumber { background-color: #DDDDDD; }
+ .CodeFragment { background-color: #BBBBBB; display:none; font:normal normal normal 9pt Courier; }
+ .ExpandButton { background-color: #FFFFFF; font-size: 8pt; width: 20px; height: 20px; margin:0px; }
+ </style>
+ </head>
+<body>
+ <h2>Summary of duplicated code</h2>
+ This page summarizes the code fragments that have been found to be replicated in the code.
+ Only those fragments longer than 30 lines of code are shown.
+ <p/>
+ <table border="1" class="summary" cellpadding="2">
+ <tr style="background-color:#CCCCCC;">
+ <th># duplications</th>
+ <th>Total lines</th>
+ <th>Total tokens</th>
+ <th>Approx # bytes</th>
+ </tr>
+ <tr>
+ <td class="SummaryNumber"><xsl:value-of select="count(//duplication[@lines>30])"/></td>
+ <td class="SummaryNumber"><xsl:value-of select="sum(//duplication[@lines>30]/@lines)"/></td>
+ <td class="SummaryNumber"><xsl:value-of select="sum(//duplication[@lines>30]/@tokens)"/></td>
+ <td class="SummaryNumber"><xsl:value-of select="sum(//duplication[@lines>30]/@tokens) * 4"/></td>
+ </tr>
+ </table>
+ <p/>
+ You expand and collapse the code fragments using the + buttons. You can also navigate to the source code by clicking
+ on the file names.
+ <p/>
+ <table>
+ <tr style="background-color: #444444; color: #DDDDDD;"><td>ID</td><td>Files</td><td>Lines</td></tr>
+ <xsl:for-each select="//duplication[@lines>30]">
+ <xsl:sort data-type="number" order="descending" select="@lines"/>
+ <tr>
+ <td class="ItemNumber"><xsl:value-of select="position()"/></td>
+ <td>
+ <table>
+ <xsl:for-each select="file">
+ <tr><td><a><xsl:attribute name="href">../src/<xsl:value-of select="@path"/>.html#<xsl:value-of select="@line"/></xsl:attribute><xsl:value-of select="@path"/></a></td><td> line <xsl:value-of select="@line"/></td></tr>
+ </xsl:for-each>
+ </table>
+ </td>
+ <td># lines : <xsl:value-of select="@lines"/></td>
+ </tr>
+ <tr>
+ <td> </td>
+ <td colspan="2" valign="top">
+ <table><tr>
+ <td valign="top">
+ <button class="ExpandButton" ><xsl:attribute name="onclick">blur(); toggleCodeSection(this, 'frag_<xsl:value-of select="position()"/>')</xsl:attribute>+</button>
+ </td>
+ <td>
+ <textarea cols="100" rows="30" wrap="off" class='CodeFragment' style='display:none;'>
+ <xsl:attribute name="id">frag_<xsl:value-of select="position()"/></xsl:attribute>
+ <xsl:value-of select="codefragment"/>
+ </textarea>
+ </td>
+ </tr></table>
+ </td>
+ </tr>
+ <tr><td colspan="2"><hr/></td></tr>
+ </xsl:for-each>
+ </table>
+
+
+</body>
+</html>
+</xsl:template>
+
+</xsl:stylesheet>
More information about the jsword-svn
mailing list