| <?xml version="1.0" encoding="utf-8"?> | |
| <!-- | |
| # | |
| # Copyright (C) 2006 Daniel Berrange | |
| # | |
| # This program is free software; you can redistribute it and/or modify | |
| # it under the terms of the GNU General Public License as published by | |
| # the Free Software Foundation; either version 2 of the License, or | |
| # (at your option) any later version. | |
| # | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| # GNU General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU General Public License | |
| # along with this program; if not, write to the Free Software | |
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
| --> | |
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |
| version="1.0"> | |
| <xsl:output method="html"/> | |
| <xsl:template match="coverage"> | |
| <html> | |
| <head> | |
| <title>Coverage report</title> | |
| <style type="text/css"> | |
| tbody tr.odd td.label { | |
| border-top: 1px solid rgb(128,128,128); | |
| border-bottom: 1px solid rgb(128,128,128); | |
| } | |
| tbody tr.odd td.label { | |
| background: rgb(200,200,200); | |
| } | |
| thead, tfoot { | |
| background: rgb(60,60,60); | |
| color: white; | |
| font-weight: bold; | |
| } | |
| tr td.perfect { | |
| background: rgb(0,255,0); | |
| color: black; | |
| } | |
| tr td.excellant { | |
| background: rgb(140,255,140); | |
| color: black; | |
| } | |
| tr td.good { | |
| background: rgb(160,255,0); | |
| color: black; | |
| } | |
| tr td.poor { | |
| background: rgb(255,160,0); | |
| color: black; | |
| } | |
| tr td.bad { | |
| background: rgb(255,140,140); | |
| color: black; | |
| } | |
| tr td.terrible { | |
| background: rgb(255,0,0); | |
| color: black; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <h1>Coverage report</h1> | |
| <xsl:apply-templates/> | |
| </body> | |
| </html> | |
| </xsl:template> | |
| <xsl:template match="functions"> | |
| <h2>Function coverage</h2> | |
| <xsl:call-template name="content"> | |
| <xsl:with-param name="type" select="'function'"/> | |
| </xsl:call-template> | |
| </xsl:template> | |
| <xsl:template match="files"> | |
| <h2>File coverage</h2> | |
| <xsl:call-template name="content"> | |
| <xsl:with-param name="type" select="'file'"/> | |
| </xsl:call-template> | |
| </xsl:template> | |
| <xsl:template name="content"> | |
| <xsl:param name="type"/> | |
| <table> | |
| <thead> | |
| <tr> | |
| <th>Name</th> | |
| <th>Lines</th> | |
| <th>Branches</th> | |
| <th>Conditions</th> | |
| <th>Calls</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <xsl:for-each select="entry"> | |
| <xsl:call-template name="entry"> | |
| <xsl:with-param name="type" select="$type"/> | |
| <xsl:with-param name="class"> | |
| <xsl:choose> | |
| <xsl:when test="position() mod 2"> | |
| <xsl:text>odd</xsl:text> | |
| </xsl:when> | |
| <xsl:otherwise> | |
| <xsl:text>even</xsl:text> | |
| </xsl:otherwise> | |
| </xsl:choose> | |
| </xsl:with-param> | |
| </xsl:call-template> | |
| </xsl:for-each> | |
| </tbody> | |
| <tfoot> | |
| <xsl:for-each select="summary"> | |
| <xsl:call-template name="entry"> | |
| <xsl:with-param name="type" select="'summary'"/> | |
| <xsl:with-param name="class"> | |
| <xsl:choose> | |
| <xsl:when test="position() mod 2"> | |
| <xsl:text>odd</xsl:text> | |
| </xsl:when> | |
| <xsl:otherwise> | |
| <xsl:text>even</xsl:text> | |
| </xsl:otherwise> | |
| </xsl:choose> | |
| </xsl:with-param> | |
| </xsl:call-template> | |
| </xsl:for-each> | |
| </tfoot> | |
| </table> | |
| </xsl:template> | |
| <xsl:template name="entry"> | |
| <xsl:param name="type"/> | |
| <xsl:param name="class"/> | |
| <tr class="{$class}"> | |
| <xsl:choose> | |
| <xsl:when test="$type = 'function'"> | |
| <td class="label"><a href="{@details}.html#{@name}"><xsl:value-of select="@name"/></a></td> | |
| </xsl:when> | |
| <xsl:when test="$type = 'file'"> | |
| <td class="label"><a href="{@details}.html"><xsl:value-of select="@name"/></a></td> | |
| </xsl:when> | |
| <xsl:otherwise> | |
| <td class="label">Summary</td> | |
| </xsl:otherwise> | |
| </xsl:choose> | |
| <xsl:if test="count(lines)"> | |
| <xsl:apply-templates select="lines"/> | |
| </xsl:if> | |
| <xsl:if test="not(count(lines))"> | |
| <xsl:call-template name="missing"/> | |
| </xsl:if> | |
| <xsl:if test="count(branches)"> | |
| <xsl:apply-templates select="branches"/> | |
| </xsl:if> | |
| <xsl:if test="not(count(branches))"> | |
| <xsl:call-template name="missing"/> | |
| </xsl:if> | |
| <xsl:if test="count(conditions)"> | |
| <xsl:apply-templates select="conditions"/> | |
| </xsl:if> | |
| <xsl:if test="not(count(conditions))"> | |
| <xsl:call-template name="missing"/> | |
| </xsl:if> | |
| <xsl:if test="count(calls)"> | |
| <xsl:apply-templates select="calls"/> | |
| </xsl:if> | |
| <xsl:if test="not(count(calls))"> | |
| <xsl:call-template name="missing"/> | |
| </xsl:if> | |
| </tr> | |
| </xsl:template> | |
| <xsl:template match="lines"> | |
| <xsl:call-template name="row"/> | |
| </xsl:template> | |
| <xsl:template match="branches"> | |
| <xsl:call-template name="row"/> | |
| </xsl:template> | |
| <xsl:template match="conditions"> | |
| <xsl:call-template name="row"/> | |
| </xsl:template> | |
| <xsl:template match="calls"> | |
| <xsl:call-template name="row"/> | |
| </xsl:template> | |
| <xsl:template name="missing"> | |
| <td></td> | |
| </xsl:template> | |
| <xsl:template name="row"> | |
| <xsl:variable name="quality"> | |
| <xsl:choose> | |
| <xsl:when test="@coverage = 100"> | |
| <xsl:text>perfect</xsl:text> | |
| </xsl:when> | |
| <xsl:when test="@coverage >= 80.0"> | |
| <xsl:text>excellant</xsl:text> | |
| </xsl:when> | |
| <xsl:when test="@coverage >= 60.0"> | |
| <xsl:text>good</xsl:text> | |
| </xsl:when> | |
| <xsl:when test="@coverage >= 40.0"> | |
| <xsl:text>poor</xsl:text> | |
| </xsl:when> | |
| <xsl:when test="@coverage >= 20.0"> | |
| <xsl:text>bad</xsl:text> | |
| </xsl:when> | |
| <xsl:otherwise> | |
| <xsl:text>terrible</xsl:text> | |
| </xsl:otherwise> | |
| </xsl:choose> | |
| </xsl:variable> | |
| <td class="{$quality}"><xsl:value-of select="@coverage"/>% of <xsl:value-of select="@count"/></td> | |
| </xsl:template> | |
| </xsl:stylesheet> |