Metric Results

[summary] [packages] [cycles] [explanations]

The following document contains the results of a JDepend metric analysis. The various metrics are defined at the bottom of this document.

Summary

[summary] [packages] [cycles] [explanations]

Package Total
Classes
Abstract
Classes
Concrete
Classes
Afferent
Couplings
Efferent
Couplings
Abstractness Instability Distance
net.sourceforge.jane 16 3 13 4 4 19% 50% 31%
net.sourceforge.jane.jjtree 113 4 109 1 4 4% 80% 16%
net.sourceforge.jane.lang 14 13 1 4 1 93% 20% 13%
net.sourceforge.jane.lang.jjtree 8 0 8 0 6 0% 100% 0%
net.sourceforge.jane.lang.qdox 10 0 10 0 4 0% 100% 0%
net.sourceforge.jane.lang.reflection 12 2 10 0 4 17% 100% 17%
net.sourceforge.jane.test 1 0 1 0 0 0% 0% 100%
net.sourceforge.jane.util 3 1 2 4 2 33% 33% 33%
com.thoughtworks.qdox.model No stats available: package referenced, but not analyzed.
junit.framework No stats available: package referenced, but not analyzed.
org.apache.commons.collections No stats available: package referenced, but not analyzed.
org.apache.commons.io No stats available: package referenced, but not analyzed.
org.apache.commons.lang.exception No stats available: package referenced, but not analyzed.
org.apache.commons.logging No stats available: package referenced, but not analyzed.

Packages

[summary] [packages] [cycles] [explanations]

net.sourceforge.jane.jjtree

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 4 4% 80% 16%
Abstract Classes Concrete Classes Used by Packages Uses Packages
JavaParserConstants
JavaParserTreeConstants
JavaParserVisitor
Node
ChildNodeEnumeration
JJTJavaParserState
JJTreeParsingTestCase
JJTreeUtils
JJTreeUtilsTest
JavaAdditiveExpression
JavaAllocationExpression
JavaAndExpression
JavaArgumentList
JavaArguments
JavaArrayDimsAndInits
JavaArrayInitializer
JavaAssertStatement
JavaAssignmentOperator
JavaBlock
JavaBlockStatement
JavaBooleanLiteral
JavaBreakStatement
JavaCastExpression
JavaCastLookahead
JavaCharStream
JavaClassBody
JavaClassBodyDeclaration
JavaClassDeclaration
JavaClassDeclarationTest
JavaCompilationUnit
JavaConditionalAndExpression
JavaConditionalExpression
JavaConditionalOrExpression
JavaConstructorDeclaration
JavaContinueStatement
JavaDoStatement
JavaEmptyStatement
JavaEqualityExpression
JavaExclusiveOrExpression
JavaExplicitConstructorInvocation
JavaExpression
JavaFieldDeclaration
JavaForInit
JavaForStatement
JavaForUpdate
JavaFormalParameter
JavaFormalParameters
JavaIfStatement
JavaImportDeclaration
JavaImportDeclarationTest
JavaInclusiveOrExpression
JavaInitializer
JavaInstanceOfExpression
JavaInterfaceDeclaration
JavaInterfaceMemberDeclaration
JavaLabeledStatement
JavaLiteral
JavaLocalVariableDeclaration
JavaMethodDeclaration
JavaMethodDeclarationLookahead
JavaMethodDeclarationTest
JavaMethodDeclarator
JavaMultiplicativeExpression
JavaName
JavaNameList
JavaNestedClassDeclaration
JavaNestedInterfaceDeclaration
JavaNullLiteral
JavaPackageDeclaration
JavaPackageDeclarationTest
JavaParser
JavaParserTest
JavaParserTokenManager
JavaPostfixExpression
JavaPreDecrementExpression
JavaPreIncrementExpression
JavaPrimaryExpression
JavaPrimaryPrefix
JavaPrimarySuffix
JavaPrimitiveType
JavaRelationalExpression
JavaResultType
JavaResultTypeTest
JavaReturnStatement
JavaShiftExpression
JavaStatement
JavaStatementExpression
JavaStatementExpressionList
JavaSwitchLabel
JavaSwitchStatement
JavaSynchronizedStatement
JavaThrowStatement
JavaTryStatement
JavaType
JavaUnaryExpression
JavaUnaryExpressionNotPlusMinus
JavaUnmodifiedClassDeclaration
JavaUnmodifiedClassDeclarationTest
JavaUnmodifiedInterfaceDeclaration
JavaVariableDeclarator
JavaVariableDeclaratorId
JavaVariableInitializer
JavaWhileStatement
Modifiers
NodeEnumeration
NodeFinder
NodeFinderTest
ParseException
SimpleNode
Token
TokenEnumeration
TokenEnumerationTest
TokenMgrError
net.sourceforge.jane.lang.jjtree
junit.framework
net.sourceforge.jane.util
org.apache.commons.collections
org.apache.commons.io

net.sourceforge.jane.lang.qdox

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 4 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None QDoxClassInfo
QDoxClasses
QDoxFieldInfo
QDoxFields
QDoxJavaElement
QDoxLazyClassInfo
QDoxMethodInfo
QDoxMethods
QDoxParameterInfo
QDoxParameters
None com.thoughtworks.qdox.model
net.sourceforge.jane
net.sourceforge.jane.lang
org.apache.commons.logging

net.sourceforge.jane.test

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 0 0% 0% 100%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None Customer
None None

net.sourceforge.jane.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 2 33% 33% 33%
Abstract Classes Concrete Classes Used by Packages Uses Packages
ExtendedEnumeration
JavaLangUtils
JavaLangUtilsTest
net.sourceforge.jane
net.sourceforge.jane.jjtree
net.sourceforge.jane.lang.jjtree
net.sourceforge.jane.lang.reflection
junit.framework
org.apache.commons.collections

Cycles

[summary] [packages] [cycles] [explanations]

Package Cyclic Dependencies
net.sourceforge.jane net.sourceforge.jane.lang
net.sourceforge.jane
net.sourceforge.jane.lang net.sourceforge.jane
net.sourceforge.jane.lang
net.sourceforge.jane.lang.jjtree net.sourceforge.jane
net.sourceforge.jane.lang
net.sourceforge.jane
net.sourceforge.jane.lang.qdox net.sourceforge.jane
net.sourceforge.jane.lang
net.sourceforge.jane
net.sourceforge.jane.lang.reflection net.sourceforge.jane.lang
net.sourceforge.jane
net.sourceforge.jane.lang

Explanations

[summary] [packages] [cycles] [explanations]

The following explanations are for quick reference and are lifted directly from the original JDepend documentation.

Term Description
Number of Classes The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.
Afferent Couplings The number of other packages that depend upon classes within the package is an indicator of the package's responsibility.
Efferent Couplings The number of other packages that the classes in the package depend upon is an indicator of the package's independence.
Abstractness 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.
Instability 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.
Distance 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.
Cycles 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.