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 TC CC AC Ca Ce A I D V
org.jaxen 24 16 8 13 11 33.0% 46.0% 21.0% 1
org.jaxen.dom 13 12 1 0 10 8.0% 100.0% 8.0% 1
org.jaxen.dom4j 3 3 0 0 7 0.0% 100.0% 0.0% 1
org.jaxen.expr 72 35 37 2 8 51.0% 80.0% 31.0% 1
org.jaxen.expr.iter 14 13 1 1 4 7.0% 80.0% 13.0% 1
org.jaxen.function 27 27 0 4 4 0.0% 50.0% 50.0% 1
org.jaxen.function.ext 5 4 1 1 5 20.0% 83.0% 3.0% 1
org.jaxen.function.xslt 1 1 0 1 4 0.0% 80.0% 20.0% 1
org.jaxen.javabean 4 4 0 0 6 0.0% 100.0% 0.0% 1
org.jaxen.jdom 4 4 0 0 7 0.0% 100.0% 0.0% 1
org.jaxen.pattern 13 11 2 2 8 15.000001% 80.0% 5.0% 1
org.jaxen.saxpath 7 3 4 11 3 57.0% 21.0% 21.0% 1
org.jaxen.saxpath.base 5 5 0 0 4 0.0% 100.0% 0.0% 1
org.jaxen.saxpath.helpers 2 2 0 3 2 0.0% 40.0% 60.000004% 1
org.jaxen.util 13 12 1 7 3 8.0% 30.000002% 62.0% 1
org.jaxen.xom 6 5 1 0 6 17.0% 100.0% 17.0% 1

Packages

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

org.jaxen

Afferent Couplings Efferent Couplings Abstractness Instability Distance
13 11 33.0% 46.0% 21.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jaxen.DefaultNavigator
org.jaxen.Function
org.jaxen.FunctionContext
org.jaxen.NamedAccessNavigator
org.jaxen.NamespaceContext
org.jaxen.Navigator
org.jaxen.VariableContext
org.jaxen.XPath
org.jaxen.BaseXPath
org.jaxen.Context
org.jaxen.ContextSupport
org.jaxen.FunctionCallException
org.jaxen.JaxenConstants
org.jaxen.JaxenException
org.jaxen.JaxenHandler
org.jaxen.JaxenRuntimeException
org.jaxen.QualifiedName
org.jaxen.SimpleFunctionContext
org.jaxen.SimpleNamespaceContext
org.jaxen.SimpleVariableContext
org.jaxen.UnresolvableException
org.jaxen.UnsupportedAxisException
org.jaxen.XPathFunctionContext
org.jaxen.XPathSyntaxException
org.jaxen.dom
org.jaxen.dom4j
org.jaxen.expr
org.jaxen.expr.iter
org.jaxen.function
org.jaxen.function.ext
org.jaxen.function.xslt
org.jaxen.javabean
org.jaxen.jdom
org.jaxen.pattern
org.jaxen.saxpath
org.jaxen.util
org.jaxen.xom
java.io
java.lang
java.util
org.jaxen.expr
org.jaxen.function
org.jaxen.function.ext
org.jaxen.function.xslt
org.jaxen.pattern
org.jaxen.saxpath
org.jaxen.saxpath.helpers
org.jaxen.util

org.jaxen.dom

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 10 8.0% 100.0% 8.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jaxen.dom.DocumentNavigator$NodeIterator
org.jaxen.dom.DOMXPath
org.jaxen.dom.DocumentNavigator
org.jaxen.dom.DocumentNavigator$1
org.jaxen.dom.DocumentNavigator$2
org.jaxen.dom.DocumentNavigator$3
org.jaxen.dom.DocumentNavigator$4
org.jaxen.dom.DocumentNavigator$5
org.jaxen.dom.DocumentNavigator$6
org.jaxen.dom.DocumentNavigator$AttributeIterator
org.jaxen.dom.NamespaceNode
org.jaxen.dom.NamespaceNode$1
org.jaxen.dom.NamespaceNode$EmptyNodeList
None java.io
java.lang
java.lang.reflect
java.util
javax.xml.parsers
org.jaxen
org.jaxen.pattern
org.jaxen.saxpath
org.w3c.dom
org.xml.sax

org.jaxen.dom4j

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jaxen.dom4j.DocumentNavigator
org.jaxen.dom4j.DocumentNavigator$Singleton
org.jaxen.dom4j.Dom4jXPath
None java.lang
java.util
org.dom4j
org.dom4j.io
org.jaxen
org.jaxen.saxpath
org.jaxen.util

org.jaxen.expr

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 8 51.0% 80.0% 31.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jaxen.expr.AdditiveExpr
org.jaxen.expr.AllNodeStep
org.jaxen.expr.BinaryExpr
org.jaxen.expr.CommentNodeStep
org.jaxen.expr.DefaultAdditiveExpr
org.jaxen.expr.DefaultArithExpr
org.jaxen.expr.DefaultBinaryExpr
org.jaxen.expr.DefaultEqualityExpr
org.jaxen.expr.DefaultExpr
org.jaxen.expr.DefaultLocationPath
org.jaxen.expr.DefaultLogicalExpr
org.jaxen.expr.DefaultMultiplicativeExpr
org.jaxen.expr.DefaultRelationalExpr
org.jaxen.expr.DefaultStep
org.jaxen.expr.DefaultTruthExpr
org.jaxen.expr.EqualityExpr
org.jaxen.expr.Expr
org.jaxen.expr.FilterExpr
org.jaxen.expr.FunctionCallExpr
org.jaxen.expr.LiteralExpr
org.jaxen.expr.LocationPath
org.jaxen.expr.LogicalExpr
org.jaxen.expr.MultiplicativeExpr
org.jaxen.expr.NameStep
org.jaxen.expr.NumberExpr
org.jaxen.expr.PathExpr
org.jaxen.expr.Predicate
org.jaxen.expr.Predicated
org.jaxen.expr.ProcessingInstructionNodeStep
org.jaxen.expr.RelationalExpr
org.jaxen.expr.Step
org.jaxen.expr.TextNodeStep
org.jaxen.expr.UnaryExpr
org.jaxen.expr.UnionExpr
org.jaxen.expr.VariableReferenceExpr
org.jaxen.expr.XPathExpr
org.jaxen.expr.XPathFactory
org.jaxen.expr.DefaultAbsoluteLocationPath
org.jaxen.expr.DefaultAllNodeStep
org.jaxen.expr.DefaultAndExpr
org.jaxen.expr.DefaultCommentNodeStep
org.jaxen.expr.DefaultDivExpr
org.jaxen.expr.DefaultEqualsExpr
org.jaxen.expr.DefaultFilterExpr
org.jaxen.expr.DefaultFunctionCallExpr
org.jaxen.expr.DefaultGreaterThanEqualExpr
org.jaxen.expr.DefaultGreaterThanExpr
org.jaxen.expr.DefaultLessThanEqualExpr
org.jaxen.expr.DefaultLessThanExpr
org.jaxen.expr.DefaultLiteralExpr
org.jaxen.expr.DefaultMinusExpr
org.jaxen.expr.DefaultModExpr
org.jaxen.expr.DefaultMultiplyExpr
org.jaxen.expr.DefaultNameStep
org.jaxen.expr.DefaultNotEqualsExpr
org.jaxen.expr.DefaultNumberExpr
org.jaxen.expr.DefaultOrExpr
org.jaxen.expr.DefaultPathExpr
org.jaxen.expr.DefaultPlusExpr
org.jaxen.expr.DefaultPredicate
org.jaxen.expr.DefaultProcessingInstructionNodeStep
org.jaxen.expr.DefaultRelativeLocationPath
org.jaxen.expr.DefaultTextNodeStep
org.jaxen.expr.DefaultUnaryExpr
org.jaxen.expr.DefaultUnionExpr
org.jaxen.expr.DefaultVariableReferenceExpr
org.jaxen.expr.DefaultXPathExpr
org.jaxen.expr.DefaultXPathFactory
org.jaxen.expr.IdentitySet
org.jaxen.expr.IdentitySet$IdentityWrapper
org.jaxen.expr.NodeComparator
org.jaxen.expr.PredicateSet
org.jaxen
org.jaxen.pattern
java.io
java.lang
java.util
org.jaxen
org.jaxen.expr.iter
org.jaxen.function
org.jaxen.saxpath
org.jaxen.util

org.jaxen.expr.iter

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 4 7.0% 80.0% 13.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jaxen.expr.iter.IterableAxis
org.jaxen.expr.iter.IterableAncestorAxis
org.jaxen.expr.iter.IterableAncestorOrSelfAxis
org.jaxen.expr.iter.IterableAttributeAxis
org.jaxen.expr.iter.IterableChildAxis
org.jaxen.expr.iter.IterableDescendantAxis
org.jaxen.expr.iter.IterableDescendantOrSelfAxis
org.jaxen.expr.iter.IterableFollowingAxis
org.jaxen.expr.iter.IterableFollowingSiblingAxis
org.jaxen.expr.iter.IterableNamespaceAxis
org.jaxen.expr.iter.IterableParentAxis
org.jaxen.expr.iter.IterablePrecedingAxis
org.jaxen.expr.iter.IterablePrecedingSiblingAxis
org.jaxen.expr.iter.IterableSelfAxis
org.jaxen.expr
java.io
java.lang
java.util
org.jaxen

org.jaxen.function

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 4 0.0% 50.0% 50.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jaxen.function.BooleanFunction
org.jaxen.function.CeilingFunction
org.jaxen.function.ConcatFunction
org.jaxen.function.ContainsFunction
org.jaxen.function.CountFunction
org.jaxen.function.FalseFunction
org.jaxen.function.FloorFunction
org.jaxen.function.IdFunction
org.jaxen.function.LangFunction
org.jaxen.function.LastFunction
org.jaxen.function.LocalNameFunction
org.jaxen.function.NameFunction
org.jaxen.function.NamespaceUriFunction
org.jaxen.function.NormalizeSpaceFunction
org.jaxen.function.NotFunction
org.jaxen.function.NumberFunction
org.jaxen.function.PositionFunction
org.jaxen.function.RoundFunction
org.jaxen.function.StartsWithFunction
org.jaxen.function.StringFunction
org.jaxen.function.StringLengthFunction
org.jaxen.function.SubstringAfterFunction
org.jaxen.function.SubstringBeforeFunction
org.jaxen.function.SubstringFunction
org.jaxen.function.SumFunction
org.jaxen.function.TranslateFunction
org.jaxen.function.TrueFunction
org.jaxen
org.jaxen.expr
org.jaxen.function.ext
org.jaxen.function.xslt
java.lang
java.text
java.util
org.jaxen

org.jaxen.function.ext

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 5 20.0% 83.0% 3.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jaxen.function.ext.LocaleFunctionSupport
org.jaxen.function.ext.EndsWithFunction
org.jaxen.function.ext.EvaluateFunction
org.jaxen.function.ext.LowerFunction
org.jaxen.function.ext.UpperFunction
org.jaxen
java.lang
java.util
org.jaxen
org.jaxen.function
org.jaxen.saxpath

org.jaxen.function.xslt

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 4 0.0% 80.0% 20.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jaxen.function.xslt.DocumentFunction
org.jaxen
java.lang
java.util
org.jaxen
org.jaxen.function

org.jaxen.javabean

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 6 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jaxen.javabean.DocumentNavigator
org.jaxen.javabean.Element
org.jaxen.javabean.ElementIterator
org.jaxen.javabean.JavaBeanXPath
None java.lang
java.lang.reflect
java.util
org.jaxen
org.jaxen.saxpath
org.jaxen.util

org.jaxen.jdom

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jaxen.jdom.DocumentNavigator
org.jaxen.jdom.DocumentNavigator$Singleton
org.jaxen.jdom.JDOMXPath
org.jaxen.jdom.XPathNamespace
None java.lang
java.util
org.jaxen
org.jaxen.saxpath
org.jaxen.util
org.jdom
org.jdom.input

org.jaxen.pattern

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 8 15.000001% 80.0% 5.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jaxen.pattern.NodeTest
org.jaxen.pattern.Pattern
org.jaxen.pattern.AnyChildNodeTest
org.jaxen.pattern.AnyNodeTest
org.jaxen.pattern.LocationPathPattern
org.jaxen.pattern.NameTest
org.jaxen.pattern.NamespaceTest
org.jaxen.pattern.NoNodeTest
org.jaxen.pattern.NodeTypeTest
org.jaxen.pattern.PatternHandler
org.jaxen.pattern.PatternParser
org.jaxen.pattern.TextNodeTest
org.jaxen.pattern.UnionPattern
org.jaxen
org.jaxen.dom
java.io
java.lang
java.util
org.jaxen
org.jaxen.expr
org.jaxen.saxpath
org.jaxen.saxpath.helpers
org.jaxen.util

org.jaxen.saxpath

Afferent Couplings Efferent Couplings Abstractness Instability Distance
11 3 57.0% 21.0% 21.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jaxen.saxpath.Operator
org.jaxen.saxpath.SAXPathEventSource
org.jaxen.saxpath.XPathHandler
org.jaxen.saxpath.XPathReader
org.jaxen.saxpath.Axis
org.jaxen.saxpath.SAXPathException
org.jaxen.saxpath.XPathSyntaxException
org.jaxen
org.jaxen.dom
org.jaxen.dom4j
org.jaxen.expr
org.jaxen.function.ext
org.jaxen.javabean
org.jaxen.jdom
org.jaxen.pattern
org.jaxen.saxpath.base
org.jaxen.saxpath.helpers
org.jaxen.xom
java.io
java.lang
org.jaxen

org.jaxen.saxpath.base

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 4 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jaxen.saxpath.base.Token
org.jaxen.saxpath.base.TokenTypes
org.jaxen.saxpath.base.Verifier
org.jaxen.saxpath.base.XPathLexer
org.jaxen.saxpath.base.XPathReader
None java.lang
java.util
org.jaxen.saxpath
org.jaxen.saxpath.helpers

org.jaxen.saxpath.helpers

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 2 0.0% 40.0% 60.000004%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jaxen.saxpath.helpers.DefaultXPathHandler
org.jaxen.saxpath.helpers.XPathReaderFactory
org.jaxen
org.jaxen.pattern
org.jaxen.saxpath.base
java.lang
org.jaxen.saxpath

org.jaxen.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
7 3 8.0% 30.000002% 62.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jaxen.util.StackedIterator
org.jaxen.util.AncestorAxisIterator
org.jaxen.util.AncestorOrSelfAxisIterator
org.jaxen.util.DescendantAxisIterator
org.jaxen.util.DescendantOrSelfAxisIterator
org.jaxen.util.FollowingAxisIterator
org.jaxen.util.FollowingSiblingAxisIterator
org.jaxen.util.LinkedIterator
org.jaxen.util.PrecedingAxisIterator
org.jaxen.util.PrecedingSiblingAxisIterator
org.jaxen.util.SelfAxisIterator
org.jaxen.util.SingleObjectIterator
org.jaxen.util.SingletonList
org.jaxen
org.jaxen.dom4j
org.jaxen.expr
org.jaxen.javabean
org.jaxen.jdom
org.jaxen.pattern
org.jaxen.xom
java.lang
java.util
org.jaxen

org.jaxen.xom

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 6 17.0% 100.0% 17.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jaxen.xom.DocumentNavigator$IndexIterator
org.jaxen.xom.DocumentNavigator
org.jaxen.xom.DocumentNavigator$1
org.jaxen.xom.DocumentNavigator$2
org.jaxen.xom.DocumentNavigator$XPathNamespace
org.jaxen.xom.XOMXPath
None java.lang
java.util
nu.xom
org.jaxen
org.jaxen.saxpath
org.jaxen.util

Cycles

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

Package Package Dependencies
org.jaxen org.jaxen.util
org.jaxen
org.jaxen.dom org.jaxen
org.jaxen.util
org.jaxen
org.jaxen.dom4j org.jaxen.util
org.jaxen
org.jaxen.util
org.jaxen.expr org.jaxen.util
org.jaxen
org.jaxen.util
org.jaxen.expr.iter org.jaxen
org.jaxen.util
org.jaxen
org.jaxen.function org.jaxen
org.jaxen.util
org.jaxen
org.jaxen.function.ext org.jaxen
org.jaxen.util
org.jaxen
org.jaxen.function.xslt org.jaxen
org.jaxen.util
org.jaxen
org.jaxen.javabean org.jaxen.util
org.jaxen
org.jaxen.util
org.jaxen.jdom org.jaxen.util
org.jaxen
org.jaxen.util
org.jaxen.pattern org.jaxen
org.jaxen.util
org.jaxen
org.jaxen.saxpath org.jaxen
org.jaxen.util
org.jaxen
org.jaxen.saxpath.base org.jaxen.saxpath.helpers
org.jaxen.saxpath
org.jaxen
org.jaxen.util
org.jaxen
org.jaxen.saxpath.helpers org.jaxen.saxpath
org.jaxen
org.jaxen.util
org.jaxen
org.jaxen.util org.jaxen
org.jaxen.util
org.jaxen.xom org.jaxen.util
org.jaxen
org.jaxen.util

Explanation

[ 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.