jdepend.xsl revision 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy<!--
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy Copyright 2002,2004 The Apache Software Foundation
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy Licensed under the Apache License, Version 2.0 (the "License");
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy you may not use this file except in compliance with the License.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy You may obtain a copy of the License at
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy http://www.apache.org/licenses/LICENSE-2.0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy Unless required by applicable law or agreed to in writing, software
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy distributed under the License is distributed on an "AS IS" BASIS,
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy See the License for the specific language governing permissions and
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy limitations under the License.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy-->
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy<xsl:template match="JDepend">
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <html>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <head>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <title>JDepend Analysis</title>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <style type="text/css">
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy body {
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy font:normal 68% verdana,arial,helvetica;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy color:#000000;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy table tr td, tr th {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy font-size: 68%;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy table.details tr th{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy font-weight: bold;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy text-align:left;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy background:#a6caf0;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy table.details tr td{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy background:#eeeee0;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy p {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy line-height:1.5em;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy margin-top:0.5em; margin-bottom:1.0em;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy margin-left:2em;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy margin-right:2em;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy h1 {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy h2 {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy h3 {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy h4 {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy h5 {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy h6 {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy .Error {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy font-weight:bold; color:red;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy .Failure {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy font-weight:bold; color:purple;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy .Properties {
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy text-align:right;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy }
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy </style>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy </head>
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy <body>
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy <!--h1>JDepend Report</h1>
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy <ul>
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy <xsl:for-each select="./Packages/Package">
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy <xsl:sort select="@name"/>
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy <li><xsl:value-of select="@name"/></li>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy </xsl:for-each>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy </ul-->
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <h1><a name="top">JDepend Analysis</a></h1>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <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>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <hr size="2" />
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <table width="100%"><tr><td>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <a name="NVsummary"><h2>Summary</h2></a>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy </td><td align="right">
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [<a href="#NVsummary">summary</a>]
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [<a href="#NVpackages">packages</a>]
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [<a href="#NVcycles">cycles</a>]
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [<a href="#NVexplanations">explanations</a>]
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy </td></tr></table>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <table width="100%" class="details">
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy <tr>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <th>Package</th>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <th>Total Classes</th>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <th><a href="#EXnumber">Abstract Classes</a></th>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <th><a href="#EXnumber">Concrete Classes</a></th>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <th><a href="#EXafferent">Afferent Couplings</a></th>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <th><a href="#EXefferent">Efferent Couplings</a></th>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <th><a href="#EXabstractness">Abstractness</a></th>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <th><a href="#EXinstability">Instability</a></th>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <th><a href="#EXdistance">Distance</a></th>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy </tr>
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <xsl:for-each select="./Packages/Package">
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy <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) &gt; 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>