diff options
author | Kevin Rocard <kevinx.rocard@intel.com> | 2013-06-10 19:05:46 +0200 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-12 17:04:02 +0100 |
commit | ffaf0a0f99bf41e36363a2e71845ff9861110737 (patch) | |
tree | 6df6ea03b1d445ef3b32672814410eedcbd9d33f /tools/coverage | |
parent | 804e064dcd02b87e04b9a189422cc14205e8125c (diff) | |
download | external_parameter-framework-ffaf0a0f99bf41e36363a2e71845ff9861110737.zip external_parameter-framework-ffaf0a0f99bf41e36363a2e71845ff9861110737.tar.gz external_parameter-framework-ffaf0a0f99bf41e36363a2e71845ff9861110737.tar.bz2 |
[coverage] Add a coverage translation to html xslt script
BZ: 115218
The coverage report generated is in xml, hard to read, file.
Add an xslt script (and a css) to convert it to html in this new folder.
Change-Id: Ic55a72e717c6b8bafa9d6a2e5e82af0d00317d0f
Signed-off-by: Kevin Rocard <kevinx.rocard@intel.com>
Reviewed-on: http://android.intel.com:8080/112825
Reviewed-by: Graulle, JeremieX <jeremiex.graulle@intel.com>
Reviewed-by: De Chivre, Renaud <renaud.de.chivre@intel.com>
Reviewed-by: cactus <cactus@intel.com>
Tested-by: Dixon, CharlesX <charlesx.dixon@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'tools/coverage')
-rw-r--r-- | tools/coverage/coverage.xsl | 329 |
1 files changed, 329 insertions, 0 deletions
diff --git a/tools/coverage/coverage.xsl b/tools/coverage/coverage.xsl new file mode 100644 index 0000000..a9861b9 --- /dev/null +++ b/tools/coverage/coverage.xsl @@ -0,0 +1,329 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + > + <xsl:output + method="xml" + omit-xml-declaration="yes" + indent="yes" + encoding="UTF-8" + doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" + doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" + xmlns="http://www.w3.org/1999/xhtml" + /> + + <xsl:template match="/CoverageReport"> + <html lang="en" xml:lang="en"> + <head> + <title>Coverage report</title> + <style type="text/css"> + <xsl:text disable-output-escaping="yes"> + .progressbar .percent.excelent { + background-color: green; + } + #tree .element.good > .name, + .progressbar .percent.good, + .demo .good { + background-color: greenyellow; + } + #tree .element.nice > .name, + .progressbar .percent.nice, + .demo .nice { + background-color: yellow; + } + #tree .element.bad > .name, + .progressbar .percent.bad, + .demo .bad { + background-color: orange; + } + #tree .element.critical > .name, + .progressbar .percent.critical, + .demo .critical { + background-color: orangeRed; + } + #tree .element input:checked ~ .children { + display: block !important; + } + #tree .element input ~ .children { + display: none; + } + + table, table td { + border-width: 1px; + border-style: solid dotted solid dotted; + border-color: silver; + border-collapse: collapse; + padding-left: 0.2em; + padding-right: 0.2em; + } + .progressbar { + width: 20em; + } + + .progressbar .percent { + display: inline-block; + height: 0.5em; + vertical-align: middle; + } + div.description:nth-of-type(2n+1) { + background-color: whitesmoke; + } + tr:hover { + background-color: lightyellow; + } + </xsl:text> + </style> + <meta http-equiv="content-type" content="text/html;charset=utf-8" /> + </head> + <body> + <h1>Coverage report</h1> + <h2>Summary</h2> + <table class="summary"> + <xsl:apply-templates select=".|*" mode="summary" /> + </table> + + <h2>Legend</h2> + <p>Colors correspond to:</p> + <table class="demo"> + <xsl:call-template name="legend-color"> + <xsl:with-param name="coverage">100</xsl:with-param> + <xsl:with-param name="description">Full coverage</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="legend-color"> + <xsl:with-param name="coverage">75</xsl:with-param> + <xsl:with-param name="description"> + <xsl:text>75%-99% coverage, nice</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="legend-color"> + <xsl:with-param name="coverage">50</xsl:with-param> + <xsl:with-param name="description">Half the way !</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="legend-color"> + <xsl:with-param name="coverage">0</xsl:with-param> + <xsl:with-param name="description">Forgot something ?</xsl:with-param> + </xsl:call-template> + </table> + + <h2>Tree</h2> + <!-- Warning IE conditional comment. A warning is displayed if using IE, + as the tree view has been reported not to work on IE7. ("<!" == "<") --> + <xsl:comment> + <xsl:text>[if IE]> + <span class="warning" style="background-color: red;font-weight:bold;" > + This tree representation has been reported not to work on IE. + Please use a navigator that respect standards. + </span> + <![endif]</xsl:text> + </xsl:comment> + <p>Check/Uncheck the checkboxes to fold/unfold.</p> + <ul class="tree" id="tree"> + <xsl:apply-templates select="." mode="tree" /> + </ul> + + <h2>Description</h2> + <div class="descriptions"> + <xsl:apply-templates select=".|descendant::*" mode="description" /> + </div> + </body> + </html> + </xsl:template> + + <!--############## + summary templates + ##############--> + <xsl:template mode="summary" match="*"> + <tr> + <td> + <a href="#description-{generate-id(.)}"> + <xsl:apply-templates select="." mode="summary-name" /> + </a> + </td> + <td><xsl:value-of select="@Coverage" /></td> + <xsl:apply-templates select="." mode="progress-bar" /> + </tr> + </xsl:template> + + <xsl:template mode="summary-name" match="/*" > + <xsl:text>Coverage total average</xsl:text> + </xsl:template> + <xsl:template mode="summary-name" match="*"> + <xsl:value-of select="name()" /> + </xsl:template> + + <xsl:template name="legend-color"> + <xsl:param name="coverage" /> + <xsl:param name="description" /> + <tr> + <td class="coverage"> + <xsl:attribute name="class"> + <xsl:call-template name="choose-quality"> + <xsl:with-param name="coverage"> + <xsl:value-of select="$coverage" /> + </xsl:with-param> + </xsl:call-template> + </xsl:attribute> + <xsl:value-of select="$coverage" /> + </td> + <td class="coverage"> + <xsl:value-of select="$description" /> + </td> + </tr> + </xsl:template> + + <!-- quality coverage templates --> + <xsl:template name="quality"> + <xsl:call-template name="choose-quality"> + <xsl:with-param name="coverage"> + <xsl:value-of select="number(substring-before(@Coverage,'%'))" /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template name="choose-quality"> + <xsl:param name="coverage" /> + <xsl:choose> + <xsl:when test="$coverage >= 100">excelent</xsl:when> + <xsl:when test="$coverage >= 75">nice</xsl:when> + <xsl:when test="$coverage >= 50">bad</xsl:when> + <xsl:when test="$coverage >= 0">critical</xsl:when> + <xsl:otherwise /> + </xsl:choose> + </xsl:template> + + + <!--############## + Tree templates + ##############--> + + <!-- Ignore the CriterionState nodes and childrens + as it add a huge number of unimportant info--> + <xsl:template mode="tree" match="CriterionStates" /> + + <xsl:template mode="tree" match="*"> + <li id="tree-{generate-id(.)}"> + + <xsl:attribute name="class"> + <xsl:text>element </xsl:text> + <xsl:call-template name="quality" /> + </xsl:attribute> + + <xsl:apply-templates select="." mode="tree-checkbox" /> + <a class="name description" href="#description-{generate-id(.)}"> + <xsl:value-of select="@Name" /> + </a> + + <xsl:if test="node()"> + <ul class="children"><xsl:apply-templates select="*" mode="tree" /></ul> + </xsl:if> + </li> + </xsl:template> + + <xsl:template mode="tree-checkbox" match="ConfigurableDomain | Criterion"> + <input class="description" type="checkbox" /> + </xsl:template> + <xsl:template mode="tree-checkbox" match="Domains | Criteria"> + <input class="description" type="checkbox" checked="checked" /> + </xsl:template> + <xsl:template mode="tree-checkbox" match="*" /> + + <!--#################### + Description templates + ####################--> + <!-- Ignore the CriterionState nodes and childrens + as it add a huge number of unimportant info--> + <xsl:template mode="description" match="CriterionStates|CriterionStates//*" /> + + <xsl:template mode="description" match="*"> + <div class="description"> + <h3 id="description-{generate-id(.)}"> + <xsl:value-of select="@Name" /> + </h3> + <p> + <xsl:text>Path:</xsl:text> + <xsl:apply-templates select="ancestor::*|." mode="path" /> + </p> + <a class="name" href="#tree-{generate-id(.)}"> + <xsl:text>Back to tree</xsl:text> + </a> + <h4>Detail</h4> + <table> + <xsl:if test="parent::*"> + <tr> + <td>Type</td> + <td><xsl:value-of select="name()" /></td> + </tr> + <tr> + <td>Parent</td> + <td> + <a class="name" href="#description-{generate-id(..)}"> + <xsl:value-of select="../@Name" /> + </a> + <xsl:text> (</xsl:text> + <xsl:value-of select="name(..)" /> + <xsl:text>)</xsl:text> + </td> + </tr> + </xsl:if> + <xsl:apply-templates select="./@*" mode="description" /> + </table> + <xsl:if test="node()"> + <h4>Children</h4> + <table> + <tr> + <th>Name</th> + <th>Type</th> + <th>Coverage</th> + <th>Nb use</th> + <th>Coverage progress bar</th> + </tr> + <xsl:apply-templates select="*" mode="description-children" /> + </table> + </xsl:if> + </div> + </xsl:template> + + <xsl:template mode="path" match="*"> + <xsl:text> / </xsl:text> + <a href="#description-{generate-id(.)}"><xsl:value-of select="@Name" /></a> + </xsl:template> + + <xsl:template match="@*" mode="description"> + <tr> + <td><xsl:value-of select="name()" /></td> + <td><xsl:value-of select="." /></td> + </tr> + </xsl:template> + + + <!-- Ignore the CriterionState nodes as it add a huge number of unimportant info--> + <xsl:template mode="description-children" match="CriterionStates" /> + + <xsl:template mode="description-children" match="*"> + <tr> + <td><a class="name" href="#description-{generate-id(.)}"> + <xsl:value-of select="@Name" /> + </a></td> + <td><xsl:value-of select="name()" /></td> + <xsl:apply-templates select="./@*" mode="description-children" /> + <xsl:apply-templates select="." mode="progress-bar" /> + </tr> + </xsl:template> + + <xsl:template match="@Name" mode="description-children" /> + <xsl:template match="@*" mode="description-children"> + <td><xsl:value-of select="." /></td> + </xsl:template> + + <xsl:template mode="progress-bar" match="*"> + <td class="progressbar"> + <span style="width:{@Coverage}"> + <xsl:attribute name="class"> + <xsl:text>percent </xsl:text> + <xsl:call-template name="quality" /> + </xsl:attribute> + </span> + </td> + </xsl:template> +</xsl:stylesheet> |