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.apache.commons.javaflow 4 4 0 1 10 0.0% 91.0% 9.0% 1
org.apache.commons.javaflow.ant 1 1 0 0 10 0.0% 100.0% 0.0% 1
org.apache.commons.javaflow.bytecode 6 5 1 1 7 17.0% 88.0% 4.0% 1
org.apache.commons.javaflow.bytecode.transformation 2 1 1 6 1 50.0% 14.0% 36.0% 1
org.apache.commons.javaflow.bytecode.transformation.asm 5 5 0 1 8 0.0% 89.0% 11.0% 1
org.apache.commons.javaflow.bytecode.transformation.bcel 2 2 0 4 11 0.0% 73.0% 27.000002% 1
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser 14 12 2 1 7 14.0% 88.0% 2.0% 1
org.apache.commons.javaflow.stores 2 2 0 0 8 0.0% 100.0% 0.0% 1
org.apache.commons.javaflow.utils 9 6 3 3 8 33.0% 73.0% 6.0% 1

Packages

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

org.apache.commons.javaflow

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 org.apache.commons.javaflow.Continuation
org.apache.commons.javaflow.ContinuationClassLoader
org.apache.commons.javaflow.ContinuationClassLoader$1
org.apache.commons.javaflow.ContinuationDeath
org.apache.commons.javaflow.bytecode
java.io
java.lang
java.net
java.security
java.util
org.apache.commons.javaflow.bytecode
org.apache.commons.javaflow.bytecode.transformation
org.apache.commons.javaflow.bytecode.transformation.bcel
org.apache.commons.javaflow.utils
org.apache.commons.logging

org.apache.commons.javaflow.ant

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 10 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.javaflow.ant.AntRewriteTask
None java.io
java.lang
java.util.jar
org.apache.commons.javaflow.bytecode.transformation
org.apache.commons.javaflow.bytecode.transformation.asm
org.apache.commons.javaflow.bytecode.transformation.bcel
org.apache.commons.javaflow.utils
org.apache.tools.ant
org.apache.tools.ant.taskdefs
org.apache.tools.ant.types

org.apache.commons.javaflow.bytecode

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 7 17.0% 88.0% 4.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.javaflow.bytecode.Continuable
org.apache.commons.javaflow.bytecode.BytecodeClassLoader
org.apache.commons.javaflow.bytecode.BytecodeClassLoader$NameClassAdapter
org.apache.commons.javaflow.bytecode.EmptyStackException
org.apache.commons.javaflow.bytecode.Stack
org.apache.commons.javaflow.bytecode.StackRecorder
org.apache.commons.javaflow
java.io
java.lang
org.apache.commons.javaflow
org.apache.commons.javaflow.utils
org.apache.commons.logging
org.objectweb.asm
org.objectweb.asm.commons

org.apache.commons.javaflow.bytecode.transformation

Afferent Couplings Efferent Couplings Abstractness Instability Distance
6 1 50.0% 14.0% 36.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.javaflow.bytecode.transformation.ResourceTransformer
org.apache.commons.javaflow.bytecode.transformation.NopResourceTransformer
org.apache.commons.javaflow
org.apache.commons.javaflow.ant
org.apache.commons.javaflow.bytecode.transformation.asm
org.apache.commons.javaflow.bytecode.transformation.bcel
org.apache.commons.javaflow.stores
org.apache.commons.javaflow.utils
java.lang

org.apache.commons.javaflow.bytecode.transformation.asm

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 8 0.0% 89.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.javaflow.bytecode.transformation.asm.AsmClassTransformer
org.apache.commons.javaflow.bytecode.transformation.asm.ContinuationClassAdapter
org.apache.commons.javaflow.bytecode.transformation.asm.ContinuationMethodAdapter
org.apache.commons.javaflow.bytecode.transformation.asm.ContinuationMethodAnalyzer
org.apache.commons.javaflow.bytecode.transformation.asm.ContinuationMethodAnalyzer$1
org.apache.commons.javaflow.ant
java.io
java.lang
java.util
org.apache.commons.javaflow.bytecode.transformation
org.objectweb.asm
org.objectweb.asm.tree
org.objectweb.asm.tree.analysis
org.objectweb.asm.util

org.apache.commons.javaflow.bytecode.transformation.bcel

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 11 0.0% 73.0% 27.000002%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.javaflow.bytecode.transformation.bcel.BcelClassTransformer
org.apache.commons.javaflow.bytecode.transformation.bcel.DecompilingVisitor
org.apache.commons.javaflow
org.apache.commons.javaflow.ant
org.apache.commons.javaflow.stores
org.apache.commons.javaflow.utils
java.io
java.lang
java.util
org.apache.bcel
org.apache.bcel.classfile
org.apache.bcel.generic
org.apache.bcel.util
org.apache.bcel.verifier.exc
org.apache.commons.javaflow.bytecode.transformation
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser
org.apache.commons.logging

org.apache.commons.javaflow.bytecode.transformation.bcel.analyser

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 7 14.0% 88.0% 2.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.InstructionContext
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.Subroutine
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.ControlFlowGraph
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.ControlFlowGraph$InstructionContextImpl
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.ExceptionHandler
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.ExceptionHandlers
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.ExecutionPath
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.ExecutionVisitor
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.Frame
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.LocalVariables
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.OperandStack
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.Subroutines
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.Subroutines$SubroutineImpl
org.apache.commons.javaflow.bytecode.transformation.bcel.analyser.UninitializedObjectType
org.apache.commons.javaflow.bytecode.transformation.bcel
java.io
java.lang
java.util
org.apache.bcel
org.apache.bcel.classfile
org.apache.bcel.generic
org.apache.bcel.verifier.exc

org.apache.commons.javaflow.stores

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 8 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.javaflow.stores.JavaflowResourceStore
org.apache.commons.javaflow.stores.TransformingResourceStore
None java.lang
java.util
org.apache.bcel
org.apache.bcel.util
org.apache.commons.javaflow.bytecode.transformation
org.apache.commons.javaflow.bytecode.transformation.bcel
org.apache.commons.jci.stores
org.apache.commons.logging

org.apache.commons.javaflow.utils

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 8 33.0% 73.0% 6.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.javaflow.utils.ReflectionUtils$Indexer
org.apache.commons.javaflow.utils.ReflectionUtils$Matcher
org.apache.commons.javaflow.utils.RewritingUtils$Matcher
org.apache.commons.javaflow.utils.CompositeTransformer
org.apache.commons.javaflow.utils.ReflectionUtils
org.apache.commons.javaflow.utils.ReflectionUtils$DefaultIndexer
org.apache.commons.javaflow.utils.ReflectionUtils$DefaultMatcher
org.apache.commons.javaflow.utils.RewritingUtils
org.apache.commons.javaflow.utils.RewritingUtils$1
org.apache.commons.javaflow
org.apache.commons.javaflow.ant
org.apache.commons.javaflow.bytecode
java.io
java.lang
java.lang.reflect
java.util
java.util.jar
org.apache.commons.javaflow.bytecode.transformation
org.apache.commons.javaflow.bytecode.transformation.bcel
org.apache.commons.logging

Cycles

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

Package Package Dependencies
org.apache.commons.javaflow org.apache.commons.javaflow.bytecode
org.apache.commons.javaflow
org.apache.commons.javaflow.bytecode org.apache.commons.javaflow
org.apache.commons.javaflow.bytecode

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.