Order files
This commit is contained in:
BIN
android/tools/ant/etc/ant-bootstrap.jar
Normal file
BIN
android/tools/ant/etc/ant-bootstrap.jar
Normal file
Binary file not shown.
148
android/tools/ant/etc/changelog.xsl
Normal file
148
android/tools/ant/etc/changelog.xsl
Normal file
@ -0,0 +1,148 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<xsl:stylesheet
|
||||
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
|
||||
version='1.0'>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<xsl:param name="title"/>
|
||||
<xsl:param name="module"/>
|
||||
<xsl:param name="cvsweb"/>
|
||||
|
||||
<xsl:output method="html" indent="yes" encoding="US-ASCII"
|
||||
doctype-public="-//W3C//DTD HTML 4.01//EN"
|
||||
doctype-system="http://www.w3.org/TR/html401/strict.dtd"/>
|
||||
|
||||
<!-- Copy standard document elements. Elements that
|
||||
should be ignored must be filtered by apply-templates
|
||||
tags. -->
|
||||
<xsl:template match="*">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="attribute::*[. != '']"/>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="changelog">
|
||||
<html>
|
||||
<head>
|
||||
<title><xsl:value-of select="$title"/></title>
|
||||
<style type="text/css">
|
||||
body, p {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 80%;
|
||||
color: #000000;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
tr, td {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
background: #eeeee0;
|
||||
}
|
||||
td {
|
||||
padding-left: 20px;
|
||||
}
|
||||
.dateAndAuthor {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
background: #a6caf0;
|
||||
padding-left: 3px;
|
||||
}
|
||||
a {
|
||||
color: #000000;
|
||||
}
|
||||
pre {
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
<a name="top"><xsl:value-of select="$title"/></a>
|
||||
</h1>
|
||||
<p style="text-align: right">Designed for use with <a href="http://ant.apache.org/">Apache Ant</a>.</p>
|
||||
<hr/>
|
||||
<table border="0" width="100%" cellspacing="1">
|
||||
|
||||
<xsl:apply-templates select=".//entry">
|
||||
<xsl:sort select="date" data-type="text" order="descending"/>
|
||||
<xsl:sort select="time" data-type="text" order="descending"/>
|
||||
</xsl:apply-templates>
|
||||
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="entry">
|
||||
<tr>
|
||||
<td class="dateAndAuthor">
|
||||
<xsl:value-of select="date"/><xsl:text> </xsl:text><xsl:value-of select="time"/><xsl:text> </xsl:text><xsl:value-of select="author"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<pre>
|
||||
<xsl:apply-templates select="msg"/></pre>
|
||||
<ul>
|
||||
<xsl:apply-templates select="file"/>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="date">
|
||||
<i><xsl:value-of select="."/></i>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="time">
|
||||
<i><xsl:value-of select="."/></i>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="author">
|
||||
<i>
|
||||
<a>
|
||||
<xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
|
||||
<xsl:value-of select="."/></a>
|
||||
</i>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="file">
|
||||
<li>
|
||||
<a>
|
||||
<xsl:choose>
|
||||
<xsl:when test="string-length(prevrevision) = 0 ">
|
||||
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&content-type=text/x-cvsweb-markup</xsl:attribute>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&r2=<xsl:value-of select="prevrevision"/></xsl:attribute>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:value-of select="name" /> (<xsl:value-of select="revision"/>)</a>
|
||||
</li>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Any elements within a msg are processed,
|
||||
so that we can preserve HTML tags. -->
|
||||
<xsl:template match="msg">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -0,0 +1,367 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:redirect="http://xml.apache.org/xalan/redirect"
|
||||
extension-element-prefixes="redirect">
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||
|
||||
<xsl:param name="output.dir" select="'.'"/>
|
||||
<xsl:param name="basedir" select="'.'"/>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Matches the root element of the data and starts the generation.
|
||||
-->
|
||||
<xsl:template match="checkstyle">
|
||||
<!-- create the sorted.html with the data -->
|
||||
<redirect:write file="{$output.dir}/sorted.html">
|
||||
<xsl:call-template name="sorted.html"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the stylesheet.css with layout -->
|
||||
<redirect:write file="{$output.dir}/sorted.css">
|
||||
<xsl:call-template name="sorted.css"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the switch.js for collepsing the data -->
|
||||
<redirect:write file="{$output.dir}/switch.js">
|
||||
<xsl:call-template name="switch.js"/>
|
||||
</redirect:write>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Generates the HTML page with the data.
|
||||
-->
|
||||
<xsl:template name="sorted.html">
|
||||
<html>
|
||||
<head>
|
||||
<title>CheckStyle Audit</title>
|
||||
<script language="JavaScript" src="switch.js" type="text/javascript"></script>
|
||||
<link rel="stylesheet" type="text/css" href="sorted.css"/>
|
||||
</head>
|
||||
<body onload="javascript:openFirst();">
|
||||
<h1>CheckStyle Audit</h1>
|
||||
<p>Designed for use with
|
||||
<a href='http://checkstyle.sourceforge.net/'>CheckStyle</a> and
|
||||
<a href='http://ant.apache.org/'>Ant</a>.
|
||||
</p>
|
||||
<xsl:apply-templates select="." mode="navigation"/>
|
||||
<xsl:apply-templates select="." mode="data"/>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Key for detecting duplicate CheckModules
|
||||
-->
|
||||
<xsl:key name="module" match="file/error" use="@source"/>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Generates the navagation bar.
|
||||
-->
|
||||
<xsl:template match="checkstyle" mode="navigation">
|
||||
<ul id="navigation">
|
||||
<xsl:for-each select="file/error[generate-id() = generate-id(key('module',@source))]">
|
||||
<xsl:sort select="@source"/>
|
||||
<xsl:variable name="last-index">
|
||||
<xsl:call-template name="last-index-of">
|
||||
<xsl:with-param name="txt" select="@source"/>
|
||||
<xsl:with-param name="delimiter" select="'.'"></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<li><a href="javascript:change('{@source}');">
|
||||
<xsl:value-of select="substring(@source, $last-index+1)"/>
|
||||
</a></li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Generates the data part.
|
||||
-->
|
||||
<xsl:template match="checkstyle" mode="data">
|
||||
<div id="content">
|
||||
<xsl:for-each select="file/error[generate-id() = generate-id(key('module',@source))]">
|
||||
<xsl:sort select="@source"/>
|
||||
<div class="hideable" id="{@source}">
|
||||
<xsl:variable name="module" select="@source"/>
|
||||
<h2><xsl:value-of select="@source"/></h2>
|
||||
<xsl:call-template name="data">
|
||||
<xsl:with-param name="filter" select="$module"/>
|
||||
</xsl:call-template>
|
||||
</div>
|
||||
</xsl:for-each>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Generates the content table for the given check module.
|
||||
@param filter full qualified module name
|
||||
-->
|
||||
<xsl:template name="data">
|
||||
<xsl:param name="filter"/>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>file</th>
|
||||
<th>line</th>
|
||||
<th>severity</th>
|
||||
<th>message</th>
|
||||
</tr>
|
||||
<xsl:for-each select="/checkstyle/file">
|
||||
<xsl:choose>
|
||||
<xsl:when test="error/@source=$filter">
|
||||
<xsl:call-template name="data-rows">
|
||||
<xsl:with-param name="node" select="."/>
|
||||
<xsl:with-param name="filter" select="$filter"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Generates the data rows for the current check module.
|
||||
Ignores errors in the current file from other modules.
|
||||
@param node the file with the errors
|
||||
@param filter full qualified module name
|
||||
-->
|
||||
<xsl:template name="data-rows">
|
||||
<xsl:param name="node"/>
|
||||
<xsl:param name="filter"/>
|
||||
|
||||
<xsl:for-each select="$node/error">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@source=$filter">
|
||||
<tr>
|
||||
<!-- Hide the basdir. First char of the result is a path separator so remove that. -->
|
||||
<td><xsl:value-of select="substring(substring-after($node/@name, $basedir),2)"/></td>
|
||||
<td><xsl:value-of select="@line"/></td>
|
||||
<td><xsl:value-of select="@severity"/></td>
|
||||
<td><xsl:value-of select="@message"/></td>
|
||||
</tr>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Generates the CSS with the layout instructions.
|
||||
Generated so this XSL is the single source of the whole report.
|
||||
-->
|
||||
<xsl:template name="sorted.css">
|
||||
body {
|
||||
font:normal 80% arial,helvetica,sanserif;
|
||||
color: black;
|
||||
background-color: white;
|
||||
margin: 0;
|
||||
padding: 1em;
|
||||
min-width: 41em;
|
||||
}
|
||||
h1 {
|
||||
font-weight:bold;
|
||||
font-size:140%;
|
||||
margin: 0 0 0.7em;
|
||||
padding: 0.3em;
|
||||
text-align: center;
|
||||
background-color: #eee;
|
||||
border: 2px ridge silver;
|
||||
}
|
||||
html<xsl:text disable-output-escaping="yes">></xsl:text>body h1 {
|
||||
border-color: gray;
|
||||
}
|
||||
|
||||
ul#navigation {
|
||||
font-size: 0.83em;
|
||||
float: left; width: 18em;
|
||||
margin: 0 0 1.2em; padding: 0;
|
||||
border: 1px dashed silver;
|
||||
}
|
||||
ul#navigation li {
|
||||
list-style: none;
|
||||
margin: 0; padding: 0.2em;
|
||||
}
|
||||
ul#navigation a {
|
||||
display: block;
|
||||
padding: 0.2em;
|
||||
font-weight: bold;
|
||||
}
|
||||
ul#navigation a:link {
|
||||
color: black; background-color: #eee;
|
||||
}
|
||||
ul#navigation a:visited {
|
||||
color: #666; background-color: #eee;
|
||||
}
|
||||
ul#navigation a:hover {
|
||||
color: red; background-color: white;
|
||||
}
|
||||
ul#navigation a:active {
|
||||
color: white; background-color: gray;
|
||||
}
|
||||
|
||||
div#content {
|
||||
margin: 0 1em 1em 16em;
|
||||
padding: 0 1em;
|
||||
}
|
||||
* html div#content {
|
||||
height: 1em; /* Workaround 3-Pixel-Bug of Internet Explorers */
|
||||
}
|
||||
div#content h2 {
|
||||
font-size:100%;
|
||||
font-weight:bold;
|
||||
background: #525D76;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 5px;
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
div#content p {
|
||||
font-size: 1em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
width:100%;
|
||||
border-collapse:collapse;
|
||||
}
|
||||
table td, table th {
|
||||
border:1px solid #000;
|
||||
padding:3px 7px 2px 7px;
|
||||
}
|
||||
table th {
|
||||
font-weight:bold;
|
||||
background: #ccc;
|
||||
color: black;
|
||||
}
|
||||
table tr:nth-child(odd) td {
|
||||
background: #efefef;
|
||||
}
|
||||
table tr:nth-child(even) td {
|
||||
background: #fff;
|
||||
}
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Generates the JavaScript for the dynamic style.
|
||||
Generated so this XSL is the single source of the whole report.
|
||||
-->
|
||||
<xsl:template name="switch.js">
|
||||
/*
|
||||
* Hides all "hideable" div-containers
|
||||
*/
|
||||
function hideAll() {
|
||||
allElements = document.getElementsByTagName("div");
|
||||
for (i = 0; i <xsl:text disable-output-escaping="yes"><</xsl:text> allElements.length; i++) {
|
||||
if (allElements[i].className=="hideable") {
|
||||
allElements[i].style.display="none";
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Shows one div-container and hides the other.
|
||||
* @param id id of the element to show
|
||||
*/
|
||||
function change(id) {
|
||||
hideAll();
|
||||
e = document.getElementById(id);
|
||||
if (e.style.display=="none") {
|
||||
e.style.display="";
|
||||
}
|
||||
window.scrollTo(0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Shows only the first data row.
|
||||
* Used in body:onload so the user could directly see some messages.
|
||||
*/
|
||||
function openFirst() {
|
||||
hideAll();
|
||||
for (i = 0; i <xsl:text disable-output-escaping="yes"><</xsl:text> allElements.length; i++) {
|
||||
if (allElements[i].className=="hideable") {
|
||||
allElements[i].style.display="";
|
||||
return;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
Calculates the index of the last occurence of a substring in a string.
|
||||
@param txt the whole string in which to search
|
||||
@delimiter the substring to search
|
||||
-->
|
||||
<xsl:template name="last-index-of">
|
||||
<xsl:param name="txt"/>
|
||||
<xsl:param name="remainder" select="$txt"/>
|
||||
<xsl:param name="delimiter" select="' '"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($remainder, $delimiter)">
|
||||
<xsl:call-template name="last-index-of">
|
||||
<xsl:with-param name="txt" select="$txt"/>
|
||||
<xsl:with-param name="remainder" select="substring-after($remainder, $delimiter)"/>
|
||||
<xsl:with-param name="delimiter" select="$delimiter"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:variable name="lastIndex" select="string-length(substring($txt, 1, string-length($txt)-string-length($remainder)))+1"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="string-length($remainder)=0">
|
||||
<xsl:value-of select="string-length($txt)"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$lastIndex>0">
|
||||
<xsl:value-of select="($lastIndex - string-length($delimiter))"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="0"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
299
android/tools/ant/etc/checkstyle/checkstyle-frames.xsl
Normal file
299
android/tools/ant/etc/checkstyle/checkstyle-frames.xsl
Normal file
@ -0,0 +1,299 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:redirect="http://xml.apache.org/xalan/redirect"
|
||||
extension-element-prefixes="redirect">
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||
|
||||
<xsl:param name="output.dir" select="'.'"/>
|
||||
<xsl:param name="basedir" select="'.'"/>
|
||||
|
||||
<xsl:template match="checkstyle">
|
||||
<!-- create the index.html -->
|
||||
<redirect:write file="{$output.dir}/index.html">
|
||||
<xsl:call-template name="index.html"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the stylesheet.css -->
|
||||
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||
<xsl:call-template name="stylesheet.css"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the overview-summary.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||
<xsl:apply-templates select="." mode="overview"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-classes.html at the root -->
|
||||
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||
<xsl:apply-templates select="." mode="all.classes"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- process all files -->
|
||||
<xsl:apply-templates select="file[count(error) != 0]"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="index.html">
|
||||
<html>
|
||||
<head>
|
||||
<title>CheckStyle Audit</title>
|
||||
</head>
|
||||
<frameset cols="20%,80%">
|
||||
<frame src="allclasses-frame.html" name="fileListFrame"/>
|
||||
<frame src="overview-frame.html" name="fileFrame"/>
|
||||
</frameset>
|
||||
<noframes>
|
||||
<h2>Frame Alert</h2>
|
||||
<p>
|
||||
This document is designed to be viewed using the frames feature.
|
||||
If you see this message, you are using a non-frame-capable web client.
|
||||
</p>
|
||||
</noframes>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="pageHeader">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td class="text-align:right"><h2>CheckStyle Audit</h2></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-align:right">Designed for use with
|
||||
<a href='http://checkstyle.sourceforge.net/'>CheckStyle</a> and
|
||||
<a href='http://ant.apache.org/'>Ant</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="checkstyle" mode="overview">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- page header -->
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
|
||||
<!-- Summary part -->
|
||||
<xsl:apply-templates select="." mode="summary"/>
|
||||
<hr size="1" width="100%" align="left"/>
|
||||
|
||||
<!-- File list part -->
|
||||
<xsl:apply-templates select="." mode="filelist"/>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="stylesheet.css">
|
||||
.bannercell {
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
body {
|
||||
margin-left: 10;
|
||||
margin-right: 10;
|
||||
font:normal 80% arial,helvetica,sanserif;
|
||||
background-color:#FFFFFF;
|
||||
color:#000000;
|
||||
}
|
||||
.oddrow td {
|
||||
background: #efefef;
|
||||
}
|
||||
.evenrow td {
|
||||
background: #fff;
|
||||
}
|
||||
th, td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
font-weight:bold;
|
||||
background: #ccc;
|
||||
color: black;
|
||||
}
|
||||
table, th, td {
|
||||
font-size:100%;
|
||||
border: none
|
||||
}
|
||||
table.log tr td, tr th {
|
||||
|
||||
}
|
||||
h2 {
|
||||
font-weight:bold;
|
||||
font-size:140%;
|
||||
margin-bottom: 5;
|
||||
}
|
||||
h3 {
|
||||
font-size:100%;
|
||||
font-weight:bold;
|
||||
background: #525D76;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 5px;
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
Creates an all-classes.html file that contains a link to all files.
|
||||
-->
|
||||
<xsl:template match="checkstyle" mode="all.classes">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Files</h2>
|
||||
<p>
|
||||
<table width="100%">
|
||||
<!-- For each file create its part -->
|
||||
<xsl:apply-templates select="file[count(error) != 0]" mode="all.classes">
|
||||
<xsl:sort select="substring-after(@name, $basedir)"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="checkstyle" mode="filelist">
|
||||
<h3>Files</h3>
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Errors</th>
|
||||
</tr>
|
||||
<xsl:apply-templates select="file[count(error) != 0]" mode="filelist">
|
||||
<xsl:sort select="count(error)" order="descending" data-type="number"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="file" mode="filelist">
|
||||
<tr>
|
||||
<xsl:call-template name="alternated-row"/>
|
||||
<td nowrap="nowrap">
|
||||
<a>
|
||||
<xsl:attribute name="href">
|
||||
<xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="substring-after(@name, $basedir)"/>
|
||||
</a>
|
||||
</td>
|
||||
<td><xsl:value-of select="count(error)"/></td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="file" mode="all.classes">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a target="fileFrame">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="substring-after(@name, $basedir)"/>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
transform string like a/b/c to ../../../
|
||||
@param path the path to transform into a descending directory path
|
||||
-->
|
||||
<xsl:template name="path">
|
||||
<xsl:param name="path"/>
|
||||
|
||||
<!-- Convert a windows path '\' to a unix path '/' for further processing. -->
|
||||
<xsl:variable name="path2" select="translate($path,'\','/')"/>
|
||||
|
||||
|
||||
<xsl:if test="contains($path2,'/')">
|
||||
<xsl:text>../</xsl:text>
|
||||
<xsl:call-template name="path">
|
||||
<xsl:with-param name="path"><xsl:value-of select="substring-after($path2,'/')"/></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(contains($path2,'/')) and not($path2 = '')">
|
||||
<xsl:text>../</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="file">
|
||||
<redirect:write file="{$output.dir}/files/{substring-after(@name, $basedir)}.html">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css">
|
||||
<xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="substring-after(@name, $basedir)"/></xsl:call-template><xsl:text>stylesheet.css</xsl:text></xsl:attribute>
|
||||
</link>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h3>File <xsl:value-of select="substring-after(@name, $basedir)"/></h3>
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>Error Description</th>
|
||||
<th>Line:Column</th>
|
||||
</tr>
|
||||
<xsl:for-each select="error">
|
||||
<tr>
|
||||
<xsl:call-template name="alternated-row"/>
|
||||
<td><a title="{@source}"><xsl:value-of select="@message"/></a></td>
|
||||
<td align="center"><xsl:value-of select="@line"/><xsl:if test="@column">:<xsl:value-of select="@column"/></xsl:if></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</redirect:write>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="checkstyle" mode="summary">
|
||||
<h3>Summary</h3>
|
||||
<xsl:variable name="fileCount" select="count(file)"/>
|
||||
<xsl:variable name="errorCount" select="count(file/error)"/>
|
||||
<xsl:variable name="fileErrorCount" select="count(file[count(error) != 0])"/>
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>Total Files</th>
|
||||
<th>Files With Errors</th>
|
||||
<th>Errors</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<xsl:call-template name="alternated-row"/>
|
||||
<td><xsl:value-of select="$fileCount"/></td>
|
||||
<td><xsl:value-of select="$fileErrorCount"/></td>
|
||||
<td><xsl:value-of select="$errorCount"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="alternated-row">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:if test="position() mod 2 = 1">oddrow</xsl:if>
|
||||
<xsl:if test="position() mod 2 = 0">evenrow</xsl:if>
|
||||
</xsl:attribute>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
34
android/tools/ant/etc/checkstyle/checkstyle-text.xsl
Normal file
34
android/tools/ant/etc/checkstyle/checkstyle-text.xsl
Normal file
@ -0,0 +1,34 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:strip-space elements="checkstyle"/>
|
||||
<xsl:preserve-space elements="file"/>
|
||||
<xsl:output method="text"/>
|
||||
<xsl:template match="checkstyle/file/error">
|
||||
<xsl:value-of select="../@name"/>
|
||||
<xsl:text>:</xsl:text>
|
||||
<xsl:value-of select="@line"/>
|
||||
<xsl:text>:</xsl:text>
|
||||
<xsl:value-of select="@column"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@message"/>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
130
android/tools/ant/etc/checkstyle/checkstyle-xdoc.xsl
Normal file
130
android/tools/ant/etc/checkstyle/checkstyle-xdoc.xsl
Normal file
@ -0,0 +1,130 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||
extension-element-prefixes="redirect">
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:output method="xml" indent="yes"/>
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||
|
||||
<xsl:param name="output.dir" select="'.'"/>
|
||||
<xsl:param name="basedir" select="'.'"/>
|
||||
|
||||
<xsl:template match="checkstyle">
|
||||
<document>
|
||||
<properties>
|
||||
<title>Checkstyle Audit</title>
|
||||
</properties>
|
||||
|
||||
<body>
|
||||
<xsl:apply-templates select="." mode="summary"/>
|
||||
<!-- File list part -->
|
||||
<xsl:apply-templates select="." mode="filelist"/>
|
||||
<xsl:apply-templates select="file[count(error) != 0]"/>
|
||||
</body>
|
||||
</document>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="checkstyle" mode="filelist">
|
||||
<section name="Files">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Errors</th>
|
||||
</tr>
|
||||
<xsl:apply-templates select="file[count(error) != 0]" mode="filelist">
|
||||
<xsl:sort select="count(error)" order="descending" data-type="number"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</section>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="file" mode="filelist">
|
||||
<tr>
|
||||
<xsl:call-template name="alternated-row"/>
|
||||
<td nowrap="nowrap">
|
||||
<a>
|
||||
<xsl:attribute name="href">
|
||||
<xsl:text>files</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="substring-after(@name, $basedir)"/>
|
||||
</a>
|
||||
</td>
|
||||
<td><xsl:value-of select="count(error)"/></td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="file">
|
||||
<redirect:write file="{$output.dir}/files{substring-after(@name, $basedir)}.xml">
|
||||
<document>
|
||||
<properties>
|
||||
<title>Checkstyle Audit</title>
|
||||
</properties>
|
||||
|
||||
<body>
|
||||
<section name="Details for {substring-after(@name, $basedir)}">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Error Description</th>
|
||||
<th>Line</th>
|
||||
</tr>
|
||||
<xsl:for-each select="error">
|
||||
<tr>
|
||||
<xsl:call-template name="alternated-row"/>
|
||||
<td><a title="{@source}"><xsl:value-of select="@message"/></a></td>
|
||||
<td><xsl:value-of select="@line"/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</section>
|
||||
</body>
|
||||
</document>
|
||||
</redirect:write>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="checkstyle" mode="summary">
|
||||
<section name="Summary">
|
||||
<xsl:variable name="fileCount" select="count(file)"/>
|
||||
<xsl:variable name="errorCount" select="count(file/error)"/>
|
||||
<xsl:variable name="fileErrorCount" select="count(file[count(error) != 0])"/>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Files</th>
|
||||
<th>Files With Errors</th>
|
||||
<th>Errors</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<xsl:call-template name="alternated-row"/>
|
||||
<td><xsl:value-of select="$fileCount"/></td>
|
||||
<td><xsl:value-of select="$fileErrorCount"/></td>
|
||||
<td><xsl:value-of select="$errorCount"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</section>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="alternated-row">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:if test="position() mod 2 = 1">oddrow</xsl:if>
|
||||
<xsl:if test="position() mod 2 = 0">evenrow</xsl:if>
|
||||
</xsl:attribute>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
487
android/tools/ant/etc/coverage-frames.xsl
Normal file
487
android/tools/ant/etc/coverage-frames.xsl
Normal file
@ -0,0 +1,487 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||
extension-element-prefixes="redirect">
|
||||
<xsl:output method="html" indent="yes"/>
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
Sample stylesheet to be used with JProbe 3.0 XML output.
|
||||
|
||||
It creates a set of HTML files a la javadoc where you can browse easily
|
||||
through all packages and classes.
|
||||
|
||||
It is best used with JProbe Coverage Ant task that gives you the benefit
|
||||
of a reference classpath so that you have the list of classes/methods
|
||||
that are not used at all in a given classpath.
|
||||
|
||||
-->
|
||||
|
||||
<!-- default output directory is current directory -->
|
||||
<xsl:param name="output.dir" select="'.'"/>
|
||||
|
||||
<!-- ======================================================================
|
||||
Root element
|
||||
======================================================================= -->
|
||||
<xsl:template match="/snapshot">
|
||||
<!-- create the index.html -->
|
||||
<redirect:write file="{$output.dir}/index.html">
|
||||
<xsl:call-template name="index.html"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the stylesheet.css -->
|
||||
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||
<xsl:call-template name="stylesheet.css"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the overview-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||
<xsl:apply-templates select="." mode="all.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-classes.html at the root -->
|
||||
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||
<xsl:apply-templates select="." mode="all.classes"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- process all packages -->
|
||||
<xsl:apply-templates select="./package" mode="write"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- =======================================================================
|
||||
Frameset definition. Entry point for the report.
|
||||
3 frames: packageListFrame, classListFrame, classFrame
|
||||
======================================================================= -->
|
||||
<xsl:template name="index.html">
|
||||
<html>
|
||||
<head><title>Coverage Results.</title></head>
|
||||
<frameset cols="20%,80%">
|
||||
<frameset rows="30%,70%">
|
||||
<frame src="overview-frame.html" name="packageListFrame"/>
|
||||
<frame src="allclasses-frame.html" name="classListFrame"/>
|
||||
</frameset>
|
||||
<frame src="overview-summary.html" name="classFrame"/>
|
||||
</frameset>
|
||||
<noframes>
|
||||
<h2>Frame Alert</h2>
|
||||
<p>
|
||||
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||
</p>
|
||||
</noframes>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!-- =======================================================================
|
||||
Stylesheet CSS used
|
||||
======================================================================= -->
|
||||
<!-- this is the stylesheet css to use for nearly everything -->
|
||||
<xsl:template name="stylesheet.css">
|
||||
.bannercell {
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
body {
|
||||
margin-left: 10;
|
||||
margin-right: 10;
|
||||
font:normal 80% arial,helvetica,sanserif;
|
||||
background-color:#FFFFFF;
|
||||
color:#000000;
|
||||
}
|
||||
.a td {
|
||||
background: #efefef;
|
||||
}
|
||||
.b td {
|
||||
background: #fff;
|
||||
}
|
||||
th, td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
font-weight:bold;
|
||||
background: #ccc;
|
||||
color: black;
|
||||
}
|
||||
table, th, td {
|
||||
font-size:100%;
|
||||
border: none
|
||||
}
|
||||
table.log tr td, tr th {
|
||||
|
||||
}
|
||||
h2 {
|
||||
font-weight:bold;
|
||||
font-size:140%;
|
||||
margin-bottom: 5;
|
||||
}
|
||||
h3 {
|
||||
font-size:100%;
|
||||
font-weight:bold;
|
||||
background: #525D76;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 5px;
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</xsl:template>
|
||||
|
||||
<!-- =======================================================================
|
||||
List of all classes in all packages
|
||||
This will be the first page in the classListFrame
|
||||
======================================================================= -->
|
||||
<xsl:template match="snapshot" mode="all.classes">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="create.stylesheet.link"/>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Classes</h2>
|
||||
<table width="100%">
|
||||
<xsl:for-each select="package/class">
|
||||
<xsl:sort select="@name"/>
|
||||
<xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
|
||||
<xsl:variable name="link">
|
||||
<xsl:if test="not($package.name='')">
|
||||
<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
|
||||
</xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
|
||||
</xsl:variable>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a target="classFrame" href="{$link}"><xsl:value-of select="@name"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!-- list of all packages -->
|
||||
<xsl:template match="snapshot" mode="all.packages">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="create.stylesheet.link"/>
|
||||
</head>
|
||||
<body>
|
||||
<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
|
||||
<h2>Packages</h2>
|
||||
<table width="100%">
|
||||
<xsl:for-each select="package">
|
||||
<xsl:sort select="@name" order="ascending"/>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
|
||||
<xsl:value-of select="@name"/>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!-- overview of statistics in packages -->
|
||||
<xsl:template match="snapshot" mode="overview.packages">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="create.stylesheet.link"/>
|
||||
</head>
|
||||
<body onload="open('allclasses-frame.html','classListFrame')">
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h3>Summary</h3>
|
||||
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<!--th width="10%" nowrap="nowrap">Date</th>
|
||||
<th width="10%" nowrap="nowrap">Elapsed time</th-->
|
||||
<th width="10%" nowrap="nowrap">Reported Classes</th>
|
||||
<th width="10%" nowrap="nowrap">Methods Hit</th>
|
||||
<th width="10%" nowrap="nowrap">Lines Hit</th>
|
||||
</tr>
|
||||
<tr class="a">
|
||||
<!--td nowrap="nowrap"><xsl:value-of select="execution_log/@program_start"/></td>
|
||||
<td><xsl:value-of select="format-number(execution_log/@elapsed_time div 1000,'0.0')"/>secs</td-->
|
||||
<td><xsl:value-of select="count(package/class)"/></td>
|
||||
<td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
|
||||
<td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table border="0" width="100%">
|
||||
<tr>
|
||||
<td style="text-align: justify;">
|
||||
To ensure accurate test runs on Java applications, developers need to know how much of
|
||||
the code has been tested, and where to find any untested code. Coverage helps you
|
||||
locate untested code, and measure precisely how much code has been exercised.
|
||||
The result is a higher quality application in a shorter period of time.
|
||||
<p/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Packages</h3>
|
||||
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:apply-templates select="package[1]" mode="stats.header"/>
|
||||
<!-- display packages and sort them via their coverage rate -->
|
||||
<xsl:for-each select="package">
|
||||
<xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
|
||||
<tr>
|
||||
<xsl:call-template name="alternate-row"/>
|
||||
<td><a href="{translate(@name,'.','/')}/package-summary.html"><xsl:value-of select="@name"/></a></td>
|
||||
<td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
|
||||
<td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
<xsl:call-template name="pageFooter"/>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
detailed info for a package. It will output the list of classes
|
||||
, the summary page, and the info for each class
|
||||
-->
|
||||
<xsl:template match="package" mode="write">
|
||||
<xsl:variable name="package.dir">
|
||||
<xsl:if test="not(@name = '')"><xsl:value-of select="translate(@name,'.','/')"/></xsl:if>
|
||||
<xsl:if test="@name = ''">.</xsl:if>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- create a classes-list.html in the package directory -->
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
|
||||
<xsl:apply-templates select="." mode="classes.list"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create a package-summary.html in the package directory -->
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
|
||||
<xsl:apply-templates select="." mode="package.summary"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- for each class, creates a @name.html -->
|
||||
<xsl:for-each select="class">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
|
||||
<xsl:apply-templates select="." mode="class.details"/>
|
||||
</redirect:write>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<!-- list of classes in a package -->
|
||||
<xsl:template match="package" mode="classes.list">
|
||||
<html>
|
||||
<HEAD>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="@name"/>
|
||||
</xsl:call-template>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></H2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<H2>Classes</H2>
|
||||
<TABLE WIDTH="100%">
|
||||
<xsl:for-each select="class">
|
||||
<xsl:sort select="@name"/>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</TABLE>
|
||||
</BODY>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!-- summary of a package -->
|
||||
<xsl:template match="package" mode="package.summary">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="@name"/>
|
||||
</xsl:call-template>
|
||||
</HEAD>
|
||||
<!-- when loading this package, it will open the classes into the frame -->
|
||||
<BODY onload="open('package-frame.html','classListFrame')">
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h3>Package <xsl:value-of select="@name"/></h3>
|
||||
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:apply-templates select="." mode="stats.header"/>
|
||||
<xsl:apply-templates select="." mode="stats"/>
|
||||
</table>
|
||||
|
||||
<xsl:if test="count(class) > 0">
|
||||
<H3>Classes</H3>
|
||||
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:apply-templates select="." mode="stats.header"/>
|
||||
<xsl:apply-templates select="class" mode="stats">
|
||||
<xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</xsl:if>
|
||||
<xsl:call-template name="pageFooter"/>
|
||||
</BODY>
|
||||
</HTML>
|
||||
</xsl:template>
|
||||
|
||||
<!-- details of a class -->
|
||||
<xsl:template match="class" mode="class.details">
|
||||
<xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$package.name"/>
|
||||
</xsl:call-template>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
|
||||
|
||||
<!-- class summary -->
|
||||
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:apply-templates select="." mode="stats.header"/>
|
||||
<xsl:apply-templates select="." mode="stats"/>
|
||||
</table>
|
||||
|
||||
<!-- details of methods -->
|
||||
<H3>Methods</H3>
|
||||
<table class="log" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:apply-templates select="method[1]" mode="stats.header"/>
|
||||
<xsl:apply-templates select="method" mode="stats">
|
||||
<xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
<xsl:call-template name="pageFooter"/>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- Page Header -->
|
||||
<xsl:template name="pageHeader">
|
||||
<!-- jakarta logo -->
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td class="bannercell" rowspan="2">
|
||||
<a href="http://jakarta.apache.org/">
|
||||
<img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
|
||||
</a>
|
||||
</td>
|
||||
<td style="text-align:right"><h2>Source Code Coverage</h2></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right">Designed for use with <a href='http://www.sitraka.com/jprobe'>Sitraka JProbe</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Page Footer -->
|
||||
<xsl:template name="pageFooter">
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="table.header">
|
||||
<tr>
|
||||
<th width="80%">Name</th>
|
||||
<th width="10%" nowrap="nowrap">Methods Hit</th>
|
||||
<th width="10%" nowrap="nowrap">Lines Hit</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="method" mode="stats.header">
|
||||
<tr>
|
||||
<th width="90%">Name</th>
|
||||
<th width="10%" nowrap="nowrap">Lines Hit</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
<xsl:template match="method" mode="stats">
|
||||
<tr>
|
||||
<xsl:call-template name="alternate-row"/>
|
||||
<td><xsl:value-of select="@name"/></td>
|
||||
<td>
|
||||
<xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="package|class" mode="stats.header">
|
||||
<tr>
|
||||
<th width="80%">Name</th>
|
||||
<th width="10%" nowrap="nowrap">Methods Hit</th>
|
||||
<th width="10%" nowrap="nowrap">Lines Hit</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
<xsl:template match="package|class" mode="stats">
|
||||
<tr>
|
||||
<xsl:call-template name="alternate-row"/>
|
||||
<td><xsl:value-of select="@name"/></td>
|
||||
<td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
|
||||
<td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
transform string like a.b.c to ../../../
|
||||
@param path the path to transform into a descending directory path
|
||||
-->
|
||||
<xsl:template name="path">
|
||||
<xsl:param name="path"/>
|
||||
<xsl:if test="contains($path,'.')">
|
||||
<xsl:text>../</xsl:text>
|
||||
<xsl:call-template name="path">
|
||||
<xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(contains($path,'.')) and not($path = '')">
|
||||
<xsl:text>../</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- create the link to the stylesheet based on the package name -->
|
||||
<xsl:template name="create.stylesheet.link">
|
||||
<xsl:param name="package.name"/>
|
||||
<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
|
||||
</xsl:template>
|
||||
|
||||
<!-- alternated row style -->
|
||||
<xsl:template name="alternate-row">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:if test="position() mod 2 = 1">a</xsl:if>
|
||||
<xsl:if test="position() mod 2 = 0">b</xsl:if>
|
||||
</xsl:attribute>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
||||
|
485
android/tools/ant/etc/jdepend-frames.xsl
Normal file
485
android/tools/ant/etc/jdepend-frames.xsl
Normal file
@ -0,0 +1,485 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||
extension-element-prefixes="redirect">
|
||||
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
<!--
|
||||
|
||||
Sample stylesheet to be used with JDepend XML output.
|
||||
|
||||
It creates a set of HTML files a la javadoc where you can browse easily
|
||||
through all packages and classes.
|
||||
|
||||
-->
|
||||
<xsl:param name="output.dir" select="'.'"/>
|
||||
|
||||
<xsl:template match="JDepend">
|
||||
<!-- create the index.html -->
|
||||
<redirect:write file="{$output.dir}/index.html">
|
||||
<xsl:call-template name="index.html"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the stylesheet.css -->
|
||||
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||
<xsl:call-template name="stylesheet.css"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the overview-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the overview-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-packages.html">
|
||||
<xsl:apply-templates select="." mode="packages.details"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the overview-cycles.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-cycles.html">
|
||||
<xsl:apply-templates select="." mode="cycles.details"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the overview-cycles.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-explanations.html">
|
||||
<xsl:apply-templates select="." mode="explanations"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/all-packages.html">
|
||||
<xsl:apply-templates select="Packages" mode="all.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-cycles.html at the root -->
|
||||
<redirect:write file="{$output.dir}/all-cycles.html">
|
||||
<xsl:apply-templates select="Cycles" mode="all.cycles"/>
|
||||
</redirect:write>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="index.html">
|
||||
<html>
|
||||
<head>
|
||||
<title>JDepend Analysis</title>
|
||||
</head>
|
||||
<frameset cols="20%,80%">
|
||||
<frameset rows="30%,70%">
|
||||
<frame src="all-packages.html" name="packageListFrame"/>
|
||||
<frame src="all-cycles.html" name="classListFrame"/>
|
||||
</frameset>
|
||||
<frame src="overview-summary.html" name="classFrame"/>
|
||||
</frameset>
|
||||
<noframes>
|
||||
<h2>Frame Alert</h2>
|
||||
<p>
|
||||
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||
</p>
|
||||
</noframes>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!-- this is the stylesheet css to use for nearly everything -->
|
||||
<xsl:template name="stylesheet.css">
|
||||
<style type="text/css">
|
||||
body {
|
||||
font:normal 68% verdana,arial,helvetica;
|
||||
color:#000000;
|
||||
}
|
||||
table tr td, tr th {
|
||||
font-size: 68%;
|
||||
}
|
||||
table.details tr th{
|
||||
font-weight: bold;
|
||||
text-align:left;
|
||||
background:#a6caf0;
|
||||
}
|
||||
table.details tr td{
|
||||
background:#eeeee0;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height:1.5em;
|
||||
margin-top:0.5em; margin-bottom:1.0em;
|
||||
margin-left:2em;
|
||||
margin-right:2em;
|
||||
}
|
||||
h1 {
|
||||
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||
}
|
||||
h2 {
|
||||
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||
}
|
||||
h3 {
|
||||
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||
}
|
||||
h4 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h5 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h6 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
.Error {
|
||||
font-weight:bold; color:red;
|
||||
}
|
||||
.Failure {
|
||||
font-weight:bold; color:purple;
|
||||
}
|
||||
.Properties {
|
||||
text-align:right;
|
||||
}
|
||||
</style>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="JDepend" mode="overview.packages">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<table width="100%"><tr align="left"><h2>Summary</h2><td>
|
||||
</td><td align="right">
|
||||
[summary]
|
||||
[<a href="overview-packages.html">packages</a>]
|
||||
[<a href="overview-cycles.html">cycles</a>]
|
||||
[<a href="overview-explanations.html">explanations</a>]
|
||||
</td></tr></table>
|
||||
<table width="100%" class="details">
|
||||
<tr>
|
||||
<th>Package</th>
|
||||
<th>Total Classes</th>
|
||||
<th><a href="overview-explanations.html#EXnumber">Abstract Classes</a></th>
|
||||
<th><a href="overview-explanations.html#EXnumber">Concrete Classes</a></th>
|
||||
<th><a href="overview-explanations.html#EXafferent">Afferent Couplings</a></th>
|
||||
<th><a href="overview-explanations.html#EXefferent">Efferent Couplings</a></th>
|
||||
<th><a href="overview-explanations.html#EXabstractness">Abstractness</a></th>
|
||||
<th><a href="overview-explanations.html#EXinstability">Instability</a></th>
|
||||
<th><a href="overview-explanations.html#EXdistance">Distance</a></th>
|
||||
|
||||
</tr>
|
||||
<xsl:for-each select="./Packages/Package">
|
||||
<xsl:if test="count(error) = 0">
|
||||
<tr>
|
||||
<td align="left">
|
||||
<a>
|
||||
<xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="@name"/>
|
||||
</a>
|
||||
</td>
|
||||
<td align="right"><xsl:value-of select="Stats/TotalClasses"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/AbstractClasses"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/ConcreteClasses"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/Ca"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/Ce"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/A"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/I"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/D"/></td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="./Packages/Package">
|
||||
<xsl:if test="count(error) > 0">
|
||||
<tr>
|
||||
<td align="left">
|
||||
<xsl:value-of select="@name"/>
|
||||
</td>
|
||||
<td align="left" colspan="8"><xsl:value-of select="error"/></td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="JDepend" mode="packages.details">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<table width="100%"><tr align="left"><h2>Packages</h2><td>
|
||||
</td><td align="right">
|
||||
[<a href="overview-summary.html">summary</a>]
|
||||
[packages]
|
||||
[<a href="overview-cycles.html">cycles</a>]
|
||||
[<a href="overview-explanations.html">explanations</a>]
|
||||
</td></tr></table>
|
||||
|
||||
<xsl:for-each select="./Packages/Package">
|
||||
<xsl:if test="count(error) = 0">
|
||||
<h3><a><xsl:attribute name="name">PK<xsl:value-of select="@name"/></xsl:attribute>
|
||||
<xsl:value-of select="@name"/></a></h3>
|
||||
|
||||
<table width="100%"><tr>
|
||||
<td><a href="overview-explanations.html#EXafferent">Afferent Couplings</a>: <xsl:value-of select="Stats/Ca"/></td>
|
||||
<td><a href="overview-explanations.html#EXefferent">Efferent Couplings</a>: <xsl:value-of select="Stats/Ce"/></td>
|
||||
<td><a href="overview-explanations.html#EXabstractness">Abstractness</a>: <xsl:value-of select="Stats/A"/></td>
|
||||
<td><a href="overview-explanations.html#EXinstability">Instability</a>: <xsl:value-of select="Stats/I"/></td>
|
||||
<td><a href="overview-explanations.html#EXdistance">Distance</a>: <xsl:value-of select="Stats/D"/></td>
|
||||
</tr></table>
|
||||
|
||||
<table width="100%" class="details">
|
||||
<tr>
|
||||
<th>Abstract Classes</th>
|
||||
<th>Concrete Classes</th>
|
||||
<th>Used by Packages</th>
|
||||
<th>Uses Packages</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" width="25%">
|
||||
<xsl:if test="count(AbstractClasses/Class)=0">
|
||||
<i>None</i>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="AbstractClasses/Class">
|
||||
<xsl:value-of select="node()"/><br/>
|
||||
</xsl:for-each>
|
||||
</td>
|
||||
<td valign="top" width="25%">
|
||||
<xsl:if test="count(ConcreteClasses/Class)=0">
|
||||
<i>None</i>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="ConcreteClasses/Class">
|
||||
<xsl:value-of select="node()"/><br/>
|
||||
</xsl:for-each>
|
||||
</td>
|
||||
<td valign="top" width="25%">
|
||||
<xsl:if test="count(UsedBy/Package)=0">
|
||||
<i>None</i>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="UsedBy/Package">
|
||||
<a>
|
||||
<xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="node()"/></xsl:attribute>
|
||||
<xsl:value-of select="node()"/>
|
||||
</a><br/>
|
||||
</xsl:for-each>
|
||||
</td>
|
||||
<td valign="top" width="25%">
|
||||
<xsl:if test="count(DependsUpon/Package)=0">
|
||||
<i>None</i>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="DependsUpon/Package">
|
||||
<a>
|
||||
<xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="node()"/></xsl:attribute>
|
||||
<xsl:value-of select="node()"/>
|
||||
</a><br/>
|
||||
</xsl:for-each>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
<!-- this is often a long listing; provide a lower navigation table also -->
|
||||
<table width="100%"><tr align="left"><td></td><td align="right">
|
||||
[<a href="overview-summary.html">summary</a>]
|
||||
[packages]
|
||||
[<a href="overview-cycles.html">cycles</a>]
|
||||
[<a href="overview-explanations.html">explanations</a>]
|
||||
</td></tr></table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="JDepend" mode="cycles.details">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<table width="100%"><tr align="left"><h2>Cycles</h2><td>
|
||||
</td><td align="right">
|
||||
[<a href="overview-summary.html">summary</a>]
|
||||
[<a href="overview-packages.html">packages</a>]
|
||||
[cycles]
|
||||
[<a href="overview-explanations.html">explanations</a>]
|
||||
</td></tr></table>
|
||||
<!--<table width="100%"><tr><td>
|
||||
</td><td align="right">
|
||||
[<a href="#NVsummary">summary</a>]
|
||||
[<a href="#NVpackages">packages</a>]
|
||||
[<a href="#NVcycles">cycles</a>]
|
||||
[<a href="#NVexplanations">explanations</a>]
|
||||
</td></tr></table> -->
|
||||
|
||||
<xsl:if test="count(Cycles/Package) = 0">
|
||||
<p>There are no cyclic dependancies.</p>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="Cycles/Package">
|
||||
<h3><a><xsl:attribute name="name">#CY<xsl:value-of select="@Name"/></xsl:attribute><xsl:value-of select="@Name"/></a></h3><p>
|
||||
<xsl:for-each select="Package">
|
||||
<xsl:value-of select="."/><br/>
|
||||
</xsl:for-each></p>
|
||||
</xsl:for-each>
|
||||
<!-- this is often a long listing; provide a lower navigation table also -->
|
||||
<table width="100%"><tr align="left"><td></td><td align="right">
|
||||
[<a href="overview-summary.html">summary</a>]
|
||||
[<a href="overview-packages.html">packages</a>]
|
||||
[cycles]
|
||||
[<a href="overview-explanations.html">explanations</a>]
|
||||
</td></tr></table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="JDepend" mode="explanations">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
|
||||
<table width="100%"><tr align="left"><h2>Explanations</h2><td>
|
||||
</td><td align="right">
|
||||
[<a href="overview-summary.html">summary</a>]
|
||||
[<a href="overview-packages.html">packages</a>]
|
||||
[<a href="overview-cycles.html">cycles</a>]
|
||||
[explanations]
|
||||
</td></tr></table>
|
||||
|
||||
<p>The following explanations are for quick reference and are lifted directly from the original <a href="http://www.clarkware.com/software/JDepend.html">JDepend documentation</a>.</p>
|
||||
|
||||
<h3><a name="EXnumber">Number of Classes</a></h3>
|
||||
<p>The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.</p>
|
||||
<h3><a name="EXafferent">Afferent Couplings</a></h3>
|
||||
<p>The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. </p>
|
||||
<h3><a name="EXefferent">Efferent Couplings</a></h3>
|
||||
<p>The number of other packages that the classes in the package depend upon is an indicator of the package's independence. </p>
|
||||
<h3><a name="EXabstractness">Abstractness</a></h3>
|
||||
<p>The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. </p>
|
||||
<p>The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. </p>
|
||||
<h3><a name="EXinstability">Instability</a></h3>
|
||||
<p>The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. </p>
|
||||
<p>The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. </p>
|
||||
<h3><a name="EXdistance">Distance</a></h3>
|
||||
<p>The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. </p>
|
||||
<p>A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). </p>
|
||||
<p>The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. </p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
Creates an html file that contains a link to all package links in overview-packages.html.
|
||||
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||
-->
|
||||
<xsl:template match="JDepend/Packages" mode="all.packages">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<table width="100%"><tr align="left"><td></td><td nowrap="nowrap" align="right">
|
||||
[<a href="overview-summary.html" target="classFrame">summary</a>]
|
||||
[<a href="overview-packages.html" target="classFrame">packages</a>]
|
||||
[<a href="overview-cycles.html" target="classFrame">cycles</a>]
|
||||
[<a href="overview-explanations.html" target="classFrame">explanations</a>]
|
||||
</td></tr></table>
|
||||
<h2>Packages</h2>
|
||||
<table width="100%">
|
||||
<xsl:apply-templates select="Package[count(error)=0]" mode="all.packages.link">
|
||||
<xsl:sort select="@name"/>
|
||||
</xsl:apply-templates>
|
||||
<xsl:apply-templates select="Package[count(error) > 0]" mode="all.packages.nolink">
|
||||
<xsl:sort select="@name"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="JDepend/Packages/Package" mode="all.packages.link">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a href="overview-packages.html#PK{@name}" target="classFrame">
|
||||
<xsl:value-of select="@name"/>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
I do not know JDepend enough to know if every error results in a non-analyzed package,
|
||||
but that is how I am presenting it to the viewer. This may need to change.
|
||||
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||
-->
|
||||
<xsl:template match="JDepend/Packages/Package" mode="all.packages.nolink">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
Not Analyzed: <xsl:value-of select="@name"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
Creates an html file that contains a link to all package links in overview-cycles.html.
|
||||
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||
-->
|
||||
<xsl:template match="JDepend/Cycles" mode="all.cycles">
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="stylesheet.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<table width="100%"><tr align="left"><td></td><td nowrap="nowrap" align="right">
|
||||
[<a href="overview-summary.html" target="classFrame">summary</a>]
|
||||
[<a href="overview-packages.html" target="classFrame">packages</a>]
|
||||
[<a href="overview-cycles.html" target="classFrame">cycles</a>]
|
||||
[<a href="overview-explanations.html" target="classFrame">explanations</a>]
|
||||
</td></tr></table>
|
||||
<h2>Cycles</h2>
|
||||
<table width="100%">
|
||||
<xsl:apply-templates select="Package" mode="all.cycles">
|
||||
<xsl:sort select="@Name"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="JDepend/Cycles/Package" mode="all.cycles">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a href="overview-cycles.html#CY{@Name}" target="classFrame"><xsl:value-of select="@Name"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Page HEADER -->
|
||||
<xsl:template name="pageHeader">
|
||||
<h1>JDepend Analysis</h1>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td align="left"></td>
|
||||
<td align="right">Designed for use with <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> and <a href="http://jakarta.apache.org">Ant</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
276
android/tools/ant/etc/jdepend.xsl
Normal file
276
android/tools/ant/etc/jdepend.xsl
Normal file
@ -0,0 +1,276 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||
|
||||
<xsl:template match="JDepend">
|
||||
<html>
|
||||
<head>
|
||||
<title>JDepend Analysis</title>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
font:normal 68% verdana,arial,helvetica;
|
||||
color:#000000;
|
||||
}
|
||||
table tr td, tr th {
|
||||
font-size: 68%;
|
||||
}
|
||||
table.details tr th{
|
||||
font-weight: bold;
|
||||
text-align:left;
|
||||
background:#a6caf0;
|
||||
}
|
||||
table.details tr td{
|
||||
background:#eeeee0;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height:1.5em;
|
||||
margin-top:0.5em; margin-bottom:1.0em;
|
||||
margin-left:2em;
|
||||
margin-right:2em;
|
||||
}
|
||||
h1 {
|
||||
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||
}
|
||||
h2 {
|
||||
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||
}
|
||||
h3 {
|
||||
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||
}
|
||||
h4 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h5 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h6 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
.Error {
|
||||
font-weight:bold; color:red;
|
||||
}
|
||||
.Failure {
|
||||
font-weight:bold; color:purple;
|
||||
}
|
||||
.Properties {
|
||||
text-align:right;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<!--h1>JDepend Report</h1>
|
||||
<ul>
|
||||
<xsl:for-each select="./Packages/Package">
|
||||
<xsl:sort select="@name"/>
|
||||
<li><xsl:value-of select="@name"/></li>
|
||||
</xsl:for-each>
|
||||
</ul-->
|
||||
|
||||
<h1><a name="top">JDepend Analysis</a></h1>
|
||||
<p align="right">Designed for use with <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> and <a href="http://jakarta.apache.org">Ant</a>.</p>
|
||||
<hr size="2" />
|
||||
|
||||
<table width="100%"><tr><td>
|
||||
<a name="NVsummary"><h2>Summary</h2></a>
|
||||
</td><td align="right">
|
||||
[<a href="#NVsummary">summary</a>]
|
||||
[<a href="#NVpackages">packages</a>]
|
||||
[<a href="#NVcycles">cycles</a>]
|
||||
[<a href="#NVexplanations">explanations</a>]
|
||||
</td></tr></table>
|
||||
|
||||
<table width="100%" class="details">
|
||||
<tr>
|
||||
<th>Package</th>
|
||||
<th>Total Classes</th>
|
||||
<th><a href="#EXnumber">Abstract Classes</a></th>
|
||||
<th><a href="#EXnumber">Concrete Classes</a></th>
|
||||
<th><a href="#EXafferent">Afferent Couplings</a></th>
|
||||
<th><a href="#EXefferent">Efferent Couplings</a></th>
|
||||
<th><a href="#EXabstractness">Abstractness</a></th>
|
||||
<th><a href="#EXinstability">Instability</a></th>
|
||||
<th><a href="#EXdistance">Distance</a></th>
|
||||
|
||||
</tr>
|
||||
<xsl:for-each select="./Packages/Package">
|
||||
<xsl:if test="count(error) = 0">
|
||||
<tr>
|
||||
<td align="left">
|
||||
<a>
|
||||
<xsl:attribute name="href">#PK<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="@name"/>
|
||||
</a>
|
||||
</td>
|
||||
<td align="right"><xsl:value-of select="Stats/TotalClasses"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/AbstractClasses"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/ConcreteClasses"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/Ca"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/Ce"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/A"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/I"/></td>
|
||||
<td align="right"><xsl:value-of select="Stats/D"/></td>
|
||||
|
||||
|
||||
</tr>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="./Packages/Package">
|
||||
<xsl:if test="count(error) > 0">
|
||||
<tr>
|
||||
<td align="left">
|
||||
<xsl:value-of select="@name"/>
|
||||
</td>
|
||||
<td align="left" colspan="8"><xsl:value-of select="error"/></td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
|
||||
<table width="100%"><tr><td>
|
||||
<a name="NVpackages"><h2>Packages</h2></a>
|
||||
</td><td align="right">
|
||||
[<a href="#NVsummary">summary</a>]
|
||||
[<a href="#NVpackages">packages</a>]
|
||||
[<a href="#NVcycles">cycles</a>]
|
||||
[<a href="#NVexplanations">explanations</a>]
|
||||
</td></tr></table>
|
||||
|
||||
<xsl:for-each select="./Packages/Package">
|
||||
<xsl:if test="count(error) = 0">
|
||||
<h3><a><xsl:attribute name="name">PK<xsl:value-of select="@name"/></xsl:attribute>
|
||||
<xsl:value-of select="@name"/></a></h3>
|
||||
|
||||
<table width="100%"><tr>
|
||||
<td><a href="#EXafferent">Afferent Couplings</a>: <xsl:value-of select="Stats/Ca"/></td>
|
||||
<td><a href="#EXefferent">Efferent Couplings</a>: <xsl:value-of select="Stats/Ce"/></td>
|
||||
<td><a href="#EXabstractness">Abstractness</a>: <xsl:value-of select="Stats/A"/></td>
|
||||
<td><a href="#EXinstability">Instability</a>: <xsl:value-of select="Stats/I"/></td>
|
||||
<td><a href="#EXdistance">Distance</a>: <xsl:value-of select="Stats/D"/></td>
|
||||
</tr></table>
|
||||
|
||||
<table width="100%" class="details">
|
||||
<tr>
|
||||
<th>Abstract Classes</th>
|
||||
<th>Concrete Classes</th>
|
||||
<th>Used by Packages</th>
|
||||
<th>Uses Packages</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" width="25%">
|
||||
<xsl:if test="count(AbstractClasses/Class)=0">
|
||||
<i>None</i>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="AbstractClasses/Class">
|
||||
<xsl:value-of select="node()"/><br/>
|
||||
</xsl:for-each>
|
||||
</td>
|
||||
<td valign="top" width="25%">
|
||||
<xsl:if test="count(ConcreteClasses/Class)=0">
|
||||
<i>None</i>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="ConcreteClasses/Class">
|
||||
<xsl:value-of select="node()"/><br/>
|
||||
</xsl:for-each>
|
||||
</td>
|
||||
<td valign="top" width="25%">
|
||||
<xsl:if test="count(UsedBy/Package)=0">
|
||||
<i>None</i>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="UsedBy/Package">
|
||||
<a>
|
||||
<xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
|
||||
<xsl:value-of select="node()"/>
|
||||
</a><br/>
|
||||
</xsl:for-each>
|
||||
</td>
|
||||
<td valign="top" width="25%">
|
||||
<xsl:if test="count(DependsUpon/Package)=0">
|
||||
<i>None</i>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="DependsUpon/Package">
|
||||
<a>
|
||||
<xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
|
||||
<xsl:value-of select="node()"/>
|
||||
</a><br/>
|
||||
</xsl:for-each>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
|
||||
<table width="100%"><tr><td>
|
||||
<a name="NVcycles"><h2>Cycles</h2></a>
|
||||
</td><td align="right">
|
||||
[<a href="#NVsummary">summary</a>]
|
||||
[<a href="#NVpackages">packages</a>]
|
||||
[<a href="#NVcycles">cycles</a>]
|
||||
[<a href="#NVexplanations">explanations</a>]
|
||||
</td></tr></table>
|
||||
|
||||
<xsl:if test="count(Cycles/Package) = 0">
|
||||
<p>There are no cyclic dependancies.</p>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="Cycles/Package">
|
||||
<h3><xsl:value-of select="@Name"/></h3><p>
|
||||
<xsl:for-each select="Package">
|
||||
<xsl:value-of select="."/><br/>
|
||||
</xsl:for-each></p>
|
||||
</xsl:for-each>
|
||||
|
||||
<table width="100%"><tr><td>
|
||||
<a name="NVexplanations"><h2>Explanations</h2></a>
|
||||
</td><td align="right">
|
||||
[<a href="#NVsummary">summary</a>]
|
||||
[<a href="#NVpackages">packages</a>]
|
||||
[<a href="#NVcycles">cycles</a>]
|
||||
[<a href="#NVexplanations">explanations</a>]
|
||||
</td></tr></table>
|
||||
|
||||
<p>The following explanations are for quick reference and are lifted directly from the original <a href="http://www.clarkware.com/software/JDepend.html">JDepend documentation</a>.</p>
|
||||
|
||||
<h3><a name="EXnumber">Number of Classes</a></h3>
|
||||
<p>The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.</p>
|
||||
<h3><a name="EXafferent">Afferent Couplings</a></h3>
|
||||
<p>The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. </p>
|
||||
<h3><a name="EXefferent">Efferent Couplings</a></h3>
|
||||
<p>The number of other packages that the classes in the package depend upon is an indicator of the package's independence. </p>
|
||||
<h3><a name="EXabstractness">Abstractness</a></h3>
|
||||
<p>The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. </p>
|
||||
<p>The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. </p>
|
||||
<h3><a name="EXinstability">Instability</a></h3>
|
||||
<p>The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. </p>
|
||||
<p>The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. </p>
|
||||
<h3><a name="EXdistance">Distance</a></h3>
|
||||
<p>The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. </p>
|
||||
<p>A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). </p>
|
||||
<p>The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. </p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
745
android/tools/ant/etc/junit-frames-xalan1.xsl
Normal file
745
android/tools/ant/etc/junit-frames-xalan1.xsl
Normal file
@ -0,0 +1,745 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||
xmlns:string="xalan://java.lang.String"
|
||||
extension-element-prefixes="redirect">
|
||||
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator=","/>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
Sample stylesheet to be used with Ant JUnitReport output.
|
||||
|
||||
It creates a set of HTML files a la javadoc where you can browse easily
|
||||
through all packages and classes.
|
||||
|
||||
-->
|
||||
<xsl:param name="output.dir" select="'.'"/>
|
||||
|
||||
|
||||
<xsl:template match="testsuites">
|
||||
<!-- create the index.html -->
|
||||
<redirect:write file="{$output.dir}/index.html">
|
||||
<xsl:call-template name="index.html"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the stylesheet.css -->
|
||||
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||
<xsl:call-template name="stylesheet.css"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the overview-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||
<xsl:apply-templates select="." mode="all.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-classes.html at the root -->
|
||||
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||
<xsl:apply-templates select="." mode="all.classes"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- process all packages -->
|
||||
<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||
<xsl:call-template name="package">
|
||||
<xsl:with-param name="name" select="@package"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="package">
|
||||
<xsl:param name="name"/>
|
||||
<xsl:variable name="package.dir">
|
||||
<xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
|
||||
<xsl:if test="$name = ''">.</xsl:if>
|
||||
</xsl:variable>
|
||||
<!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
|
||||
<!-- create a classes-list.html in the package directory -->
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
|
||||
<xsl:call-template name="classes.list">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create a package-summary.html in the package directory -->
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
|
||||
<xsl:call-template name="package.summary">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</redirect:write>
|
||||
|
||||
<!-- for each class, creates a @name.html -->
|
||||
<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
|
||||
<xsl:for-each select="/testsuites/testsuite[@package = $name]">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
|
||||
<xsl:apply-templates select="." mode="class.details"/>
|
||||
</redirect:write>
|
||||
<xsl:if test="string-length(./system-out)!=0">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@name}-out.html">
|
||||
<html>
|
||||
<head>
|
||||
<title>Standard Output from <xsl:value-of select="@name"/></title>
|
||||
</head>
|
||||
<body>
|
||||
<pre><xsl:value-of select="./system-out"/></pre>
|
||||
</body>
|
||||
</html>
|
||||
</redirect:write>
|
||||
</xsl:if>
|
||||
<xsl:if test="string-length(./system-err)!=0">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@name}-err.html">
|
||||
<html>
|
||||
<head>
|
||||
<title>Standard Error from <xsl:value-of select="@name"/></title>
|
||||
</head>
|
||||
<body>
|
||||
<pre><xsl:value-of select="./system-err"/></pre>
|
||||
</body>
|
||||
</html>
|
||||
</redirect:write>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="index.html">
|
||||
<html>
|
||||
<head>
|
||||
<title>Unit Test Results.</title>
|
||||
</head>
|
||||
<frameset cols="20%,80%">
|
||||
<frameset rows="30%,70%">
|
||||
<frame src="overview-frame.html" name="packageListFrame"/>
|
||||
<frame src="allclasses-frame.html" name="classListFrame"/>
|
||||
</frameset>
|
||||
<frame src="overview-summary.html" name="classFrame"/>
|
||||
<noframes>
|
||||
<h2>Frame Alert</h2>
|
||||
<p>
|
||||
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||
</p>
|
||||
</noframes>
|
||||
</frameset>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!-- this is the stylesheet css to use for nearly everything -->
|
||||
<xsl:template name="stylesheet.css">
|
||||
body {
|
||||
font:normal 68% verdana,arial,helvetica;
|
||||
color:#000000;
|
||||
}
|
||||
table tr td, table tr th {
|
||||
font-size: 68%;
|
||||
}
|
||||
table.details tr th{
|
||||
font-weight: bold;
|
||||
text-align:left;
|
||||
background:#a6caf0;
|
||||
}
|
||||
table.details tr td{
|
||||
background:#eeeee0;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height:1.5em;
|
||||
margin-top:0.5em; margin-bottom:1.0em;
|
||||
}
|
||||
h1 {
|
||||
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||
}
|
||||
h2 {
|
||||
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||
}
|
||||
h3 {
|
||||
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||
}
|
||||
h4 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h5 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h6 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
.Error {
|
||||
font-weight:bold; color:red;
|
||||
}
|
||||
.Failure {
|
||||
font-weight:bold; color:purple;
|
||||
}
|
||||
.Properties {
|
||||
text-align:right;
|
||||
}
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- ======================================================================
|
||||
This page is created for every testsuite class.
|
||||
It prints a summary of the testsuite and detailed information about
|
||||
testcase methods.
|
||||
====================================================================== -->
|
||||
<xsl:template match="testsuite" mode="class.details">
|
||||
<xsl:variable name="package.name" select="@package"/>
|
||||
<xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
|
||||
<html>
|
||||
<head>
|
||||
<title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$package.name"/>
|
||||
</xsl:call-template>
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
var TestCases = new Array();
|
||||
var cur;
|
||||
<xsl:apply-templates select="properties"/>
|
||||
</script>
|
||||
<script type="text/javascript" language="JavaScript"><![CDATA[
|
||||
function displayProperties (name) {
|
||||
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
|
||||
var doc = win.document;
|
||||
doc.open();
|
||||
doc.write("<html><head><title>Properties of " + name + "</title>");
|
||||
doc.write("<style type=\"text/css\">");
|
||||
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
|
||||
doc.write("table tr td, table tr th { font-size: 68%; }");
|
||||
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
|
||||
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
|
||||
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
|
||||
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
|
||||
doc.write("</style>");
|
||||
doc.write("</head><body>");
|
||||
doc.write("<h3>Properties of " + name + "</h3>");
|
||||
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
|
||||
doc.write("<table class='properties'>");
|
||||
doc.write("<tr><th>Name</th><th>Value</th></tr>");
|
||||
for (prop in TestCases[name]) {
|
||||
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
|
||||
}
|
||||
doc.write("</table>");
|
||||
doc.write("</body></html>");
|
||||
doc.close();
|
||||
win.focus();
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h3>Class <xsl:value-of select="$class.name"/></h3>
|
||||
|
||||
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
<xsl:apply-templates select="." mode="print.test"/>
|
||||
</table>
|
||||
|
||||
<h2>Tests</h2>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testcase.test.header"/>
|
||||
<!--
|
||||
test can even not be started at all (failure to load the class)
|
||||
so report the error directly
|
||||
-->
|
||||
<xsl:if test="./error">
|
||||
<tr class="Error">
|
||||
<td colspan="4"><xsl:apply-templates select="./error"/></td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="./testcase" mode="print.test"/>
|
||||
</table>
|
||||
<div class="Properties">
|
||||
<a>
|
||||
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
|
||||
Properties »
|
||||
</a>
|
||||
</div>
|
||||
<xsl:if test="string-length(./system-out)!=0">
|
||||
<div class="Properties">
|
||||
<a>
|
||||
<xsl:attribute name="href">./<xsl:value-of select="@name"/>-out.html</xsl:attribute>
|
||||
System.out »
|
||||
</a>
|
||||
</div>
|
||||
</xsl:if>
|
||||
<xsl:if test="string-length(./system-err)!=0">
|
||||
<div class="Properties">
|
||||
<a>
|
||||
<xsl:attribute name="href">./<xsl:value-of select="@name"/>-err.html</xsl:attribute>
|
||||
System.err »
|
||||
</a>
|
||||
</div>
|
||||
</xsl:if>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
Write properties into a JavaScript data structure.
|
||||
This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
|
||||
-->
|
||||
<xsl:template match="properties">
|
||||
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
|
||||
<xsl:for-each select="property">
|
||||
<xsl:sort select="@name"/>
|
||||
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- ======================================================================
|
||||
This page is created for every package.
|
||||
It prints the name of all classes that belongs to this package.
|
||||
@param name the package name to print classes.
|
||||
====================================================================== -->
|
||||
<!-- list of classes in a package -->
|
||||
<xsl:template name="classes.list">
|
||||
<xsl:param name="name"/>
|
||||
<html>
|
||||
<head>
|
||||
<title>Unit Test Classes: <xsl:value-of select="$name"/></title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<h2><a href="package-summary.html" target="classFrame">
|
||||
<xsl:value-of select="$name"/>
|
||||
<xsl:if test="$name = ''"><none></xsl:if>
|
||||
</a></h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Classes</h2>
|
||||
<table width="100%">
|
||||
<xsl:for-each select="/testsuites/testsuite[./@package = $name]">
|
||||
<xsl:sort select="@name"/>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
Creates an all-classes.html file that contains a link to all package-summary.html
|
||||
on each class.
|
||||
-->
|
||||
<xsl:template match="testsuites" mode="all.classes">
|
||||
<html>
|
||||
<head>
|
||||
<title>All Unit Test Classes</title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Classes</h2>
|
||||
<table width="100%">
|
||||
<xsl:apply-templates select="testsuite" mode="all.classes">
|
||||
<xsl:sort select="@name"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testsuite" mode="all.classes">
|
||||
<xsl:variable name="package.name" select="@package"/>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a target="classFrame">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:if test="not($package.name='')">
|
||||
<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
|
||||
</xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="@name"/>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
Creates an html file that contains a link to all package-summary.html files on
|
||||
each package existing on testsuites.
|
||||
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||
-->
|
||||
<xsl:template match="testsuites" mode="all.packages">
|
||||
<html>
|
||||
<head>
|
||||
<title>All Unit Test Packages</title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
|
||||
<h2>Packages</h2>
|
||||
<table width="100%">
|
||||
<xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
|
||||
<xsl:sort select="@package"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testsuite" mode="all.packages">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
|
||||
<xsl:value-of select="@package"/>
|
||||
<xsl:if test="@package = ''"><none></xsl:if>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="testsuites" mode="overview.packages">
|
||||
<html>
|
||||
<head>
|
||||
<title>Unit Test Results: Summary</title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h2>Summary</h2>
|
||||
<xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
|
||||
<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
|
||||
<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
|
||||
<xsl:variable name="skippedCount" select="sum(testsuite/@skipped)"/>
|
||||
<xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
|
||||
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<tr valign="top">
|
||||
<th>Tests</th>
|
||||
<th>Failures</th>
|
||||
<th>Errors</th>
|
||||
<th>Skipped</th>
|
||||
<th>Success rate</th>
|
||||
<th>Time</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||
<xsl:otherwise>Pass</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><xsl:value-of select="$testCount"/></td>
|
||||
<td><xsl:value-of select="$failureCount"/></td>
|
||||
<td><xsl:value-of select="$errorCount"/></td>
|
||||
<td><xsl:value-of select="$skipCount" /></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-percent">
|
||||
<xsl:with-param name="value" select="$successRate"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="$timeCount"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table border="0" width="95%">
|
||||
<tr>
|
||||
<td style="text-align: justify;">
|
||||
Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Packages</h2>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
<xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||
<xsl:sort select="@package" order="ascending"/>
|
||||
<!-- get the node set containing all testsuites that have the same package -->
|
||||
<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
|
||||
<tr valign="top">
|
||||
<!-- display a failure if there is any failure/error in the package -->
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="sum($insamepackage/@errors) > 0">Error</xsl:when>
|
||||
<xsl:when test="sum($insamepackage/@failures) > 0">Failure</xsl:when>
|
||||
<xsl:otherwise>Pass</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><a href="./{translate(@package,'.','/')}/package-summary.html">
|
||||
<xsl:value-of select="@package"/>
|
||||
<xsl:if test="@package = ''"><none></xsl:if>
|
||||
</a></td>
|
||||
<td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
|
||||
<td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
|
||||
<td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
|
||||
<td><xsl:value-of select="sum($insamepackage/@skipped)" /></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="sum($insamepackage/@time)"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td><xsl:value-of select="$insamepackage/@timestamp"/></td>
|
||||
<td><xsl:value-of select="$insamepackage/@hostname"/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="package.summary">
|
||||
<xsl:param name="name"/>
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h3>Package <xsl:value-of select="$name"/></h3>
|
||||
|
||||
<!--table border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="class.metrics.header"/>
|
||||
<xsl:apply-templates select="." mode="print.metrics"/>
|
||||
</table-->
|
||||
|
||||
<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
|
||||
<xsl:if test="count($insamepackage) > 0">
|
||||
<h2>Classes</h2>
|
||||
<p>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
<xsl:apply-templates select="$insamepackage" mode="print.test">
|
||||
<xsl:sort select="@name"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</p>
|
||||
</xsl:if>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
transform string like a.b.c to ../../../
|
||||
@param path the path to transform into a descending directory path
|
||||
-->
|
||||
<xsl:template name="path">
|
||||
<xsl:param name="path"/>
|
||||
<xsl:if test="contains($path,'.')">
|
||||
<xsl:text>../</xsl:text>
|
||||
<xsl:call-template name="path">
|
||||
<xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(contains($path,'.')) and not($path = '')">
|
||||
<xsl:text>../</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- create the link to the stylesheet based on the package name -->
|
||||
<xsl:template name="create.stylesheet.link">
|
||||
<xsl:param name="package.name"/>
|
||||
<link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Page HEADER -->
|
||||
<xsl:template name="pageHeader">
|
||||
<h1>Unit Test Results</h1>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td align="left"></td>
|
||||
<td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://ant.apache.org/">Ant</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- class header -->
|
||||
<xsl:template name="testsuite.test.header">
|
||||
<tr valign="top">
|
||||
<th width="80%">Name</th>
|
||||
<th>Tests</th>
|
||||
<th>Errors</th>
|
||||
<th>Failures</th>
|
||||
<th>Skipped</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
<th nowrap="nowrap">Time Stamp</th>
|
||||
<th>Host</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- method header -->
|
||||
<xsl:template name="testcase.test.header">
|
||||
<tr valign="top">
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
<th width="80%">Type</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- class information -->
|
||||
<xsl:template match="testsuite" mode="print.test">
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@errors[.> 0]">Error</xsl:when>
|
||||
<xsl:when test="@failures[.> 0]">Failure</xsl:when>
|
||||
<xsl:otherwise>Pass</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
|
||||
<td><xsl:apply-templates select="@tests"/></td>
|
||||
<td><xsl:apply-templates select="@errors"/></td>
|
||||
<td><xsl:apply-templates select="@failures"/></td>
|
||||
<td><xsl:apply-templates select="@skipped" /></td>
|
||||
<td><xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="@time"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td><xsl:apply-templates select="@timestamp"/></td>
|
||||
<td><xsl:apply-templates select="@hostname"/></td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testcase" mode="print.test">
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="error">Error</xsl:when>
|
||||
<xsl:when test="failure">Failure</xsl:when>
|
||||
<xsl:otherwise>TableRowColor</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><xsl:value-of select="@name"/></td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="failure">
|
||||
<td>Failure</td>
|
||||
<td><xsl:apply-templates select="failure"/></td>
|
||||
</xsl:when>
|
||||
<xsl:when test="error">
|
||||
<td>Error</td>
|
||||
<td><xsl:apply-templates select="error"/></td>
|
||||
</xsl:when>
|
||||
<xsl:when test="skipped">
|
||||
<td>Skipped</td>
|
||||
<td><xsl:apply-templates select="skipped"/></td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td>Success</td>
|
||||
<td></td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="@time"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Note : the below template error and failure are the same style
|
||||
so just call the same style store in the toolkit template -->
|
||||
<xsl:template match="failure">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="error">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Style for the error and failure in the testcase template -->
|
||||
<xsl:template name="display-failures">
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(@message)">N/A</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@message"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- display the stacktrace -->
|
||||
<br/><br/>
|
||||
<code>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="."/>
|
||||
</xsl:call-template>
|
||||
</code>
|
||||
<!-- the latter is better but might be problematic for non-21" monitors... -->
|
||||
<!--pre><xsl:value-of select="."/></pre-->
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="JS-escape">
|
||||
<xsl:param name="string"/>
|
||||
<xsl:param name="tmp1" select="string:replaceAll(string:new(string($string)),'\\','\\\\')"/>
|
||||
<xsl:param name="tmp2" select="string:replaceAll(string:new(string($tmp1)),"'","\\'")"/>
|
||||
<xsl:param name="tmp3" select="string:replaceAll(string:new(string($tmp2))," ",'\\n')"/>
|
||||
<xsl:param name="tmp4" select="string:replaceAll(string:new(string($tmp3))," ",'\\r')"/>
|
||||
<xsl:value-of select="$tmp4"/>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
template that will convert a carriage return into a br tag
|
||||
@param word the text from which to convert CR to BR tag
|
||||
-->
|
||||
<xsl:template name="br-replace">
|
||||
<xsl:param name="word"/>
|
||||
<xsl:param name="br"><br/></xsl:param>
|
||||
<xsl:value-of select='stringutils:replace(string($word),"
",$br)'/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="display-time">
|
||||
<xsl:param name="value"/>
|
||||
<xsl:value-of select="format-number($value,'0.000')"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="display-percent">
|
||||
<xsl:param name="value"/>
|
||||
<xsl:value-of select="format-number($value,'0.00%')"/>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
972
android/tools/ant/etc/junit-frames.xsl
Normal file
972
android/tools/ant/etc/junit-frames.xsl
Normal file
@ -0,0 +1,972 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:redirect="http://xml.apache.org/xalan/redirect"
|
||||
xmlns:string="xalan://java.lang.String"
|
||||
extension-element-prefixes="redirect">
|
||||
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator=","/>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
Sample stylesheet to be used with Ant JUnitReport output.
|
||||
|
||||
It creates a set of HTML files a la javadoc where you can browse easily
|
||||
through all packages and classes.
|
||||
|
||||
-->
|
||||
<xsl:param name="output.dir" select="'.'"/>
|
||||
<xsl:param name="TITLE">Unit Test Results.</xsl:param>
|
||||
|
||||
|
||||
<xsl:template match="testsuites">
|
||||
<!-- create the index.html -->
|
||||
<redirect:write file="{$output.dir}/index.html">
|
||||
<xsl:call-template name="index.html"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the stylesheet.css -->
|
||||
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||
<xsl:call-template name="stylesheet.css"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the overview-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||
<xsl:apply-templates select="." mode="all.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-classes.html at the root -->
|
||||
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||
<xsl:apply-templates select="." mode="all.classes"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-tests.html at the root -->
|
||||
<redirect:write file="{$output.dir}/all-tests.html">
|
||||
<xsl:apply-templates select="." mode="all.tests"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the alltests-fails.html at the root -->
|
||||
<redirect:write file="{$output.dir}/alltests-fails.html">
|
||||
<xsl:apply-templates select="." mode="all.tests">
|
||||
<xsl:with-param name="type" select="'fails'"/>
|
||||
</xsl:apply-templates>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the alltests-errors.html at the root -->
|
||||
<redirect:write file="{$output.dir}/alltests-errors.html">
|
||||
<xsl:apply-templates select="." mode="all.tests">
|
||||
<xsl:with-param name="type" select="'errors'"/>
|
||||
</xsl:apply-templates>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the alltests-skipped.html at the root -->
|
||||
<redirect:write file="{$output.dir}/alltests-skipped.html">
|
||||
<xsl:apply-templates select="." mode="all.tests">
|
||||
<xsl:with-param name="type" select="'skipped'"/>
|
||||
</xsl:apply-templates>
|
||||
</redirect:write>
|
||||
|
||||
<!-- process all packages -->
|
||||
<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||
<xsl:call-template name="package">
|
||||
<xsl:with-param name="name" select="@package"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="package">
|
||||
<xsl:param name="name"/>
|
||||
<xsl:variable name="package.dir">
|
||||
<xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
|
||||
<xsl:if test="$name = ''">.</xsl:if>
|
||||
</xsl:variable>
|
||||
<!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
|
||||
<!-- create a classes-list.html in the package directory -->
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
|
||||
<xsl:call-template name="classes.list">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create a package-summary.html in the package directory -->
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
|
||||
<xsl:call-template name="package.summary">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</redirect:write>
|
||||
|
||||
<!-- for each class, creates a @name.html -->
|
||||
<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
|
||||
<xsl:for-each select="/testsuites/testsuite[@package = $name]">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}.html">
|
||||
<xsl:apply-templates select="." mode="class.details"/>
|
||||
</redirect:write>
|
||||
<xsl:if test="string-length(./system-out)!=0">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-out.html">
|
||||
<html>
|
||||
<head>
|
||||
<title>Standard Output from <xsl:value-of select="@name"/></title>
|
||||
</head>
|
||||
<body>
|
||||
<pre><xsl:value-of select="./system-out"/></pre>
|
||||
</body>
|
||||
</html>
|
||||
</redirect:write>
|
||||
</xsl:if>
|
||||
<xsl:if test="string-length(./system-err)!=0">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-err.html">
|
||||
<html>
|
||||
<head>
|
||||
<title>Standard Error from <xsl:value-of select="@name"/></title>
|
||||
</head>
|
||||
<body>
|
||||
<pre><xsl:value-of select="./system-err"/></pre>
|
||||
</body>
|
||||
</html>
|
||||
</redirect:write>
|
||||
</xsl:if>
|
||||
<xsl:if test="@failures != 0">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-fails.html">
|
||||
<xsl:apply-templates select="." mode="class.details">
|
||||
<xsl:with-param name="type" select="'fails'"/>
|
||||
</xsl:apply-templates>
|
||||
</redirect:write>
|
||||
</xsl:if>
|
||||
<xsl:if test="@errors != 0">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-errors.html">
|
||||
<xsl:apply-templates select="." mode="class.details">
|
||||
<xsl:with-param name="type" select="'errors'"/>
|
||||
</xsl:apply-templates>
|
||||
</redirect:write>
|
||||
</xsl:if>
|
||||
<xsl:if test="@skipped != 0">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-skipped.html">
|
||||
<xsl:apply-templates select="." mode="class.details">
|
||||
<xsl:with-param name="type" select="'skipped'"/>
|
||||
</xsl:apply-templates>
|
||||
</redirect:write>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="index.html">
|
||||
<html>
|
||||
<head>
|
||||
<title><xsl:value-of select="$TITLE"/></title>
|
||||
</head>
|
||||
<frameset cols="20%,80%">
|
||||
<frameset rows="30%,70%">
|
||||
<frame src="overview-frame.html" name="packageListFrame"/>
|
||||
<frame src="allclasses-frame.html" name="classListFrame"/>
|
||||
</frameset>
|
||||
<frame src="overview-summary.html" name="classFrame"/>
|
||||
<noframes>
|
||||
<h2>Frame Alert</h2>
|
||||
<p>
|
||||
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||
</p>
|
||||
</noframes>
|
||||
</frameset>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!-- this is the stylesheet css to use for nearly everything -->
|
||||
<xsl:template name="stylesheet.css">
|
||||
body {
|
||||
font:normal 68% verdana,arial,helvetica;
|
||||
color:#000000;
|
||||
}
|
||||
table tr td, table tr th {
|
||||
font-size: 68%;
|
||||
}
|
||||
table.details tr th{
|
||||
font-weight: bold;
|
||||
text-align:left;
|
||||
background:#a6caf0;
|
||||
}
|
||||
table.details tr td{
|
||||
background:#eeeee0;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height:1.5em;
|
||||
margin-top:0.5em; margin-bottom:1.0em;
|
||||
}
|
||||
h1 {
|
||||
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||
}
|
||||
h2 {
|
||||
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||
}
|
||||
h3 {
|
||||
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||
}
|
||||
h4 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h5 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h6 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
.Error {
|
||||
font-weight:bold; color:red;
|
||||
}
|
||||
.Failure {
|
||||
font-weight:bold; color:purple;
|
||||
}
|
||||
.Properties {
|
||||
text-align:right;
|
||||
}
|
||||
</xsl:template>
|
||||
|
||||
<!-- Create list of all/failed/errored/skipped tests -->
|
||||
<xsl:template match="testsuites" mode="all.tests">
|
||||
<xsl:param name="type" select="'all'"/>
|
||||
<html>
|
||||
<xsl:variable name="title">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$type = 'fails'">
|
||||
<xsl:text>All Failures</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$type = 'errors'">
|
||||
<xsl:text>All Errors</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$type = 'skipped'">
|
||||
<xsl:text>All Skipped</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>All Tests</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<head>
|
||||
<title>Unit Test Results: <xsl:value-of select="$title"/></title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h2><xsl:value-of select="$title"/></h2>
|
||||
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testcase.test.header">
|
||||
<xsl:with-param name="show.class" select="'yes'"/>
|
||||
</xsl:call-template>
|
||||
<!--
|
||||
test can even not be started at all (failure to load the class)
|
||||
so report the error directly
|
||||
-->
|
||||
<xsl:if test="./error">
|
||||
<tr class="Error">
|
||||
<td colspan="4">
|
||||
<xsl:apply-templates select="./error"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$type = 'fails'">
|
||||
<xsl:apply-templates select=".//testcase[failure]" mode="print.test">
|
||||
<xsl:with-param name="show.class" select="'yes'"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:when>
|
||||
<xsl:when test="$type = 'errors'">
|
||||
<xsl:apply-templates select=".//testcase[error]" mode="print.test">
|
||||
<xsl:with-param name="show.class" select="'yes'"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:when>
|
||||
<xsl:when test="$type = 'skipped'">
|
||||
<xsl:apply-templates select=".//testcase[skipped]" mode="print.test">
|
||||
<xsl:with-param name="show.class" select="'yes'"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select=".//testcase" mode="print.test">
|
||||
<xsl:with-param name="show.class" select="'yes'"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- ======================================================================
|
||||
This page is created for every testsuite class.
|
||||
It prints a summary of the testsuite and detailed information about
|
||||
testcase methods.
|
||||
====================================================================== -->
|
||||
<xsl:template match="testsuite" mode="class.details">
|
||||
<xsl:param name="type" select="'all'"/>
|
||||
<xsl:variable name="package.name" select="@package"/>
|
||||
<xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
|
||||
<html>
|
||||
<head>
|
||||
<title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$package.name"/>
|
||||
</xsl:call-template>
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
var TestCases = new Array();
|
||||
var cur;
|
||||
<xsl:apply-templates select="properties"/>
|
||||
</script>
|
||||
<script type="text/javascript" language="JavaScript"><![CDATA[
|
||||
function displayProperties (name) {
|
||||
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
|
||||
var doc = win.document;
|
||||
doc.open();
|
||||
doc.write("<html><head><title>Properties of " + name + "</title>");
|
||||
doc.write("<style type=\"text/css\">");
|
||||
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
|
||||
doc.write("table tr td, table tr th { font-size: 68%; }");
|
||||
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
|
||||
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
|
||||
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
|
||||
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
|
||||
doc.write("</style>");
|
||||
doc.write("</head><body>");
|
||||
doc.write("<h3>Properties of " + name + "</h3>");
|
||||
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
|
||||
doc.write("<table class='properties'>");
|
||||
doc.write("<tr><th>Name</th><th>Value</th></tr>");
|
||||
for (prop in TestCases[name]) {
|
||||
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
|
||||
}
|
||||
doc.write("</table>");
|
||||
doc.write("</body></html>");
|
||||
doc.close();
|
||||
win.focus();
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h3>Class <xsl:value-of select="$class.name"/></h3>
|
||||
|
||||
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
<xsl:apply-templates select="." mode="print.test"/>
|
||||
</table>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="$type = 'fails'">
|
||||
<h2>Failures</h2>
|
||||
</xsl:when>
|
||||
<xsl:when test="$type = 'errors'">
|
||||
<h2>Errors</h2>
|
||||
</xsl:when>
|
||||
<xsl:when test="$type = 'skipped'">
|
||||
<h2>Skipped</h2>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<h2>Tests</h2>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testcase.test.header"/>
|
||||
<!--
|
||||
test can even not be started at all (failure to load the class)
|
||||
so report the error directly
|
||||
-->
|
||||
<xsl:if test="./error">
|
||||
<tr class="Error">
|
||||
<td colspan="4"><xsl:apply-templates select="./error"/></td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$type = 'fails'">
|
||||
<xsl:apply-templates select="./testcase[failure]" mode="print.test"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$type = 'errors'">
|
||||
<xsl:apply-templates select="./testcase[error]" mode="print.test"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$type = 'skipped'">
|
||||
<xsl:apply-templates select="./testcase[skipped]" mode="print.test"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="./testcase" mode="print.test"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</table>
|
||||
<div class="Properties">
|
||||
<a>
|
||||
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
|
||||
Properties »
|
||||
</a>
|
||||
</div>
|
||||
<xsl:if test="string-length(./system-out)!=0">
|
||||
<div class="Properties">
|
||||
<a>
|
||||
<xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-out.html</xsl:attribute>
|
||||
System.out »
|
||||
</a>
|
||||
</div>
|
||||
</xsl:if>
|
||||
<xsl:if test="string-length(./system-err)!=0">
|
||||
<div class="Properties">
|
||||
<a>
|
||||
<xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-err.html</xsl:attribute>
|
||||
System.err »
|
||||
</a>
|
||||
</div>
|
||||
</xsl:if>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
Write properties into a JavaScript data structure.
|
||||
This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
|
||||
-->
|
||||
<xsl:template match="properties">
|
||||
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
|
||||
<xsl:for-each select="property">
|
||||
<xsl:sort select="@name"/>
|
||||
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- ======================================================================
|
||||
This page is created for every package.
|
||||
It prints the name of all classes that belongs to this package.
|
||||
@param name the package name to print classes.
|
||||
====================================================================== -->
|
||||
<!-- list of classes in a package -->
|
||||
<xsl:template name="classes.list">
|
||||
<xsl:param name="name"/>
|
||||
<html>
|
||||
<head>
|
||||
<title>Unit Test Classes: <xsl:value-of select="$name"/></title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<h2><a href="package-summary.html" target="classFrame">
|
||||
<xsl:value-of select="$name"/>
|
||||
<xsl:if test="$name = ''"><none></xsl:if>
|
||||
</a></h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Classes</h2>
|
||||
<table width="100%">
|
||||
<xsl:for-each select="/testsuites/testsuite[./@package = $name]">
|
||||
<xsl:sort select="@name"/>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a href="{@id}_{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
Creates an all-classes.html file that contains a link to all package-summary.html
|
||||
on each class.
|
||||
-->
|
||||
<xsl:template match="testsuites" mode="all.classes">
|
||||
<html>
|
||||
<head>
|
||||
<title>All Unit Test Classes</title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Classes</h2>
|
||||
<table width="100%">
|
||||
<xsl:apply-templates select="testsuite" mode="all.classes">
|
||||
<xsl:sort select="@name"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testsuite" mode="all.classes">
|
||||
<xsl:variable name="package.name" select="@package"/>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a target="classFrame">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:if test="not($package.name='')">
|
||||
<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
|
||||
</xsl:if><xsl:value-of select="@id"/>_<xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="@name"/>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
Creates an html file that contains a link to all package-summary.html files on
|
||||
each package existing on testsuites.
|
||||
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||
-->
|
||||
<xsl:template match="testsuites" mode="all.packages">
|
||||
<html>
|
||||
<head>
|
||||
<title>All Unit Test Packages</title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
|
||||
<h2>Packages</h2>
|
||||
<table width="100%">
|
||||
<xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
|
||||
<xsl:sort select="@package"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testsuite" mode="all.packages">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
|
||||
<xsl:value-of select="@package"/>
|
||||
<xsl:if test="@package = ''"><none></xsl:if>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="testsuites" mode="overview.packages">
|
||||
<html>
|
||||
<head>
|
||||
<title>Unit Test Results: Summary</title>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h2>Summary</h2>
|
||||
<xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
|
||||
<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
|
||||
<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
|
||||
<xsl:variable name="skippedCount" select="sum(testsuite/@skipped)" />
|
||||
<xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
|
||||
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<tr valign="top">
|
||||
<th>Tests</th>
|
||||
<th>Failures</th>
|
||||
<th>Errors</th>
|
||||
<th>Skipped</th>
|
||||
<th>Success rate</th>
|
||||
<th>Time</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||
<xsl:otherwise>Pass</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><a title="Display all tests" href="all-tests.html"><xsl:value-of select="$testCount"/></a></td>
|
||||
<td><a title="Display all failures" href="alltests-fails.html"><xsl:value-of select="$failureCount"/></a></td>
|
||||
<td><a title="Display all errors" href="alltests-errors.html"><xsl:value-of select="$errorCount"/></a></td>
|
||||
<td><a title="Display all skipped test" href="alltests-skipped.html"><xsl:value-of select="$skippedCount" /></a></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-percent">
|
||||
<xsl:with-param name="value" select="$successRate"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="$timeCount"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table border="0" width="95%">
|
||||
<tr>
|
||||
<td style="text-align: justify;">
|
||||
Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Packages</h2>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
<xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||
<xsl:sort select="@package" order="ascending"/>
|
||||
<!-- get the node set containing all testsuites that have the same package -->
|
||||
<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
|
||||
<tr valign="top">
|
||||
<!-- display a failure if there is any failure/error in the package -->
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="sum($insamepackage/@errors) > 0">Error</xsl:when>
|
||||
<xsl:when test="sum($insamepackage/@failures) > 0">Failure</xsl:when>
|
||||
<xsl:otherwise>Pass</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><a href="./{translate(@package,'.','/')}/package-summary.html">
|
||||
<xsl:value-of select="@package"/>
|
||||
<xsl:if test="@package = ''"><none></xsl:if>
|
||||
</a></td>
|
||||
<td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
|
||||
<td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
|
||||
<td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
|
||||
<td><xsl:value-of select="sum($insamepackage/@skipped)" /></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="sum($insamepackage/@time)"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td><xsl:value-of select="$insamepackage/@timestamp"/></td>
|
||||
<td><xsl:value-of select="$insamepackage/@hostname"/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="package.summary">
|
||||
<xsl:param name="name"/>
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h3>Package <xsl:value-of select="$name"/></h3>
|
||||
|
||||
<!--table border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="class.metrics.header"/>
|
||||
<xsl:apply-templates select="." mode="print.metrics"/>
|
||||
</table-->
|
||||
|
||||
<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
|
||||
<xsl:if test="count($insamepackage) > 0">
|
||||
<h2>Classes</h2>
|
||||
<p>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
<xsl:apply-templates select="$insamepackage" mode="print.test">
|
||||
<xsl:sort select="@name"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</p>
|
||||
</xsl:if>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
transform string like a.b.c to ../../../
|
||||
@param path the path to transform into a descending directory path
|
||||
-->
|
||||
<xsl:template name="path">
|
||||
<xsl:param name="path"/>
|
||||
<xsl:if test="contains($path,'.')">
|
||||
<xsl:text>../</xsl:text>
|
||||
<xsl:call-template name="path">
|
||||
<xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(contains($path,'.')) and not($path = '')">
|
||||
<xsl:text>../</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- create the link to the stylesheet based on the package name -->
|
||||
<xsl:template name="create.stylesheet.link">
|
||||
<xsl:param name="package.name"/>
|
||||
<link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Page HEADER -->
|
||||
<xsl:template name="pageHeader">
|
||||
<h1><xsl:value-of select="$TITLE"/></h1>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td align="left"></td>
|
||||
<td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://ant.apache.org/">Ant</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- class header -->
|
||||
<xsl:template name="testsuite.test.header">
|
||||
<tr valign="top">
|
||||
<th width="80%">Name</th>
|
||||
<th>Tests</th>
|
||||
<th>Errors</th>
|
||||
<th>Failures</th>
|
||||
<th>Skipped</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
<th nowrap="nowrap">Time Stamp</th>
|
||||
<th>Host</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- method header -->
|
||||
<xsl:template name="testcase.test.header">
|
||||
<xsl:param name="show.class" select="''"/>
|
||||
<tr valign="top">
|
||||
<xsl:if test="boolean($show.class)">
|
||||
<th>Class</th>
|
||||
</xsl:if>
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
<th width="80%">Type</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- class information -->
|
||||
<xsl:template match="testsuite" mode="print.test">
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@errors[.> 0]">Error</xsl:when>
|
||||
<xsl:when test="@failures[.> 0]">Failure</xsl:when>
|
||||
<xsl:otherwise>Pass</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><a title="Display all tests" href="{@id}_{@name}.html"><xsl:value-of select="@name"/></a></td>
|
||||
<td><a title="Display all tests" href="{@id}_{@name}.html"><xsl:apply-templates select="@tests"/></a></td>
|
||||
<td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@errors != 0">
|
||||
<a title="Display only errors" href="{@id}_{@name}-errors.html"><xsl:apply-templates select="@errors"/></a>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="@errors"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@failures != 0">
|
||||
<a title="Display only failures" href="{@id}_{@name}-fails.html"><xsl:apply-templates select="@failures"/></a>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="@failures"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@skipped != 0">
|
||||
<a title="Display only skipped tests" href="{@id}_{@name}-skipped.html"><xsl:apply-templates select="@skipped"/></a>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="@skipped"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</td>
|
||||
<td><xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="@time"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td><xsl:apply-templates select="@timestamp"/></td>
|
||||
<td><xsl:apply-templates select="@hostname"/></td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testcase" mode="print.test">
|
||||
<xsl:param name="show.class" select="''"/>
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="error">Error</xsl:when>
|
||||
<xsl:when test="failure">Failure</xsl:when>
|
||||
<xsl:otherwise>TableRowColor</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:variable name="class.href">
|
||||
<xsl:value-of select="concat(translate(../@package,'.','/'), '/', ../@id, '_', ../@name, '.html')"/>
|
||||
</xsl:variable>
|
||||
<xsl:if test="boolean($show.class)">
|
||||
<td><a href="{$class.href}"><xsl:value-of select="../@name"/></a></td>
|
||||
</xsl:if>
|
||||
<td>
|
||||
<a name="{@name}"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="boolean($show.class)">
|
||||
<a href="{concat($class.href, '#', @name)}"><xsl:value-of select="@name"/></a>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="failure">
|
||||
<td>Failure</td>
|
||||
<td><xsl:apply-templates select="failure"/></td>
|
||||
</xsl:when>
|
||||
<xsl:when test="error">
|
||||
<td>Error</td>
|
||||
<td><xsl:apply-templates select="error"/></td>
|
||||
</xsl:when>
|
||||
<xsl:when test="skipped">
|
||||
<td>Skipped</td>
|
||||
<td><xsl:apply-templates select="skipped"/></td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td>Success</td>
|
||||
<td></td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="@time"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Note : the below template skipped, error and failure are the same style
|
||||
so just call the same style store in the toolkit template -->
|
||||
<xsl:template match="failure">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="error">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="skipped">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Style for the error and failure in the testcase template -->
|
||||
<xsl:template name="display-failures">
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(@message)">N/A</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@message"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- display the stacktrace -->
|
||||
<br/><br/>
|
||||
<code>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="."/>
|
||||
</xsl:call-template>
|
||||
</code>
|
||||
<!-- the latter is better but might be problematic for non-21" monitors... -->
|
||||
<!--pre><xsl:value-of select="."/></pre-->
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="JS-escape">
|
||||
<xsl:param name="string"/>
|
||||
<xsl:param name="tmp1" select="string:replaceAll(string:new(string($string)),'\\','\\\\')"/>
|
||||
<xsl:param name="tmp2" select="string:replaceAll(string:new(string($tmp1)),"'","\\'")"/>
|
||||
<xsl:param name="tmp3" select="string:replaceAll(string:new(string($tmp2))," ",'\\n')"/>
|
||||
<xsl:param name="tmp4" select="string:replaceAll(string:new(string($tmp3))," ",'\\r')"/>
|
||||
<xsl:value-of select="$tmp4"/>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
template that will convert a carriage return into a br tag
|
||||
@param word the text from which to convert CR to BR tag
|
||||
-->
|
||||
<xsl:template name="br-replace">
|
||||
<xsl:param name="word"/>
|
||||
<xsl:param name="splitlimit">32</xsl:param>
|
||||
<xsl:variable name="secondhalflen" select="(string-length($word)+(string-length($word) mod 2)) div 2"/>
|
||||
<xsl:variable name="secondhalfword" select="substring($word, $secondhalflen)"/>
|
||||
<!-- When word is very big, a recursive replace is very heap/stack expensive, so subdivide on line break after middle of string -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="(string-length($word) > $splitlimit) and (contains($secondhalfword, '
'))">
|
||||
<xsl:variable name="secondhalfend" select="substring-after($secondhalfword, '
')"/>
|
||||
<xsl:variable name="firsthalflen" select="string-length($word) - $secondhalflen"/>
|
||||
<xsl:variable name="firsthalfword" select="substring($word, 1, $firsthalflen)"/>
|
||||
<xsl:variable name="firsthalfend" select="substring-before($secondhalfword, '
')"/>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="concat($firsthalfword,$firsthalfend)"/>
|
||||
</xsl:call-template>
|
||||
<br/>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="$secondhalfend"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="contains($word, '
')">
|
||||
<xsl:value-of select="substring-before($word, '
')"/>
|
||||
<br/>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="substring-after($word, '
')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$word"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="display-time">
|
||||
<xsl:param name="value"/>
|
||||
<xsl:value-of select="format-number($value,'0.000')"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="display-percent">
|
||||
<xsl:param name="value"/>
|
||||
<xsl:value-of select="format-number($value,'0.00%')"/>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
513
android/tools/ant/etc/junit-noframes.xsl
Normal file
513
android/tools/ant/etc/junit-noframes.xsl
Normal file
@ -0,0 +1,513 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:string="xalan://java.lang.String">
|
||||
<xsl:output method="html" indent="yes" encoding="UTF-8"
|
||||
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<xsl:param name="TITLE">Unit Test Results.</xsl:param>
|
||||
|
||||
<!--
|
||||
|
||||
Sample stylesheet to be used with Ant JUnitReport output.
|
||||
|
||||
It creates a non-framed report that can be useful to send via
|
||||
e-mail or such.
|
||||
|
||||
-->
|
||||
<xsl:template match="testsuites">
|
||||
<html>
|
||||
<head>
|
||||
<title><xsl:value-of select="$TITLE"/></title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font:normal 68% verdana,arial,helvetica;
|
||||
color:#000000;
|
||||
}
|
||||
table tr td, table tr th {
|
||||
font-size: 68%;
|
||||
}
|
||||
table.details tr th{
|
||||
font-weight: bold;
|
||||
text-align:left;
|
||||
background:#a6caf0;
|
||||
}
|
||||
table.details tr td{
|
||||
background:#eeeee0;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height:1.5em;
|
||||
margin-top:0.5em; margin-bottom:1.0em;
|
||||
}
|
||||
h1 {
|
||||
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||
}
|
||||
h2 {
|
||||
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||
}
|
||||
h3 {
|
||||
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||
}
|
||||
h4 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h5 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h6 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
.Error {
|
||||
font-weight:bold; color:red;
|
||||
}
|
||||
.Failure {
|
||||
font-weight:bold; color:purple;
|
||||
}
|
||||
.Properties {
|
||||
text-align:right;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
var TestCases = new Array();
|
||||
var cur;
|
||||
<xsl:for-each select="./testsuite">
|
||||
<xsl:apply-templates select="properties"/>
|
||||
</xsl:for-each>
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" language="JavaScript"><![CDATA[
|
||||
function displayProperties (name) {
|
||||
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
|
||||
var doc = win.document;
|
||||
doc.open();
|
||||
doc.write("<html><head><title>Properties of " + name + "</title>");
|
||||
doc.write("<style>")
|
||||
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
|
||||
doc.write("table tr td, table tr th { font-size: 68%; }");
|
||||
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
|
||||
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
|
||||
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
|
||||
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
|
||||
doc.write("</style>");
|
||||
doc.write("</head><body>");
|
||||
doc.write("<h3>Properties of " + name + "</h3>");
|
||||
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
|
||||
doc.write("<table class='properties'>");
|
||||
doc.write("<tr><th>Name</th><th>Value</th></tr>");
|
||||
for (prop in TestCases[name]) {
|
||||
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
|
||||
}
|
||||
doc.write("</table>");
|
||||
doc.write("</body></html>");
|
||||
doc.close();
|
||||
win.focus();
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top"></a>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
|
||||
<!-- Summary part -->
|
||||
<xsl:call-template name="summary"/>
|
||||
<hr size="1" width="95%" align="left"/>
|
||||
|
||||
<!-- Package List part -->
|
||||
<xsl:call-template name="packagelist"/>
|
||||
<hr size="1" width="95%" align="left"/>
|
||||
|
||||
<!-- For each package create its part -->
|
||||
<xsl:call-template name="packages"/>
|
||||
<hr size="1" width="95%" align="left"/>
|
||||
|
||||
<!-- For each class create the part -->
|
||||
<xsl:call-template name="classes"/>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- Write a list of all packages with an hyperlink to the anchor of -->
|
||||
<!-- of the package name. -->
|
||||
<!-- ================================================================== -->
|
||||
<xsl:template name="packagelist">
|
||||
<h2>Packages</h2>
|
||||
Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
<!-- list all packages recursively -->
|
||||
<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||
<xsl:sort select="@package"/>
|
||||
<xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
|
||||
<xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
|
||||
<xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
|
||||
<xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
|
||||
<xsl:variable name="skippedCount" select="sum($testsuites-in-package/@skipped)" />
|
||||
<xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
|
||||
|
||||
<!-- write a summary for the package -->
|
||||
<tr valign="top">
|
||||
<!-- set a nice color depending if there is an error/failure -->
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
|
||||
<td><xsl:value-of select="$testCount"/></td>
|
||||
<td><xsl:value-of select="$errorCount"/></td>
|
||||
<td><xsl:value-of select="$failureCount"/></td>
|
||||
<td><xsl:value-of select="$skippedCount" /></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="$timeCount"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td><xsl:value-of select="$testsuites-in-package/@timestamp"/></td>
|
||||
<td><xsl:value-of select="$testsuites-in-package/@hostname"/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- Write a package level report -->
|
||||
<!-- It creates a table with values from the document: -->
|
||||
<!-- Name | Tests | Errors | Failures | Time -->
|
||||
<!-- ================================================================== -->
|
||||
<xsl:template name="packages">
|
||||
<!-- create an anchor to this package name -->
|
||||
<xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||
<xsl:sort select="@package"/>
|
||||
<a name="{@package}"></a>
|
||||
<h3>Package <xsl:value-of select="@package"/></h3>
|
||||
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
|
||||
<!-- match the testsuites of this package -->
|
||||
<xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
|
||||
</table>
|
||||
<a href="#top">Back to top</a>
|
||||
<p/>
|
||||
<p/>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="classes">
|
||||
<xsl:for-each select="testsuite">
|
||||
<xsl:sort select="@name"/>
|
||||
<!-- create an anchor to this class name -->
|
||||
<a name="{@name}"></a>
|
||||
<h3>TestCase <xsl:value-of select="@name"/></h3>
|
||||
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testcase.test.header"/>
|
||||
<!--
|
||||
test can even not be started at all (failure to load the class)
|
||||
so report the error directly
|
||||
-->
|
||||
<xsl:if test="./error">
|
||||
<tr class="Error">
|
||||
<td colspan="4"><xsl:apply-templates select="./error"/></td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="./testcase" mode="print.test"/>
|
||||
</table>
|
||||
<div class="Properties">
|
||||
<a>
|
||||
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
|
||||
Properties »
|
||||
</a>
|
||||
</div>
|
||||
<p/>
|
||||
|
||||
<a href="#top">Back to top</a>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="summary">
|
||||
<h2>Summary</h2>
|
||||
<xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
|
||||
<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
|
||||
<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
|
||||
<xsl:variable name="skippedCount" select="sum(testsuite/@skipped)" />
|
||||
<xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
|
||||
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<tr valign="top">
|
||||
<th>Tests</th>
|
||||
<th>Failures</th>
|
||||
<th>Errors</th>
|
||||
<th>Skipped</th>
|
||||
<th>Success rate</th>
|
||||
<th>Time</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><xsl:value-of select="$testCount"/></td>
|
||||
<td><xsl:value-of select="$failureCount"/></td>
|
||||
<td><xsl:value-of select="$errorCount"/></td>
|
||||
<td><xsl:value-of select="$skippedCount" /></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-percent">
|
||||
<xsl:with-param name="value" select="$successRate"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="$timeCount"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<table border="0" width="95%">
|
||||
<tr>
|
||||
<td style="text-align: justify;">
|
||||
Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
Write properties into a JavaScript data structure.
|
||||
This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
|
||||
-->
|
||||
<xsl:template match="properties">
|
||||
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
|
||||
<xsl:for-each select="property">
|
||||
<xsl:sort select="@name"/>
|
||||
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Page HEADER -->
|
||||
<xsl:template name="pageHeader">
|
||||
<h1><xsl:value-of select="$TITLE"/></h1>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td align="left"></td>
|
||||
<td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://ant.apache.org/ant'>Ant</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testsuite" mode="header">
|
||||
<tr valign="top">
|
||||
<th width="80%">Name</th>
|
||||
<th>Tests</th>
|
||||
<th>Errors</th>
|
||||
<th>Failures</th>
|
||||
<th>Skipped</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- class header -->
|
||||
<xsl:template name="testsuite.test.header">
|
||||
<tr valign="top">
|
||||
<th width="80%">Name</th>
|
||||
<th>Tests</th>
|
||||
<th>Errors</th>
|
||||
<th>Failures</th>
|
||||
<th>Skipped</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
<th nowrap="nowrap">Time Stamp</th>
|
||||
<th>Host</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- method header -->
|
||||
<xsl:template name="testcase.test.header">
|
||||
<tr valign="top">
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
<th width="80%">Type</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- class information -->
|
||||
<xsl:template match="testsuite" mode="print.test">
|
||||
<tr valign="top">
|
||||
<!-- set a nice color depending if there is an error/failure -->
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@failures[.> 0]">Failure</xsl:when>
|
||||
<xsl:when test="@errors[.> 0]">Error</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
|
||||
<!-- print testsuite information -->
|
||||
<td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
|
||||
<td><xsl:value-of select="@tests"/></td>
|
||||
<td><xsl:value-of select="@errors"/></td>
|
||||
<td><xsl:value-of select="@failures"/></td>
|
||||
<td><xsl:value-of select="@skipped" /></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="@time"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td><xsl:apply-templates select="@timestamp"/></td>
|
||||
<td><xsl:apply-templates select="@hostname"/></td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testcase" mode="print.test">
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="failure | error">Error</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><xsl:value-of select="@name"/></td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="failure">
|
||||
<td>Failure</td>
|
||||
<td><xsl:apply-templates select="failure"/></td>
|
||||
</xsl:when>
|
||||
<xsl:when test="error">
|
||||
<td>Error</td>
|
||||
<td><xsl:apply-templates select="error"/></td>
|
||||
</xsl:when>
|
||||
<xsl:when test="skipped">
|
||||
<td>Skipped</td>
|
||||
<td><xsl:apply-templates select="skipped"/></td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td>Success</td>
|
||||
<td></td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="@time"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="failure">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="error">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="skipped">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Style for the error, failure and skipped in the testcase template -->
|
||||
<xsl:template name="display-failures">
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(@message)">N/A</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@message"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- display the stacktrace -->
|
||||
<code>
|
||||
<br/><br/>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="."/>
|
||||
</xsl:call-template>
|
||||
</code>
|
||||
<!-- the later is better but might be problematic for non-21" monitors... -->
|
||||
<!--pre><xsl:value-of select="."/></pre-->
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="JS-escape">
|
||||
<xsl:param name="string"/>
|
||||
<xsl:param name="tmp1" select="string:replaceAll(string:new(string($string)),'\\','\\\\')"/>
|
||||
<xsl:param name="tmp2" select="string:replaceAll(string:new(string($tmp1)),"'","\\'")"/>
|
||||
<xsl:param name="tmp3" select="string:replaceAll(string:new(string($tmp2))," ",'\\n')"/>
|
||||
<xsl:param name="tmp4" select="string:replaceAll(string:new(string($tmp3))," ",'\\r')"/>
|
||||
<xsl:value-of select="$tmp4"/>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
template that will convert a carriage return into a br tag
|
||||
@param word the text from which to convert CR to BR tag
|
||||
-->
|
||||
<xsl:template name="br-replace">
|
||||
<xsl:param name="word"/>
|
||||
<xsl:param name="splitlimit">32</xsl:param>
|
||||
<xsl:variable name="secondhalflen" select="(string-length($word)+(string-length($word) mod 2)) div 2"/>
|
||||
<xsl:variable name="secondhalfword" select="substring($word, $secondhalflen)"/>
|
||||
<!-- When word is very big, a recursive replace is very heap/stack expensive, so subdivide on line break after middle of string -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="(string-length($word) > $splitlimit) and (contains($secondhalfword, '
'))">
|
||||
<xsl:variable name="secondhalfend" select="substring-after($secondhalfword, '
')"/>
|
||||
<xsl:variable name="firsthalflen" select="string-length($word) - $secondhalflen"/>
|
||||
<xsl:variable name="firsthalfword" select="substring($word, 1, $firsthalflen)"/>
|
||||
<xsl:variable name="firsthalfend" select="substring-before($secondhalfword, '
')"/>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="concat($firsthalfword,$firsthalfend)"/>
|
||||
</xsl:call-template>
|
||||
<br/>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="$secondhalfend"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="contains($word, '
')">
|
||||
<xsl:value-of select="substring-before($word, '
')"/>
|
||||
<br/>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="substring-after($word, '
')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$word"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="display-time">
|
||||
<xsl:param name="value"/>
|
||||
<xsl:value-of select="format-number($value,'0.000')"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="display-percent">
|
||||
<xsl:param name="value"/>
|
||||
<xsl:value-of select="format-number($value,'0.00%')"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
203
android/tools/ant/etc/log.xsl
Normal file
203
android/tools/ant/etc/log.xsl
Normal file
@ -0,0 +1,203 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
The purpose have this XSL is to provide a nice way to look at the output
|
||||
from the Ant XmlLogger (ie: ant -listener org.apache.tools.ant.XmlLogger )
|
||||
|
||||
@author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
|
||||
|
||||
-->
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<style type="text/css">
|
||||
.bannercell {
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
font:normal 100% arial,helvetica,sanserif;
|
||||
background-color:#FFFFFF;
|
||||
color:#000000;
|
||||
}
|
||||
table.status {
|
||||
font:bold 80% arial,helvetica,sanserif;
|
||||
background-color:#525D76;
|
||||
color:#ffffff;
|
||||
}
|
||||
table.log tr td, tr th {
|
||||
font-size: 80%;
|
||||
}
|
||||
.error {
|
||||
color:red;
|
||||
}
|
||||
.warn {
|
||||
color:brown;
|
||||
}
|
||||
.info {
|
||||
color:gray;
|
||||
}
|
||||
.debug{
|
||||
color:gray;
|
||||
}
|
||||
.failed {
|
||||
font-size:80%;
|
||||
background-color: red;
|
||||
color:#FFFFFF;
|
||||
font-weight: bold
|
||||
}
|
||||
.complete {
|
||||
font-size:80%;
|
||||
background-color: #525D76;
|
||||
color:#FFFFFF;
|
||||
font-weight: bold
|
||||
}
|
||||
.a td {
|
||||
background: #efefef;
|
||||
}
|
||||
.b td {
|
||||
background: #fff;
|
||||
}
|
||||
th, td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
background: #ccc;
|
||||
color: black;
|
||||
}
|
||||
table, th, td {
|
||||
border: none
|
||||
}
|
||||
h3 {
|
||||
font:bold 80% arial,helvetica,sanserif;
|
||||
background: #525D76;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 5px;
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- jakarta logo -->
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td valign="top" class="bannercell">
|
||||
<a href="http://jakarta.apache.org/">
|
||||
<img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
|
||||
</a>
|
||||
</td>
|
||||
<td style="text-align:right;vertical-align:bottom">
|
||||
<a href="http://ant.apache.org/">Apache Ant</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table border="0" width="100%">
|
||||
<tr><td><hr noshade="yes" size="1"/></td></tr>
|
||||
</table>
|
||||
|
||||
<xsl:apply-templates select="build"/>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="build">
|
||||
<!-- build status -->
|
||||
<table width="100%">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:if test="@error">failed</xsl:if>
|
||||
<xsl:if test="not(@error)">complete</xsl:if>
|
||||
</xsl:attribute>
|
||||
<tr>
|
||||
<xsl:if test="@error">
|
||||
<td nowrap="yes">Build Failed</td>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(@error)">
|
||||
<td nowrap="yes">Build Complete</td>
|
||||
</xsl:if>
|
||||
<td style="text-align:right" nowrap="yes">Total Time: <xsl:value-of select="@time"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<xsl:if test="@error">
|
||||
<tt><xsl:value-of select="@error"/></tt><br/>
|
||||
<i style="font-size:80%">See the <a href="#stacktrace" alt="Click for details">stacktrace</a>.</i>
|
||||
</xsl:if>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table border="1" cellspacing="2" cellpadding="3" width="100%" style="font-size:80%">
|
||||
<tr class="a"><td width="1">ant.file</td><td><xsl:value-of select="substring-after(//message[contains(text(),'ant.file')], '->')"/></td></tr>
|
||||
<tr class="b"><td width="1">ant.version</td><td><xsl:value-of select="substring-after(//message[contains(text(),'ant.version')], '->')"/></td></tr>
|
||||
<tr class="a"><td width="1">java.version</td><td><xsl:value-of select="substring-after(//message[contains(text(),'java.vm.version')], '->')"/></td></tr>
|
||||
<tr class="b"><td width="1">os.name</td><td><xsl:value-of select="substring-after(//message[contains(text(),'os.name')], '->')"/></td></tr>
|
||||
</table>
|
||||
<!-- build information -->
|
||||
<h3>Build events</h3>
|
||||
<table class="log" border="1" cellspacing="2" cellpadding="3" width="100%">
|
||||
<tr>
|
||||
<th nowrap="yes" align="left" width="1%">target</th>
|
||||
<th nowrap="yes" align="left" width="1%">task</th>
|
||||
<th nowrap="yes" align="left">message</th>
|
||||
</tr>
|
||||
<xsl:apply-templates select=".//message[@priority != 'debug']"/>
|
||||
</table>
|
||||
<p>
|
||||
<!-- stacktrace -->
|
||||
<xsl:if test="stacktrace">
|
||||
<a name="stacktrace"/>
|
||||
<h3>Error details</h3>
|
||||
<table width="100%">
|
||||
<tr><td>
|
||||
<pre><xsl:value-of select="stacktrace"/></pre>
|
||||
</td></tr>
|
||||
</table>
|
||||
</xsl:if>
|
||||
</p>
|
||||
</xsl:template>
|
||||
|
||||
<!-- report every message but those with debug priority -->
|
||||
<xsl:template match="message[@priority!='debug']">
|
||||
<tr valign="top">
|
||||
<!-- alternated row style -->
|
||||
<xsl:attribute name="class">
|
||||
<xsl:if test="position() mod 2 = 1">a</xsl:if>
|
||||
<xsl:if test="position() mod 2 = 0">b</xsl:if>
|
||||
</xsl:attribute>
|
||||
<td nowrap="yes" width="1%"><xsl:value-of select="../../@name"/></td>
|
||||
<td nowrap="yes" style="text-align:right" width="1%">[ <xsl:value-of select="../@name"/> ]</td>
|
||||
<td class="{@priority}" nowrap="yes">
|
||||
<xsl:value-of select="text()"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
502
android/tools/ant/etc/maudit-frames.xsl
Normal file
502
android/tools/ant/etc/maudit-frames.xsl
Normal file
@ -0,0 +1,502 @@
|
||||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:redirect="org.apache.xalan.lib.Redirect"
|
||||
extension-element-prefixes="redirect">
|
||||
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<!--
|
||||
|
||||
Stylesheet to transform an XML file generated by the Ant MAudit task into
|
||||
a set of JavaDoc-like HTML page to make pages more convenient to be browsed.
|
||||
|
||||
It use the Xalan redirect extension to write to multiple output files.
|
||||
|
||||
-->
|
||||
|
||||
<xsl:param name="output.dir" select="'.'"/>
|
||||
|
||||
|
||||
<xsl:template match="classes">
|
||||
<!-- create the index.html -->
|
||||
<redirect:write file="{$output.dir}/index.html">
|
||||
<xsl:call-template name="index.html"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the stylesheet.css -->
|
||||
<redirect:write file="{$output.dir}/stylesheet.css">
|
||||
<xsl:call-template name="stylesheet.css"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the overview-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-summary.html">
|
||||
<xsl:apply-templates select="." mode="overview.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-packages.html at the root -->
|
||||
<redirect:write file="{$output.dir}/overview-frame.html">
|
||||
<xsl:apply-templates select="." mode="all.packages"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create the all-classes.html at the root -->
|
||||
<redirect:write file="{$output.dir}/allclasses-frame.html">
|
||||
<xsl:apply-templates select="." mode="all.classes"/>
|
||||
</redirect:write>
|
||||
|
||||
<!-- process all packages -->
|
||||
<xsl:for-each select="./class[not(./@package = preceding-sibling::class/@package)]">
|
||||
<xsl:call-template name="package">
|
||||
<xsl:with-param name="name" select="@package"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="package">
|
||||
<xsl:param name="name"/>
|
||||
<xsl:variable name="package.dir">
|
||||
<xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
|
||||
<xsl:if test="$name = ''">.</xsl:if>
|
||||
</xsl:variable>
|
||||
<!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
|
||||
<!-- create a classes-list.html in the package directory -->
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
|
||||
<xsl:call-template name="classes.list">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</redirect:write>
|
||||
|
||||
<!-- create a package-summary.html in the package directory -->
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
|
||||
<xsl:call-template name="package.summary">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</redirect:write>
|
||||
|
||||
<!-- for each class, creates a @name.html -->
|
||||
<!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
|
||||
<xsl:for-each select="/classes/class[@package = $name]">
|
||||
<redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
|
||||
<xsl:apply-templates select="." mode="class.details"/>
|
||||
</redirect:write>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="index.html">
|
||||
<HTML>
|
||||
<HEAD><TITLE>Audit Results.</TITLE></HEAD>
|
||||
<FRAMESET cols="20%,80%">
|
||||
<FRAMESET rows="30%,70%">
|
||||
<FRAME src="overview-frame.html" name="packageListFrame"/>
|
||||
<FRAME src="allclasses-frame.html" name="classListFrame"/>
|
||||
</FRAMESET>
|
||||
<FRAME src="overview-summary.html" name="classFrame"/>
|
||||
</FRAMESET>
|
||||
<noframes>
|
||||
<H2>Frame Alert</H2>
|
||||
<P>
|
||||
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||
</P>
|
||||
</noframes>
|
||||
</HTML>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- this is the stylesheet css to use for nearly everything -->
|
||||
<xsl:template name="stylesheet.css">
|
||||
.bannercell {
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
body {
|
||||
margin-left: 10;
|
||||
margin-right: 10;
|
||||
font:normal 80% arial,helvetica,sanserif;
|
||||
background-color:#FFFFFF;
|
||||
color:#000000;
|
||||
}
|
||||
.a td {
|
||||
background: #efefef;
|
||||
}
|
||||
.b td {
|
||||
background: #fff;
|
||||
}
|
||||
th, td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
font-weight:bold;
|
||||
background: #ccc;
|
||||
color: black;
|
||||
}
|
||||
table, th, td {
|
||||
font-size:100%;
|
||||
border: none
|
||||
}
|
||||
table.log tr td, tr th {
|
||||
|
||||
}
|
||||
h2 {
|
||||
font-weight:bold;
|
||||
font-size:140%;
|
||||
margin-bottom: 5;
|
||||
}
|
||||
h3 {
|
||||
font-size:100%;
|
||||
font-weight:bold;
|
||||
background: #525D76;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 5px;
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- print the violations of the class -->
|
||||
<xsl:template match="class" mode="class.details">
|
||||
<xsl:variable name="package.name" select="@package"/>
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$package.name"/>
|
||||
</xsl:call-template>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
|
||||
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:call-template name="class.audit.header"/>
|
||||
<xsl:apply-templates select="." mode="print.audit"/>
|
||||
</table>
|
||||
|
||||
<H3>Violations</H3>
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:call-template name="violation.audit.header"/>
|
||||
<xsl:apply-templates select="./violation" mode="print.audit">
|
||||
<xsl:sort data-type="number" select="@line"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
<xsl:call-template name="pageFooter"/>
|
||||
</BODY>
|
||||
</HTML>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- list of classes in a package -->
|
||||
<xsl:template name="classes.list">
|
||||
<xsl:param name="name"/>
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="$name"/></a></H2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Classes</h2>
|
||||
<TABLE WIDTH="100%">
|
||||
<xsl:apply-templates select="/classes/class[./@package = $name]" mode="classes.list">
|
||||
<xsl:sort select="@name"/>
|
||||
</xsl:apply-templates>
|
||||
</TABLE>
|
||||
</BODY>
|
||||
</HTML>
|
||||
</xsl:template>
|
||||
<!-- the class to list -->
|
||||
<xsl:template match="class" mode="classes.list">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<!-- @bug naming to fix for inner classes -->
|
||||
<a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
Creates an all-classes.html file that contains a link to all package-summary.html
|
||||
on each class.
|
||||
-->
|
||||
<xsl:template match="classes" mode="all.classes">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Classes</h2>
|
||||
<table width="100%">
|
||||
<xsl:apply-templates select=".//class" mode="all.classes">
|
||||
<xsl:sort select="@name"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="class" mode="all.classes">
|
||||
<!-- (ancestor::package)[last()] is buggy in MSXML3 ? -->
|
||||
<xsl:variable name="package.name" select="@package"/>
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a target="classFrame">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:if test="not($package.name='')">
|
||||
<xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
|
||||
</xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="@name"/>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
Creates an html file that contains a link to all package-summary.html files on
|
||||
each package existing on testsuites.
|
||||
@bug there will be a problem here, I don't know yet how to handle unnamed package :(
|
||||
-->
|
||||
<xsl:template match="classes" mode="all.packages">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body>
|
||||
<h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
|
||||
<h2>Packages</h2>
|
||||
<table width="100%">
|
||||
<xsl:apply-templates select="class[not(./@package = preceding-sibling::class/@package)]" mode="all.packages">
|
||||
<xsl:sort select="@package" order="ascending"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="class" mode="all.packages">
|
||||
<tr>
|
||||
<td nowrap="nowrap">
|
||||
<a href="{translate(@package,'.','/')}/package-summary.html" target="classFrame">
|
||||
<xsl:value-of select="@package"/>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="classes" mode="overview.packages">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name"/>
|
||||
</xsl:call-template>
|
||||
</head>
|
||||
<body onload="open('allclasses-frame.html','classListFrame')">
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h3>Summary</h3>
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<tr>
|
||||
<th>Audited classes</th>
|
||||
<th>Reported classes</th>
|
||||
<th>Violations</th>
|
||||
</tr>
|
||||
<tr class="a">
|
||||
<td><xsl:value-of select="@audited"/></td>
|
||||
<td><xsl:value-of select="@reported"/></td>
|
||||
<td><xsl:value-of select="@violations"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table border="0" width="100%">
|
||||
<tr>
|
||||
<td style="text-align: justify;">
|
||||
Note: Rules checked have originated from style guidelines suggested by the language designers,
|
||||
experience from the Java development community and insite experience. Violations are generally
|
||||
reported with a reference to the <a href="http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html">Java Language Specifications</a> (JLS x.x.x)
|
||||
and Metamata Audit rules (x.x).
|
||||
Please consult these documents for additional information about violations.
|
||||
<p/>
|
||||
Rules checked also enforce adherence to <a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun Java coding guidelines</a> in use at Jakarta.
|
||||
<p/>
|
||||
One should note that these violations do not necessary underline errors but should be used
|
||||
as an indication for <i>possible</i> errors. As always, use your best judgment and review
|
||||
them carefully, it might save you hours of debugging.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Packages</h3>
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:call-template name="class.audit.header"/>
|
||||
<xsl:for-each select="class[not(./@package = preceding-sibling::class/@package)]">
|
||||
<xsl:sort select="@package" order="ascending"/>
|
||||
<tr>
|
||||
<xsl:call-template name="alternate-row"/>
|
||||
<td><a href="{translate(@package,'.','/')}/package-summary.html"><xsl:value-of select="@package"/></a></td>
|
||||
<td><xsl:value-of select="sum(/classes/class[./@package = current()/@package]/@violations)"/></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
<xsl:call-template name="pageFooter"/>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="package.summary">
|
||||
<xsl:param name="name"/>
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<xsl:call-template name="create.stylesheet.link">
|
||||
<xsl:with-param name="package.name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
<h3>Package <xsl:value-of select="$name"/></h3>
|
||||
|
||||
<!--table border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:call-template name="class.metrics.header"/>
|
||||
<xsl:apply-templates select="." mode="print.metrics"/>
|
||||
</table-->
|
||||
|
||||
<xsl:if test="count(/classes/class[./@package = $name]) > 0">
|
||||
<H3>Classes</H3>
|
||||
<table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<xsl:call-template name="class.audit.header"/>
|
||||
<xsl:apply-templates select="/classes/class[./@package = $name]" mode="print.audit">
|
||||
<xsl:sort select="@name"/>
|
||||
</xsl:apply-templates>
|
||||
</table>
|
||||
</xsl:if>
|
||||
<xsl:call-template name="pageFooter"/>
|
||||
</BODY>
|
||||
</HTML>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
transform string like a.b.c to ../../../
|
||||
@param path the path to transform into a descending directory path
|
||||
-->
|
||||
<xsl:template name="path">
|
||||
<xsl:param name="path"/>
|
||||
<xsl:if test="contains($path,'.')">
|
||||
<xsl:text>../</xsl:text>
|
||||
<xsl:call-template name="path">
|
||||
<xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(contains($path,'.')) and not($path = '')">
|
||||
<xsl:text>../</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- create the link to the stylesheet based on the package name -->
|
||||
<xsl:template name="create.stylesheet.link">
|
||||
<xsl:param name="package.name"/>
|
||||
<LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Page HEADER -->
|
||||
<xsl:template name="pageHeader">
|
||||
|
||||
<!-- jakarta logo -->
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td class="bannercell" rowspan="2">
|
||||
<a href="http://jakarta.apache.org/">
|
||||
<img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
|
||||
</a>
|
||||
</td>
|
||||
<td style="text-align:right"><h2>Source Code Audit</h2></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:right">Designed for use with <a href='http://www.webgain.com/products/quality_analyzer/'>Webgain QA/Metamata Audit</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Page HEADER -->
|
||||
<xsl:template name="pageFooter">
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- class header -->
|
||||
<xsl:template name="class.audit.header">
|
||||
<tr>
|
||||
<th width="80%">Name</th>
|
||||
<th>Violations</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- method header -->
|
||||
<xsl:template name="violation.audit.header">
|
||||
<tr>
|
||||
<th>Line</th>
|
||||
<th>Message</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- class information -->
|
||||
<xsl:template match="class" mode="print.audit">
|
||||
<tr>
|
||||
<xsl:call-template name="alternate-row"/>
|
||||
<td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
|
||||
<td><xsl:apply-templates select="@violations"/></td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="violation" mode="print.audit">
|
||||
<tr>
|
||||
<xsl:call-template name="alternate-row"/>
|
||||
<td><xsl:value-of select="@line"/></td>
|
||||
<td><xsl:apply-templates select="@message"/></td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- alternated row style -->
|
||||
<xsl:template name="alternate-row">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:if test="position() mod 2 = 1">a</xsl:if>
|
||||
<xsl:if test="position() mod 2 = 0">b</xsl:if>
|
||||
</xsl:attribute>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
1023
android/tools/ant/etc/mmetrics-frames.xsl
Normal file
1023
android/tools/ant/etc/mmetrics-frames.xsl
Normal file
File diff suppressed because it is too large
Load Diff
179
android/tools/ant/etc/tagdiff.xsl
Normal file
179
android/tools/ant/etc/tagdiff.xsl
Normal file
@ -0,0 +1,179 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<!-- a stylesheet to display changelogs ala netbeans -->
|
||||
<xsl:stylesheet
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version="1.0">
|
||||
<xsl:param name="title"/>
|
||||
<xsl:param name="module"/>
|
||||
<xsl:param name="cvsweb"/>
|
||||
|
||||
<xsl:output method="html" indent="yes"/>
|
||||
|
||||
<!-- Copy standard document elements. Elements that
|
||||
should be ignored must be filtered by apply-templates
|
||||
tags. -->
|
||||
<xsl:template match="*">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="attribute::*[. != '']"/>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="tagdiff">
|
||||
<html>
|
||||
<head>
|
||||
<title><xsl:value-of select="$title"/></title>
|
||||
<style type="text/css">
|
||||
body, p {
|
||||
font-family: verdana,arial,helvetica;
|
||||
font-size: 80%;
|
||||
color:#000000;
|
||||
}
|
||||
.dateAndAuthor {
|
||||
font-family: verdana,arial,helvetica;
|
||||
font-size: 80%;
|
||||
font-weight: bold;
|
||||
text-align:left;
|
||||
background:#a6caf0;
|
||||
}
|
||||
tr, td{
|
||||
font-family: verdana,arial,helvetica;
|
||||
font-size: 80%;
|
||||
background:#eeeee0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body link="#000000" alink="#000000" vlink="#000000" text="#000000">
|
||||
<h1>
|
||||
<a name="top"><xsl:value-of select="$title"/></a>
|
||||
</h1>
|
||||
Tagdiff between <xsl:value-of select="@startTag"/> <xsl:value-of select="@startDate"/> and
|
||||
<xsl:value-of select="@endTag"/> <xsl:value-of select="@endDate"/>
|
||||
<p align="right">Designed for use with <a href="http://ant.apache.org/">Ant</a>.</p>
|
||||
<hr size="2"/>
|
||||
<a name="TOP"/>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td align="right">
|
||||
<a href="#New">New Files</a> |
|
||||
<a href="#Modified">Modified Files</a> |
|
||||
<a href="#Removed">Removed Files</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table border="0" width="100%" cellpadding="3" cellspacing="1">
|
||||
<xsl:call-template name="show-entries">
|
||||
<xsl:with-param name="title">New Files</xsl:with-param>
|
||||
<xsl:with-param name="anchor">New</xsl:with-param>
|
||||
<xsl:with-param name="entries" select=".//entry[file/revision][not(file/prevrevision)]"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<xsl:call-template name="show-entries">
|
||||
<xsl:with-param name="title">Modified Files</xsl:with-param>
|
||||
<xsl:with-param name="anchor">Modified</xsl:with-param>
|
||||
<xsl:with-param name="entries" select=".//entry[file/revision][file/prevrevision]"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<!-- change to entries select to address bug #36827 -->
|
||||
<xsl:call-template name="show-entries">
|
||||
<xsl:with-param name="title">Removed Files</xsl:with-param>
|
||||
<xsl:with-param name="anchor">Removed</xsl:with-param>
|
||||
<xsl:with-param name="entries" select=".//entry[not(file/revision)][file/prevrevision]"/>
|
||||
</xsl:call-template>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="show-entries">
|
||||
<xsl:param name="title"/>
|
||||
<xsl:param name="anchor"/>
|
||||
<xsl:param name="entries"/>
|
||||
<tr>
|
||||
<td colspan="2" class="dateAndAuthor">
|
||||
<a>
|
||||
<xsl:attribute name="name"><xsl:value-of select="$anchor"/></xsl:attribute>
|
||||
<xsl:value-of select="$title"/> - <xsl:value-of select="count($entries)"/> entries
|
||||
</a>
|
||||
<a href="#TOP">(back to top)</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="20">
|
||||
<xsl:text> </xsl:text>
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<xsl:apply-templates select="$entries"/>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="entry">
|
||||
<xsl:apply-templates select="file"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="date">
|
||||
<i><xsl:value-of select="."/></i>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="time">
|
||||
<i><xsl:value-of select="."/></i>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="author">
|
||||
<i>
|
||||
<a>
|
||||
<xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
|
||||
<xsl:value-of select="."/>
|
||||
</a>
|
||||
</i>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="file">
|
||||
<li>
|
||||
<a target="_new">
|
||||
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" /></xsl:attribute>
|
||||
<xsl:value-of select="name" />
|
||||
</a>
|
||||
<xsl:if test="string-length(prevrevision) > 0 or string-length(revision) > 0">
|
||||
<xsl:text> </xsl:text>
|
||||
<a target="_new">
|
||||
<xsl:choose>
|
||||
<xsl:when test="string-length(prevrevision) = 0 ">
|
||||
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&content-type=text/x-cvsweb-markup</xsl:attribute>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&r2=<xsl:value-of select="prevrevision"/>&diff_format=h</xsl:attribute>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose> (<xsl:if test="count(prevrevision) > 0"> <xsl:value-of select="prevrevision"/> --> </xsl:if> <xsl:value-of select="revision"/>)
|
||||
</a>
|
||||
</xsl:if>
|
||||
</li>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Any elements within a msg are processed,
|
||||
so that we can preserve HTML tags. -->
|
||||
<xsl:template match="msg">
|
||||
<b><xsl:apply-templates/></b>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
Reference in New Issue
Block a user