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 ]

PackageTCCCACCaCeAIDV
org.apache.commons.jexl25043731214.0%80.0%6.0%1
org.apache.commons.jexl2.internal201641720.0%88.0%8.0%1
org.apache.commons.jexl2.internal.introspection10912410.0%67.0%23.0%1
org.apache.commons.jexl2.introspection181353828.0%73.0%1.0%1
org.apache.commons.jexl2.parser70646259.0%71.0%20.0%1
org.apache.commons.jexl2.scripting10100080.0%100.0%0.0%1

Packages

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

org.apache.commons.jexl2

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
31214.0%80.0%6.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.apache.commons.jexl2.Expression
org.apache.commons.jexl2.JexlContext
org.apache.commons.jexl2.JexlInfo
org.apache.commons.jexl2.NamespaceResolver
org.apache.commons.jexl2.Script
org.apache.commons.jexl2.UnifiedJEXL$Expression
org.apache.commons.jexl2.UnifiedJEXL$JexlBasedExpression
org.apache.commons.jexl2.DebugInfo
org.apache.commons.jexl2.Debugger
org.apache.commons.jexl2.ExpressionImpl
org.apache.commons.jexl2.ExpressionImpl$1
org.apache.commons.jexl2.Interpreter
org.apache.commons.jexl2.JexlArithmetic
org.apache.commons.jexl2.JexlEngine
org.apache.commons.jexl2.JexlEngine$1
org.apache.commons.jexl2.JexlEngine$2
org.apache.commons.jexl2.JexlEngine$Frame
org.apache.commons.jexl2.JexlEngine$Scope
org.apache.commons.jexl2.JexlEngine$SoftCache
org.apache.commons.jexl2.JexlEngine$UberspectHolder
org.apache.commons.jexl2.JexlException
org.apache.commons.jexl2.JexlException$Cancel
org.apache.commons.jexl2.JexlException$Method
org.apache.commons.jexl2.JexlException$Parsing
org.apache.commons.jexl2.JexlException$Property
org.apache.commons.jexl2.JexlException$Return
org.apache.commons.jexl2.JexlException$Tokenization
org.apache.commons.jexl2.JexlException$Variable
org.apache.commons.jexl2.JexlThreadedArithmetic
org.apache.commons.jexl2.JexlThreadedArithmetic$1
org.apache.commons.jexl2.JexlThreadedArithmetic$Features
org.apache.commons.jexl2.Main
org.apache.commons.jexl2.MapContext
org.apache.commons.jexl2.ObjectContext
org.apache.commons.jexl2.ReadonlyContext
org.apache.commons.jexl2.UnifiedJEXL
org.apache.commons.jexl2.UnifiedJEXL$1
org.apache.commons.jexl2.UnifiedJEXL$BlockType
org.apache.commons.jexl2.UnifiedJEXL$CompositeExpression
org.apache.commons.jexl2.UnifiedJEXL$ConstantExpression
org.apache.commons.jexl2.UnifiedJEXL$DeferredExpression
org.apache.commons.jexl2.UnifiedJEXL$Exception
org.apache.commons.jexl2.UnifiedJEXL$ExpressionBuilder
org.apache.commons.jexl2.UnifiedJEXL$ExpressionType
org.apache.commons.jexl2.UnifiedJEXL$ImmediateExpression
org.apache.commons.jexl2.UnifiedJEXL$NestedExpression
org.apache.commons.jexl2.UnifiedJEXL$ParseState
org.apache.commons.jexl2.UnifiedJEXL$Template
org.apache.commons.jexl2.UnifiedJEXL$TemplateBlock
org.apache.commons.jexl2.UnifiedJEXL$TemplateContext
org.apache.commons.jexl2.introspection
org.apache.commons.jexl2.parser
org.apache.commons.jexl2.scripting
java.io
java.lang
java.lang.ref
java.lang.reflect
java.math
java.net
java.util
java.util.concurrent
java.util.regex
org.apache.commons.jexl2.introspection
org.apache.commons.jexl2.parser
org.apache.commons.logging

org.apache.commons.jexl2.internal

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
1720.0%88.0%8.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.apache.commons.jexl2.internal.AbstractExecutor
org.apache.commons.jexl2.internal.AbstractExecutor$Get
org.apache.commons.jexl2.internal.AbstractExecutor$Method
org.apache.commons.jexl2.internal.AbstractExecutor$Set
org.apache.commons.jexl2.internal.AbstractExecutor$1
org.apache.commons.jexl2.internal.AbstractExecutor$Method$Parameter
org.apache.commons.jexl2.internal.ArrayIterator
org.apache.commons.jexl2.internal.ArrayListWrapper
org.apache.commons.jexl2.internal.BooleanGetExecutor
org.apache.commons.jexl2.internal.DuckGetExecutor
org.apache.commons.jexl2.internal.DuckSetExecutor
org.apache.commons.jexl2.internal.EnumerationIterator
org.apache.commons.jexl2.internal.Introspector
org.apache.commons.jexl2.internal.ListGetExecutor
org.apache.commons.jexl2.internal.ListSetExecutor
org.apache.commons.jexl2.internal.MapGetExecutor
org.apache.commons.jexl2.internal.MapSetExecutor
org.apache.commons.jexl2.internal.MethodExecutor
org.apache.commons.jexl2.internal.PropertyGetExecutor
org.apache.commons.jexl2.internal.PropertySetExecutor
org.apache.commons.jexl2.introspection
java.lang
java.lang.ref
java.lang.reflect
java.util
org.apache.commons.jexl2.internal.introspection
org.apache.commons.jexl2.introspection
org.apache.commons.logging

org.apache.commons.jexl2.internal.introspection

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
2410.0%67.0%23.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.apache.commons.jexl2.internal.introspection.MethodKey$Parameters
org.apache.commons.jexl2.internal.introspection.ClassMap
org.apache.commons.jexl2.internal.introspection.ClassMap$MethodCache
org.apache.commons.jexl2.internal.introspection.IntrospectorBase
org.apache.commons.jexl2.internal.introspection.IntrospectorBase$CacheMiss
org.apache.commons.jexl2.internal.introspection.MethodKey
org.apache.commons.jexl2.internal.introspection.MethodKey$1
org.apache.commons.jexl2.internal.introspection.MethodKey$2
org.apache.commons.jexl2.internal.introspection.MethodKey$AmbiguousException
org.apache.commons.jexl2.internal.introspection.MethodMap
org.apache.commons.jexl2.internal
org.apache.commons.jexl2.introspection
java.lang
java.lang.reflect
java.util
org.apache.commons.logging

org.apache.commons.jexl2.introspection

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
3828.0%73.0%1.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.apache.commons.jexl2.introspection.JexlMethod
org.apache.commons.jexl2.introspection.JexlPropertyGet
org.apache.commons.jexl2.introspection.JexlPropertySet
org.apache.commons.jexl2.introspection.Sandbox$Names
org.apache.commons.jexl2.introspection.Uberspect
org.apache.commons.jexl2.introspection.Sandbox
org.apache.commons.jexl2.introspection.Sandbox$1
org.apache.commons.jexl2.introspection.Sandbox$BlackSet
org.apache.commons.jexl2.introspection.Sandbox$Permissions
org.apache.commons.jexl2.introspection.Sandbox$WhiteSet
org.apache.commons.jexl2.introspection.SandboxUberspectImpl
org.apache.commons.jexl2.introspection.UberspectImpl
org.apache.commons.jexl2.introspection.UberspectImpl$1
org.apache.commons.jexl2.introspection.UberspectImpl$ConstructorMethod
org.apache.commons.jexl2.introspection.UberspectImpl$FieldPropertyGet
org.apache.commons.jexl2.introspection.UberspectImpl$FieldPropertySet
org.apache.commons.jexl2.introspection.UberspectImpl$IndexedContainer
org.apache.commons.jexl2.introspection.UberspectImpl$IndexedType
org.apache.commons.jexl2
org.apache.commons.jexl2.internal
org.apache.commons.jexl2.scripting
java.beans
java.lang
java.lang.reflect
java.util
org.apache.commons.jexl2
org.apache.commons.jexl2.internal
org.apache.commons.jexl2.internal.introspection
org.apache.commons.logging

org.apache.commons.jexl2.parser

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
259.0%71.0%20.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.apache.commons.jexl2.parser.JexlNode
org.apache.commons.jexl2.parser.JexlNode$Literal
org.apache.commons.jexl2.parser.Node
org.apache.commons.jexl2.parser.ParserConstants
org.apache.commons.jexl2.parser.ParserTreeConstants
org.apache.commons.jexl2.parser.ParserVisitor
org.apache.commons.jexl2.parser.ASTAdditiveNode
org.apache.commons.jexl2.parser.ASTAdditiveOperator
org.apache.commons.jexl2.parser.ASTAmbiguous
org.apache.commons.jexl2.parser.ASTAndNode
org.apache.commons.jexl2.parser.ASTArrayAccess
org.apache.commons.jexl2.parser.ASTArrayLiteral
org.apache.commons.jexl2.parser.ASTAssignment
org.apache.commons.jexl2.parser.ASTBitwiseAndNode
org.apache.commons.jexl2.parser.ASTBitwiseComplNode
org.apache.commons.jexl2.parser.ASTBitwiseOrNode
org.apache.commons.jexl2.parser.ASTBitwiseXorNode
org.apache.commons.jexl2.parser.ASTBlock
org.apache.commons.jexl2.parser.ASTConstructorNode
org.apache.commons.jexl2.parser.ASTDivNode
org.apache.commons.jexl2.parser.ASTEQNode
org.apache.commons.jexl2.parser.ASTERNode
org.apache.commons.jexl2.parser.ASTEmptyFunction
org.apache.commons.jexl2.parser.ASTFalseNode
org.apache.commons.jexl2.parser.ASTFloatLiteral
org.apache.commons.jexl2.parser.ASTForeachStatement
org.apache.commons.jexl2.parser.ASTFunctionNode
org.apache.commons.jexl2.parser.ASTGENode
org.apache.commons.jexl2.parser.ASTGTNode
org.apache.commons.jexl2.parser.ASTIdentifier
org.apache.commons.jexl2.parser.ASTIfStatement
org.apache.commons.jexl2.parser.ASTIntegerLiteral
org.apache.commons.jexl2.parser.ASTJexlScript
org.apache.commons.jexl2.parser.ASTLENode
org.apache.commons.jexl2.parser.ASTLTNode
org.apache.commons.jexl2.parser.ASTMapEntry
org.apache.commons.jexl2.parser.ASTMapLiteral
org.apache.commons.jexl2.parser.ASTMethodNode
org.apache.commons.jexl2.parser.ASTModNode
org.apache.commons.jexl2.parser.ASTMulNode
org.apache.commons.jexl2.parser.ASTNENode
org.apache.commons.jexl2.parser.ASTNRNode
org.apache.commons.jexl2.parser.ASTNotNode
org.apache.commons.jexl2.parser.ASTNullLiteral
org.apache.commons.jexl2.parser.ASTNumberLiteral
org.apache.commons.jexl2.parser.ASTOrNode
org.apache.commons.jexl2.parser.ASTReference
org.apache.commons.jexl2.parser.ASTReferenceExpression
org.apache.commons.jexl2.parser.ASTReturnStatement
org.apache.commons.jexl2.parser.ASTSizeFunction
org.apache.commons.jexl2.parser.ASTSizeMethod
org.apache.commons.jexl2.parser.ASTStringLiteral
org.apache.commons.jexl2.parser.ASTTernaryNode
org.apache.commons.jexl2.parser.ASTTrueNode
org.apache.commons.jexl2.parser.ASTUnaryMinusNode
org.apache.commons.jexl2.parser.ASTVar
org.apache.commons.jexl2.parser.ASTWhileStatement
org.apache.commons.jexl2.parser.JJTParserState
org.apache.commons.jexl2.parser.JexlParser
org.apache.commons.jexl2.parser.ParseException
org.apache.commons.jexl2.parser.Parser
org.apache.commons.jexl2.parser.Parser$1
org.apache.commons.jexl2.parser.Parser$JJCalls
org.apache.commons.jexl2.parser.Parser$LookaheadSuccess
org.apache.commons.jexl2.parser.ParserTokenManager
org.apache.commons.jexl2.parser.SimpleCharStream
org.apache.commons.jexl2.parser.SimpleNode
org.apache.commons.jexl2.parser.StringParser
org.apache.commons.jexl2.parser.Token
org.apache.commons.jexl2.parser.TokenMgrError
org.apache.commons.jexl2
org.apache.commons.jexl2.scripting
java.io
java.lang
java.math
java.util
org.apache.commons.jexl2

org.apache.commons.jexl2.scripting

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
080.0%100.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Noneorg.apache.commons.jexl2.scripting.JexlScriptEngine
org.apache.commons.jexl2.scripting.JexlScriptEngine$1
org.apache.commons.jexl2.scripting.JexlScriptEngine$EngineSingletonHolder
org.apache.commons.jexl2.scripting.JexlScriptEngine$EngineSingletonHolder$1
org.apache.commons.jexl2.scripting.JexlScriptEngine$FactorySingletonHolder
org.apache.commons.jexl2.scripting.JexlScriptEngine$JexlCompiledScript
org.apache.commons.jexl2.scripting.JexlScriptEngine$JexlContextWrapper
org.apache.commons.jexl2.scripting.JexlScriptEngine$JexlScriptObject
org.apache.commons.jexl2.scripting.JexlScriptEngineFactory
org.apache.commons.jexl2.scripting.Main
Nonejava.io
java.lang
java.util
javax.script
org.apache.commons.jexl2
org.apache.commons.jexl2.introspection
org.apache.commons.jexl2.parser
org.apache.commons.logging

Cycles

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

PackagePackage Dependencies
org.apache.commons.jexl2org.apache.commons.jexl2.parser
org.apache.commons.jexl2
org.apache.commons.jexl2.internalorg.apache.commons.jexl2.introspection
org.apache.commons.jexl2
org.apache.commons.jexl2.parser
org.apache.commons.jexl2
org.apache.commons.jexl2.introspectionorg.apache.commons.jexl2
org.apache.commons.jexl2.parser
org.apache.commons.jexl2
org.apache.commons.jexl2.parserorg.apache.commons.jexl2
org.apache.commons.jexl2.parser
org.apache.commons.jexl2.scriptingorg.apache.commons.jexl2.introspection
org.apache.commons.jexl2
org.apache.commons.jexl2.parser
org.apache.commons.jexl2

Explanation

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

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

TermDescription
Number of ClassesThe number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.
Afferent CouplingsThe number of other packages that depend upon classes within the package is an indicator of the package's responsibility.
Efferent CouplingsThe number of other packages that the classes in the package depend upon is an indicator of the package's independence.
AbstractnessThe 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.
InstabilityThe 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.
DistanceThe 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.
CyclesPackages 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.