Skip to content

Instantly share code, notes, and snippets.

@nalanj
Created February 5, 2010 15:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nalanj/295847 to your computer and use it in GitHub Desktop.
Save nalanj/295847 to your computer and use it in GitHub Desktop.
CruiseControl.NET Project Dashboard XSLT for NCover
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table cellspacing="0" cellpadding="2" border="0" width="98%" class="section-table">
<col style="width: 1em;" />
<col style="width: 1em;" />
<col style="width: 1em;" />
<col style="width: 1em;" />
<col style="width: 100%;" />
<tbody>
<tr>
<td colspan="5" class="sectionheader">
NCover Code Coverage
</td>
</tr>
<tr>
<th style="white-space: nowrap;padding: 2px 8px;">Module</th>
<th style="white-space: nowrap;padding: 2px 8px;">Coverage %</th>
<th style="white-space: nowrap;padding: 2px 8px;">Acceptable %</th>
<th style="white-space: nowrap;padding: 2px 8px;">Verdict</th>
</tr>
<xsl:apply-templates select="//trendcoveragedata/mod" />
<xsl:apply-templates select="//trendcoveragedata/stats" />
</tbody>
</table>
</xsl:template>
<xsl:template match="//trendcoveragedata/mod">
<xsl:variable name="coverage" select="stats/@vsp div (stats/@usp + stats/@vsp)" />
<xsl:variable name="acceptable" select="number(stats/@acp)" />
<tr>
<td><xsl:value-of select="assembly" /></td>
<td style="text-align: center; margin: 0 1em;">
<xsl:choose>
<xsl:when test="string($coverage) = 'NaN'">N/A</xsl:when>
<xsl:otherwise><xsl:value-of select="format-number($coverage,'0.00%')" /></xsl:otherwise>
</xsl:choose>
</td>
<td style="text-align: center; margin: 0 1em;"><xsl:value-of select="format-number($acceptable,'0.00')" />%</td>
<td style="text-align: center;">
<xsl:choose>
<xsl:when test="string($coverage) = 'NaN'">N/A</xsl:when>
<xsl:when test="($coverage * 100) >= $acceptable">
<span style="color: green;">PASS</span>
</xsl:when>
<xsl:otherwise>
<span style="color: red;">FAIL</span>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:template>
<xsl:template match="//trendcoveragedata/stats">
<tr>
<th style="text-align: right;padding-top: 15px;white-space:nowrap;">Symbol Coverage</th>
<td style="padding-top: 15px;text-align: right;"><xsl:value-of select="format-number(@vsp div (@usp + @vsp),'0.00%')" /></td>
<th style="text-align: right;white-space:nowrap;padding-top: 15px;">Branch Coverage</th>
<td style="padding-top: 15px;text-align: right;"><xsl:value-of select="format-number(@vbp div (@ubp + @vbp),'0.00%')" /></td>
</tr>
<tr>
<th style="text-align: right;white-space:nowrap;">Visited Symbols</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@vsp,'#,##0')" /></td>
<th style="text-align: right;white-space:nowrap;">Visited Branch Points</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@vbp,'#,##0')" /></td>
</tr>
<tr>
<th style="text-align: right;white-space:nowrap;">Unvisited Symbols</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@usp,'#,##0')" /></td>
<th style="text-align: right;white-space:nowrap;">Unvisited Branch Points</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@ubp,'#,##0')" /></td>
</tr>
<tr>
<th style="text-align: right;white-space:nowrap;">Total Symbols</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@usp + @vsp,'#,##0')" /></td>
<th style="text-align: right;white-space:nowrap;">Total Branch Points</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@ubp + @vbp,'#,##0')" /></td>
</tr>
<tr><td></td></tr>
<tr>
<th style="text-align: right;white-space:nowrap;">Method Coverage</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@vm div (@um + @vm),'0.00%')" /></td>
<th style="text-align: right;white-space:nowrap;">Line Coverage</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@vl div (@ul + @vl),'0.00%')" /></td>
</tr>
<tr>
<th style="text-align: right;white-space:nowrap;">Visited Methods</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@vm,'#,##0')" /></td>
<th style="text-align: right;white-space:nowrap;">Visited Lines</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@vl,'#,##0')" /></td>
</tr>
<tr>
<th style="text-align: right;white-space:nowrap;">Unvisited Methods</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@um,'#,##0')" /></td>
<th style="text-align: right;white-space:nowrap;">Unvisited Lines</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@ul,'#,##0')" /></td>
</tr>
<tr>
<th style="text-align: right;white-space:nowrap;">Total Methods</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@um + @vm,'#,##0')" /></td>
<th style="text-align: right;white-space:nowrap;">Total Lines</th>
<td style="text-align: right;"><xsl:value-of select="format-number(@ul + @vl,'#,##0')" /></td>
</tr>
<tr><td></td></tr>
<tr>
<th style="text-align: right;white-space:nowrap;">Cyclomatic Complexity</th>
<td colspan="3"><xsl:value-of select="format-number(@ccavg,'#,##0.#')" /> Average, <xsl:value-of select="format-number(@ccmax,'#,##0')" /> Maximum</td>
</tr>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment