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
com.helger.jcodemodel 111 88 23 4 11 21.0% 73.0% 6.0% 1
com.helger.jcodemodel.fmt 10 9 1 0 7 10.0% 100.0% 10.0% 1
com.helger.jcodemodel.meta 15 15 0 1 10 0.0% 91.0% 9.0% 1
com.helger.jcodemodel.util 14 14 0 3 7 0.0% 70.0% 30.000002% 1
com.helger.jcodemodel.writer 10 10 0 1 6 0.0% 86.0% 14.0% 1

Packages

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

com.helger.jcodemodel

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 11 21.0% 73.0% 6.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
com.helger.jcodemodel.AbstractCodeWriter
com.helger.jcodemodel.AbstractJAnnotationValue
com.helger.jcodemodel.AbstractJAnnotationValueOwned
com.helger.jcodemodel.AbstractJClass
com.helger.jcodemodel.AbstractJClassContainer
com.helger.jcodemodel.AbstractJExpressionAssignmentTargetImpl
com.helger.jcodemodel.AbstractJExpressionImpl
com.helger.jcodemodel.AbstractJGenerifiableImpl
com.helger.jcodemodel.AbstractJResourceFile
com.helger.jcodemodel.AbstractJType
com.helger.jcodemodel.IJAnnotatable
com.helger.jcodemodel.IJAnnotationWriter
com.helger.jcodemodel.IJAssignmentTarget
com.helger.jcodemodel.IJClassContainer
com.helger.jcodemodel.IJDeclaration
com.helger.jcodemodel.IJDocCommentable
com.helger.jcodemodel.IJExpression
com.helger.jcodemodel.IJExpressionStatement
com.helger.jcodemodel.IJGenerable
com.helger.jcodemodel.IJGenerifiable
com.helger.jcodemodel.IJOwned
com.helger.jcodemodel.IJOwnedMaybe
com.helger.jcodemodel.IJStatement
com.helger.jcodemodel.AbstractCodeWriter$1
com.helger.jcodemodel.AbstractCodeWriter$JavaUnicodeEscapeWriter
com.helger.jcodemodel.AbstractJAnnotationValueOwned$FullClassNameExpr
com.helger.jcodemodel.AbstractJAnnotationValueOwned$JEnumConstantExpr
com.helger.jcodemodel.EClassType
com.helger.jcodemodel.JAnnotationArrayMember
com.helger.jcodemodel.JAnnotationStringValue
com.helger.jcodemodel.JAnnotationUse
com.helger.jcodemodel.JAnonymousClass
com.helger.jcodemodel.JArray
com.helger.jcodemodel.JArrayClass
com.helger.jcodemodel.JArrayCompRef
com.helger.jcodemodel.JAssignment
com.helger.jcodemodel.JAtom
com.helger.jcodemodel.JAtomDouble
com.helger.jcodemodel.JAtomFloat
com.helger.jcodemodel.JAtomInt
com.helger.jcodemodel.JAtomLong
com.helger.jcodemodel.JBlock
com.helger.jcodemodel.JBreak
com.helger.jcodemodel.JCase
com.helger.jcodemodel.JCast
com.helger.jcodemodel.JCatchBlock
com.helger.jcodemodel.JClassAlreadyExistsException
com.helger.jcodemodel.JCodeModel
com.helger.jcodemodel.JCodeModel$TypeNameParser
com.helger.jcodemodel.JCommentPart
com.helger.jcodemodel.JConditional
com.helger.jcodemodel.JContinue
com.helger.jcodemodel.JDefinedClass
com.helger.jcodemodel.JDefinedClass$1
com.helger.jcodemodel.JDirectClass
com.helger.jcodemodel.JDirectStatement
com.helger.jcodemodel.JDoLoop
com.helger.jcodemodel.JDocComment
com.helger.jcodemodel.JEnumConstant
com.helger.jcodemodel.JEnumConstantRef
com.helger.jcodemodel.JErrorClass
com.helger.jcodemodel.JErrorClassUsedException
com.helger.jcodemodel.JExpr
com.helger.jcodemodel.JExpr$1
com.helger.jcodemodel.JExpr$2
com.helger.jcodemodel.JFieldRef
com.helger.jcodemodel.JFieldVar
com.helger.jcodemodel.JForEach
com.helger.jcodemodel.JForLoop
com.helger.jcodemodel.JFormatter
com.helger.jcodemodel.JFormatter$1
com.helger.jcodemodel.JFormatter$EMode
com.helger.jcodemodel.JFormatter$ImportedClasses
com.helger.jcodemodel.JFormatter$NameUsage
com.helger.jcodemodel.JInvocation
com.helger.jcodemodel.JJavaName
com.helger.jcodemodel.JLabel
com.helger.jcodemodel.JLambda
com.helger.jcodemodel.JLambdaBlock
com.helger.jcodemodel.JLambdaMethodRef
com.helger.jcodemodel.JLambdaParam
com.helger.jcodemodel.JMethod
com.helger.jcodemodel.JMod
com.helger.jcodemodel.JMods
com.helger.jcodemodel.JNarrowedClass
com.helger.jcodemodel.JNarrowedClass$1
com.helger.jcodemodel.JNullType
com.helger.jcodemodel.JOp
com.helger.jcodemodel.JOpBinary
com.helger.jcodemodel.JOpTernary
com.helger.jcodemodel.JOpUnary
com.helger.jcodemodel.JOpUnaryTight
com.helger.jcodemodel.JPackage
com.helger.jcodemodel.JPrimitiveType
com.helger.jcodemodel.JReferencedClass
com.helger.jcodemodel.JReferencedClass$1
com.helger.jcodemodel.JReturn
com.helger.jcodemodel.JSingleLineCommentStatement
com.helger.jcodemodel.JStringLiteral
com.helger.jcodemodel.JSwitch
com.helger.jcodemodel.JSynchronizedBlock
com.helger.jcodemodel.JThrow
com.helger.jcodemodel.JTryBlock
com.helger.jcodemodel.JTypeVar
com.helger.jcodemodel.JTypeVarClass
com.helger.jcodemodel.JTypeWildcard
com.helger.jcodemodel.JTypeWildcard$EBoundMode
com.helger.jcodemodel.JVar
com.helger.jcodemodel.JWhileLoop
com.helger.jcodemodel.SourcePrintWriter
com.helger.jcodemodel.TypedAnnotationWriter
com.helger.jcodemodel.fmt
com.helger.jcodemodel.meta
com.helger.jcodemodel.util
com.helger.jcodemodel.writer
com.helger.jcodemodel.meta
com.helger.jcodemodel.util
com.helger.jcodemodel.writer
java.io
java.lang
java.lang.annotation
java.lang.reflect
java.nio.charset
java.util
javax.lang.model.element
javax.lang.model.util

com.helger.jcodemodel.fmt

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 10.0% 100.0% 10.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
com.helger.jcodemodel.fmt.JStaticJavaFile$ILineFilter
com.helger.jcodemodel.fmt.JBinaryFile
com.helger.jcodemodel.fmt.JPropertyFile
com.helger.jcodemodel.fmt.JSerializedObject
com.helger.jcodemodel.fmt.JStaticFile
com.helger.jcodemodel.fmt.JStaticJavaFile
com.helger.jcodemodel.fmt.JStaticJavaFile$1
com.helger.jcodemodel.fmt.JStaticJavaFile$ChainFilter
com.helger.jcodemodel.fmt.JStaticJavaFile$JStaticClass
com.helger.jcodemodel.fmt.JTextFile
None com.helger.jcodemodel
com.helger.jcodemodel.util
java.io
java.lang
java.net
java.text
java.util

com.helger.jcodemodel.meta

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 10 0.0% 91.0% 9.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.helger.jcodemodel.meta.Annotator
com.helger.jcodemodel.meta.Annotator$ArgumentAdder
com.helger.jcodemodel.meta.ClassFiller
com.helger.jcodemodel.meta.CodeModelBuildingException
com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter
com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter$1
com.helger.jcodemodel.meta.ErrorTypeFound
com.helger.jcodemodel.meta.ErrorTypePolicy
com.helger.jcodemodel.meta.ErrorTypePolicy$EAction
com.helger.jcodemodel.meta.JCodeModelJavaxLangModelAdapter
com.helger.jcodemodel.meta.RuntimeCodeModelBuildingException
com.helger.jcodemodel.meta.RuntimeErrorTypeFound
com.helger.jcodemodel.meta.TypeEnvironment
com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor
com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor$1
com.helger.jcodemodel
com.helger.jcodemodel
com.helger.jcodemodel.util
java.lang
java.lang.reflect
java.text
java.util
java.util.logging
javax.lang.model.element
javax.lang.model.type
javax.lang.model.util

com.helger.jcodemodel.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 7 0.0% 70.0% 30.000002%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.helger.jcodemodel.util.ClassNameComparator
com.helger.jcodemodel.util.JCEqualsHelper
com.helger.jcodemodel.util.JCHashCodeCalculator
com.helger.jcodemodel.util.JCHashCodeGenerator
com.helger.jcodemodel.util.JCNameUtilities
com.helger.jcodemodel.util.JCSecureLoader
com.helger.jcodemodel.util.JCSecureLoader$1
com.helger.jcodemodel.util.JCSecureLoader$2
com.helger.jcodemodel.util.JCSecureLoader$3
com.helger.jcodemodel.util.JCSecureLoader$4
com.helger.jcodemodel.util.JCValueEnforcer
com.helger.jcodemodel.util.JavadocEscapeWriter
com.helger.jcodemodel.util.NullWriter
com.helger.jcodemodel.util.UnicodeEscapeWriter
com.helger.jcodemodel
com.helger.jcodemodel.fmt
com.helger.jcodemodel.meta
com.helger.jcodemodel
java.io
java.lang
java.math
java.security
java.util
org.w3c.dom

com.helger.jcodemodel.writer

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 6 0.0% 86.0% 14.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None com.helger.jcodemodel.writer.FileCodeWriter
com.helger.jcodemodel.writer.FilterCodeWriter
com.helger.jcodemodel.writer.OutputStreamCodeWriter
com.helger.jcodemodel.writer.OutputStreamCodeWriter$1
com.helger.jcodemodel.writer.ProgressCodeWriter
com.helger.jcodemodel.writer.PrologCodeWriter
com.helger.jcodemodel.writer.SingleStreamCodeWriter
com.helger.jcodemodel.writer.SingleStreamCodeWriter$1
com.helger.jcodemodel.writer.ZipCodeWriter
com.helger.jcodemodel.writer.ZipCodeWriter$1
com.helger.jcodemodel
com.helger.jcodemodel
java.io
java.lang
java.nio.charset
java.util
java.util.zip

Cycles

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

Package Package Dependencies
com.helger.jcodemodel com.helger.jcodemodel.util
com.helger.jcodemodel
com.helger.jcodemodel.fmt com.helger.jcodemodel
com.helger.jcodemodel.util
com.helger.jcodemodel
com.helger.jcodemodel.meta com.helger.jcodemodel
com.helger.jcodemodel.util
com.helger.jcodemodel
com.helger.jcodemodel.util com.helger.jcodemodel
com.helger.jcodemodel.util
com.helger.jcodemodel.writer com.helger.jcodemodel
com.helger.jcodemodel.util
com.helger.jcodemodel

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.