git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@292933 13f79535-47bb-0310-9956-ffa450edef68
115 lines
4.4 KiB
XML
115 lines
4.4 KiB
XML
<?xml version="1.0"?>
|
|
<!--
|
|
/*
|
|
* Copyright 2001-2004 The Apache Software Foundation.
|
|
*
|
|
* Licensed 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.
|
|
*/
|
|
-->
|
|
|
|
<document>
|
|
|
|
<properties>
|
|
<title>Maven JDepend Plug-in</title>
|
|
<author email="jason@zenplex.com">Jason van Zyl</author>
|
|
</properties>
|
|
|
|
<body>
|
|
<section name="Maven JDepend Plug-in">
|
|
<p>
|
|
This plug-in produces a metrics report using
|
|
<a href="http://www.clarkware.com/software/JDepend.html">JDepend</a>.
|
|
</p>
|
|
<p>
|
|
JDepend traverses Java class file directories and generates design quality
|
|
metrics for each Java package. JDepend allows you to automatically measure
|
|
the quality of a design in terms of its extensibility, reusability, and
|
|
maintainability to manage package dependencies effectively.
|
|
</p>
|
|
<p>
|
|
Metrics for each Java package include:
|
|
</p>
|
|
<ul>
|
|
<li><b>Number of Classes and Interfaces</b>
|
|
<p>
|
|
The number of concrete and abstract classes (and interfaces) in the
|
|
package is an indicator of the extensibility of the package.
|
|
</p>
|
|
</li>
|
|
<li><b>Afferent Couplings (Ca)</b>
|
|
<p>
|
|
The number of other packages that depend upon classes within
|
|
the package is an indicator of the package's responsibility.
|
|
</p>
|
|
</li>
|
|
<li><b>Efferent Couplings (Ce)</b>
|
|
<p>
|
|
The number of other packages that the classes in the package depend
|
|
upon is an indicator of the package's independence.
|
|
</p>
|
|
</li>
|
|
<li><b>Abstractness (A)</b>
|
|
<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>
|
|
</li>
|
|
<li><b>Instability (I)</b>
|
|
<p>
|
|
The ratio of efferent coupling (Ce) to total coupling
|
|
(Ce + Ca) such that I = 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>
|
|
</li>
|
|
<li><b>Distance from the Main Sequence (D)</b>
|
|
<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>
|
|
</li>
|
|
<li><b>Package Dependency Cycles</b>
|
|
<p>
|
|
Package dependency cycles are reported along with the hierarchical
|
|
paths of packages participating in package dependency cycles.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
</section>
|
|
</body>
|
|
</document>
|