Apply Maven-1132

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@114634 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
dion committed 2004-01-29 04:58:36 +00:00
1 parent c6c2bbce43
commit 6982e0f933
3 files changed
+260 -242

No files matched your search

+10 -3
View File
@@ -5,7 +5,7 @@
<pomVersion>3</pomVersion>
<id>maven-jdepend-plugin</id>
<name>Maven JDepend Plugin</name>
<currentVersion>1.3</currentVersion>
<currentVersion>1.4-SNAPSHOT</currentVersion>
<description/>
<shortDescription>Produce metrics</shortDescription>
<url>http://maven.apache.org/reference/plugins/jdepend/</url>
@@ -14,6 +14,13 @@
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven/src/plugins-build/jdepend/</connection>
<url>http://cvs.apache.org/viewcvs/maven/src/plugins-build/jdepend/</url>
</repository>
<versions>
<version>
<id>1.4</id>
<name>1.4</name>
<tag>HEAD</tag>
</version>
</versions>
<developers>
<developer>
<name>dIon Gillard</name>
@@ -34,10 +41,10 @@
</roles>
</developer>
<developer>
<name>Stéphane Mor</name>
<name>Stéphane Mor</name>
<id>smor</id>
<email>stephanemor@yahoo.fr</email>
<organization>Hasgard Systèmes et Réseaux</organization>
<organization>Hasgard Systèmes et Réseaux</organization>
<roles>
<role>Java Developer</role>
</roles>
+244 -239
View File
@@ -9,7 +9,7 @@
xmlns:util="jelly:util"
xmlns:doc="doc"
xmlns:jdepend="jdepend"
trim="false">
trim="true">
<!-- This needs to be instantiated here to be available in the template matches -->
<j:useBean var="mavenTool" class="org.apache.maven.util.MavenTool"/>
@@ -21,14 +21,10 @@
<define:taglib uri="jdepend">
<define:tag name="nav">
<p>
[
<a href="#Summary">summary</a>]
[
<a href="#Packages">packages</a>]
[
<a href="#Cycles">cycles</a>]
[
<a href="#Explanations">explanations</a>]
[<a href="#Summary">summary</a>]
[<a href="#Packages">packages</a>]
[<a href="#Cycles">cycles</a>]
[<a href="#Explanations">explanations</a>]
</p>
</define:tag>
<!--
@@ -40,30 +36,29 @@
-->
<define:tag name="classes">
<j:choose>
<j:when test="${currentNode.get(xpath) != null}">
<i>None</i>
<j:when test="${currentNode.selectNodes(xpath).isEmpty()}">
<em>None</em>
</j:when>
<j:otherwise>
<j:forEach var="class" items="${currentNode.selectNodes(xpath)}">
<!-- class.StringValue =~ org.apache.maven.SomeClass -->
<j:set var="packageName">${stringTool.splitStringAtLastDelim(class.StringValue.trim(), '.').get(0)}</j:set>
<j:set var="className">${stringTool.splitStringAtLastDelim(class.StringValue.trim(), '.').get(1)}</j:set>
<util:replace var="dir" oldChar="." newChar="/" value="${packageName}"/>
<j:choose>
<j:when test="${class.attribute('sourceFile') != null}">
<j:set var="classSourceFile" value="${class.attribute('sourceFile').getValue()}"/>
<j:set var="classSourceFile" value="${stringTool.splitStringAtLastDelim(classSourceFile, '.').get(0)}"/>
<ul>
<j:forEach var="class" items="${currentNode.selectNodes(xpath)}">
<!-- class.StringValue =~ org.apache.maven.SomeClass -->
<j:set var="packageName">${stringTool.splitStringAtLastDelim(class.StringValue.trim(), '.').get(0)}</j:set>
<j:set var="className">${stringTool.splitStringAtLastDelim(class.StringValue.trim(), '.').get(1)}</j:set>
<util:replace var="dir" oldChar="." newChar="/" value="${packageName}"/>
<a href="xref/${dir}/${classSourceFile}.html">${className}</a>
</j:when>
<j:otherwise>
<a href="xref/${dir}/${className}.html">${className}</a>
</j:otherwise>
</j:choose>
<br/>
</j:forEach>
<j:choose>
<j:when test="${class.attribute('sourceFile') != null}">
<j:set var="classSourceFile" value="${class.attribute('sourceFile').getValue()}"/>
<j:set var="classSourceFile" value="${stringTool.splitStringAtLastDelim(classSourceFile, '.').get(0)}"/>
<li><a href="xref/${dir}/${classSourceFile}.html">${className}</a></li>
</j:when>
<j:otherwise>
<li><a href="xref/${dir}/${className}.html">${className}</a></li>
</j:otherwise>
</j:choose>
</j:forEach>
</ul>
</j:otherwise>
</j:choose>
</define:tag>
@@ -73,14 +68,15 @@
-->
<define:tag name="packages">
<j:choose>
<j:when test="${currentNode.get(xpath) != null}">
<i>None</i>
<j:when test="${currentNode.selectNodes(xpath).isEmpty()}">
<em>None</em>
</j:when>
<j:otherwise>
<j:forEach var="class" items="${currentNode.selectNodes(xpath)}">
<a href="#${class.getStringValue()}">${class.getStringValue()}</a>
<br/>
</j:forEach>
<ul>
<j:forEach var="class" items="${currentNode.selectNodes(xpath)}">
<li><a href="#${class.getStringValue()}">${class.getStringValue()}</a></li>
</j:forEach>
</ul>
</j:otherwise>
</j:choose>
</define:tag>
@@ -92,90 +88,80 @@
<properties>
<title>JDepend Source Code Analysis</title>
</properties>
<head>
<x:element name="style"><x:attribute name="type">text/css</x:attribute>
<![CDATA[
.jdepend td ul, .jdepend td ul li {
margin:0; padding:0;
list-style-type: none;
}
]]>
</x:element>
</head>
<body>
<body class="jdepend">
<section name="Metric Results">
<jdepend:nav/>
<p>
The following document contains the results of a
<a
href="http://www.clarkware.com/software/JDepend.html">JDepend</a>
metric analysis. The various metrics are defined at the bottom
<a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> metric analysis.
The various metrics are defined at the bottom
of this document.
</p>
</section>
<section name="Summary">
<jdepend:nav/>
<table>
<tr>
<th>Package</th>
<th>
<font size="-1">Total
<br/>Classes</font>
</th>
<th>
<font size="-1">Abstract
<br/>Classes
</font>
</th>
<th>
<font size="-1">Concrete
<br/>Classes
</font>
</th>
<th>
<font size="-1">Afferent
<br/>Couplings
</font>
</th>
<th>
<font size="-1">Efferent
<br/>Couplings
</font>
</th>
<th>
<font size="-1">Abstractness</font>
</th>
<th>
<font size="-1">Instability</font>
</th>
<th>
<font size="-1">Distance</font>
</th>
</tr>
<table summary="Summary">
<thead>
<tr>
<th title="Package">Package</th>
<th style="text-align:right"><acronym title="Total Classes">TC</acronym></th>
<th style="text-align:right"><acronym title="Abstract Classes">AC</acronym></th>
<th style="text-align:right"><acronym title="Concrete Classes">CC</acronym></th>
<th style="text-align:right"><acronym title="Afferent Couplings">AC</acronym></th>
<th style="text-align:right"><acronym title="Efferent Couplings">EC</acronym></th>
<th style="text-align:right"><acronym title="Abstractness">A</acronym></th>
<th style="text-align:right"><acronym title="Instability">I</acronym></th>
<th style="text-align:right"><acronym title="Distance">D</acronym></th>
</tr>
</thead>
<x:set var="packages" select="Packages/Package"/>
<j:forEach var="package" items="${packages}">
<!-- Is this the only way I can tell if an element has a value properly? -->
<j:set var="error" value="${package.valueOf('error').trim()}"/>
<j:if test="${error == ''}">
<tr>
<td>
<a href="#${package.attribute('name').getValue()}">${package.attribute('name').getValue()}</a>
</td>
<td align="right">
<x:expr select="$package/Stats/TotalClasses"/>
</td>
<td><x:expr select="$package/Stats/AbstractClasses"/></td>
<td><x:expr select="$package/Stats/ConcreteClasses"/></td>
<td><x:expr select="$package/Stats/Ca"/></td>
<td><x:expr select="$package/Stats/Ce"/></td>
<td>
<j:set var="display"><x:expr select="$package/Stats/A"/></j:set>
<doc:formatAsNumber string="${display}" pattern="#.##"/>
</td>
<td>
<j:set var="display"><x:expr select="$package/Stats/I"/></j:set>
<doc:formatAsNumber string="${display}" pattern="#%"/>
</td>
<td>
<j:set var="display"><x:expr select="$package/Stats/D"/></j:set>
<doc:formatAsNumber string="${display}" pattern="#%"/>
</td>
</tr>
</j:if>
</j:forEach>
<tbody>
<j:forEach var="package" items="${packages}">
<!-- Is this the only way I can tell if an element has a value properly? -->
<j:set var="error" value="${package.valueOf('error').trim()}"/>
<j:if test="${error == ''}">
<tr>
<td>
<a href="#${package.attribute('name').getValue()}">${package.attribute('name').getValue()}</a>
</td>
<td style="text-align:right">
<x:expr select="$package/Stats/TotalClasses"/>
</td>
<td style="text-align:right"><x:expr select="$package/Stats/AbstractClasses"/></td>
<td style="text-align:right"><x:expr select="$package/Stats/ConcreteClasses"/></td>
<td style="text-align:right"><x:expr select="$package/Stats/Ca"/></td>
<td style="text-align:right"><x:expr select="$package/Stats/Ce"/></td>
<td style="text-align:right">
<j:set var="display"><x:expr select="$package/Stats/A"/></j:set>
<doc:formatAsNumber string="${display}" pattern="#.##"/>
</td>
<td style="text-align:right">
<j:set var="display"><x:expr select="$package/Stats/I"/></j:set>
<doc:formatAsNumber string="${display}" pattern="#%"/>
</td>
<td style="text-align:right">
<j:set var="display"><x:expr select="$package/Stats/D"/></j:set>
<doc:formatAsNumber string="${display}" pattern="#%"/>
</td>
</tr>
</j:if>
</j:forEach>
</tbody>
</table>
</section>
@@ -188,50 +174,58 @@
<j:set var="error" value="${package.valueOf('error').trim()}"/>
<j:if test="${error == ''}">
<subsection name="${package.attribute('name').getValue()}">
<table>
<tr>
<th>Afferent Couplings</th>
<th>Efferent Couplings</th>
<th>Abstractness</th>
<th>Instability</th>
<th>Distance</th>
</tr>
<tr>
<td>${package.valueOf("Stats/Ca")}</td>
<td>${package.valueOf("Stats/Ce")}</td>
<td>
<doc:formatAsNumber string="${package.valueOf('Stats/A')}" pattern="#%"/>
</td>
<td>
<doc:formatAsNumber string="${package.valueOf('Stats/I')}" pattern="#%"/>
</td>
<td>
<doc:formatAsNumber string="${package.valueOf('Stats/D')}" pattern="#%"/>
</td>
</tr>
<table summary="Packages">
<thead>
<tr>
<th>Afferent Couplings</th>
<th>Efferent Couplings</th>
<th>Abstractness</th>
<th>Instability</th>
<th>Distance</th>
</tr>
</thead>
<tbody>
<tr>
<td>${package.valueOf("Stats/Ca")}</td>
<td>${package.valueOf("Stats/Ce")}</td>
<td>
<doc:formatAsNumber string="${package.valueOf('Stats/A')}" pattern="#%"/>
</td>
<td>
<doc:formatAsNumber string="${package.valueOf('Stats/I')}" pattern="#%"/>
</td>
<td>
<doc:formatAsNumber string="${package.valueOf('Stats/D')}" pattern="#%"/>
</td>
</tr>
</tbody>
</table>
<table>
<tr>
<th>Abstract Classes</th>
<th>Concrete Classes</th>
<th>Used by Packages</th>
<th>Uses Packages</th>
</tr>
<tr>
<td>
<jdepend:classes currentNode="${package}" xpath="AbstractClasses/Class"/>
</td>
<td>
<jdepend:classes currentNode="${package}" xpath="ConcreteClasses/Class"/>
</td>
<td>
<jdepend:packages currentNode="${package}" xpath="UsedBy/Package"/>
</td>
<td>
<jdepend:packages currentNode="${package}" xpath="DependsUpon/Package"/>
</td>
</tr>
<table summary="Packages">
<thead>
<tr>
<th>Abstract Classes</th>
<th>Concrete Classes</th>
<th>Used by Packages</th>
<th>Uses Packages</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<jdepend:classes currentNode="${package}" xpath="AbstractClasses/Class"/>
</td>
<td>
<jdepend:classes currentNode="${package}" xpath="ConcreteClasses/Class"/>
</td>
<td>
<jdepend:packages currentNode="${package}" xpath="UsedBy/Package"/>
</td>
<td>
<jdepend:packages currentNode="${package}" xpath="DependsUpon/Package"/>
</td>
</tr>
</tbody>
</table>
</subsection>
</j:if>
@@ -246,24 +240,31 @@
<p>There are no cyclic dependencies.</p>
</j:when>
<j:otherwise>
<table>
<tr>
<th>Package</th>
<th>Cyclic Dependencies</th>
</tr>
<j:forEach var="package" items="${packages}">
<table sumary="Cyclic dependencies">
<thead>
<tr>
<td>${package.attribute('Name').getValue()}</td>
<td>
<x:set var="cycles" select="$package/Package"/>
<j:forEach var="cycle" items="${cycles}">
${cycle.getText()}
<br/>
</j:forEach>
</td>
<th>Package</th>
<th>Cyclic Dependencies</th>
</tr>
</j:forEach>
</thead>
<tbody>
<j:forEach var="package" items="${packages}">
<tr>
<td>${package.attribute('Name').getValue()}</td>
<td>
<x:set var="cycles" select="$package/Package"/>
<j:if test="${!cycles.isEmpty()}">
<ul>
<j:forEach var="cycle" items="${cycles}">
<li>${cycle.getText()}</li>
</j:forEach>
</ul>
</j:if>
</td>
</tr>
</j:forEach>
</tbody>
</table>
</j:otherwise>
</j:choose>
@@ -280,80 +281,84 @@
documentation</a>.
</p>
<table>
<tr>
<th>Term</th>
<th>Description</th>
</tr>
<tr>
<td>Number of Classes</td>
<td>
The number of concrete and abstract classes (and interfaces)
in the package is an indicator of the extensibility of the
package.
</td>
</tr>
<tr>
<td>Afferent Couplings</td>
<td>
The number of other packages that depend upon classes within
the package is an indicator of the package's responsibility.
</td>
</tr>
<tr>
<td>Efferent Couplings</td>
<td>
The number of other packages that the classes in the package
depend upon is an indicator of the package's independence.
</td>
</tr>
<tr>
<td>Abstractness</td>
<td>
The ratio of the number of abstract classes (and interfaces)
in the analyzed package to the total number of classes in
the analyzed package. 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.
</td>
</tr>
<tr>
<td>Instability</td>
<td>
The ratio of efferent coupling (Ce) to total coupling (Ce /
(Ce + Ca)). This metric is an indicator of the package's
resilience to change. 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.
</td>
</tr>
<tr>
<td>Distance</td>
<td>
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. 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). 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.
</td>
</tr>
<tr>
<td>Cycles</td>
<td>
Packages participating in a package dependency cycle are in
a deadly embrace with respect to reusability and their
release cycle. Package dependency cycles can be easily
identified by reviewing the textual reports of dependency
cycles. Once these dependency cycles have been identified
with JDepend, they can be broken by employing various
object-oriented techniques.
</td>
</tr>
<table summary="Explanations">
<thead>
<tr>
<th>Term</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Number of Classes</td>
<td>
The number of concrete and abstract classes (and interfaces)
in the package is an indicator of the extensibility of the
package.
</td>
</tr>
<tr>
<td>Afferent Couplings</td>
<td>
The number of other packages that depend upon classes within
the package is an indicator of the package's responsibility.
</td>
</tr>
<tr>
<td>Efferent Couplings</td>
<td>
The number of other packages that the classes in the package
depend upon is an indicator of the package's independence.
</td>
</tr>
<tr>
<td>Abstractness</td>
<td>
The ratio of the number of abstract classes (and interfaces)
in the analyzed package to the total number of classes in
the analyzed package. 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.
</td>
</tr>
<tr>
<td>Instability</td>
<td>
The ratio of efferent coupling (Ce) to total coupling (Ce /
(Ce + Ca)). This metric is an indicator of the package's
resilience to change. 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.
</td>
</tr>
<tr>
<td>Distance</td>
<td>
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. 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). 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.
</td>
</tr>
<tr>
<td>Cycles</td>
<td>
Packages participating in a package dependency cycle are in
a deadly embrace with respect to reusability and their
release cycle. Package dependency cycles can be easily
identified by reviewing the textual reports of dependency
cycles. Once these dependency cycles have been identified
with JDepend, they can be broken by employing various
object-oriented techniques.
</td>
</tr>
</tbody>
</table>
</section>
+6
View File
@@ -6,6 +6,12 @@
</properties>
<body>
<release version="1.4" date="in CVS">
<action dev="dion" type="update">
Apply MAVEN-1132
</action>
</release>
<release version="1.3" date="2003-09-29">
<action dev="evenisse" type="fix">
Add xml declaration to generated report. Fixed for character encoding.