[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