blob: c068c6f2d5512e16de27cc3e099632b39d8b45fd [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!-- Stylesheet to turn the XML output of CPD into a nice-looking HTML page -->
<!-- $Id: cpdhtml.xslt 4492 2006-08-14 14:09:56Z tomcopeland $ -->
<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>