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
net.sf.jour101002160.0%89.0%11.0%1
net.sf.jour.config440220.0%50.0%50.0%1
net.sf.jour.filter151232820.0%80.0%0.0%1
net.sf.jour.instrumentor12842733.0%78.0%11.0%1
net.sf.jour.log220540.0%44.0%56.0%1
net.sf.jour.processor141132521.0%71.0%7.0%1
net.sf.jour.signature121111178.0%94.0%3.0%1
net.sf.jour.util109141010.0%71.0%19.0%1

Packages

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

net.sf.jour

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
2160.0%89.0%11.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.jour.Config
net.sf.jour.ConfigException
net.sf.jour.InstrumentingClassLoader
net.sf.jour.InstrumentingTranslator
net.sf.jour.Interceptor
net.sf.jour.InterceptorException
net.sf.jour.PreProcessor
net.sf.jour.SignatureExport
net.sf.jour.SignatureGenerator
net.sf.jour.SignatureVerify
net.sf.jour.instrumentor
net.sf.jour.signature
java.io
java.lang
java.lang.reflect
java.net
java.util
javassist
javax.xml.parsers
net.sf.jour.config
net.sf.jour.filter
net.sf.jour.instrumentor
net.sf.jour.log
net.sf.jour.processor
net.sf.jour.signature
net.sf.jour.util
org.w3c.dom
org.xml.sax

net.sf.jour.config

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
220.0%50.0%50.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.jour.config.Aspect
net.sf.jour.config.AspectProperty
net.sf.jour.config.Jour
net.sf.jour.config.Pointcut
net.sf.jour
net.sf.jour.filter
java.lang
java.util

net.sf.jour.filter

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
2820.0%80.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.jour.filter.BasicFilter
net.sf.jour.filter.Filter
net.sf.jour.filter.MatchFilter
net.sf.jour.filter.ClassFilter
net.sf.jour.filter.MatchAnyFilter
net.sf.jour.filter.MatchListFilter
net.sf.jour.filter.MatchStringFilter
net.sf.jour.filter.MatchStringListFilter
net.sf.jour.filter.Pointcut
net.sf.jour.filter.PointcutListFilter
net.sf.jour.filter.PointcutModifierFiler
net.sf.jour.filter.PointcutModifierListFiler
net.sf.jour.filter.PointcutParamsFilter
net.sf.jour.filter.TimeListFilter
net.sf.jour.filter.TimeMatchFilter
net.sf.jour
net.sf.jour.instrumentor
java.lang
java.lang.reflect
java.util
java.util.regex
javassist
net.sf.jour.config
net.sf.jour.log
net.sf.jour.util

net.sf.jour.instrumentor

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
2733.0%78.0%11.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.jour.instrumentor.AbstractInstrumentor
net.sf.jour.instrumentor.Instrumentor
net.sf.jour.instrumentor.InstrumentorConsts
net.sf.jour.instrumentor.InstrumentorResults
net.sf.jour.instrumentor.ExceptionCatcherInstrumentor
net.sf.jour.instrumentor.InstanceCounterInstrumentor
net.sf.jour.instrumentor.InstrumentorFactory
net.sf.jour.instrumentor.InstrumentorResultsImpl
net.sf.jour.instrumentor.MakeEmptyMethodInstrumentor
net.sf.jour.instrumentor.MakeProtectedMethodInstrumentor
net.sf.jour.instrumentor.MethodExecutionTimeInstrumentor
net.sf.jour.instrumentor.ReplaceMethodInstrumentor
net.sf.jour
net.sf.jour.signature
java.lang
java.util
javassist
net.sf.jour
net.sf.jour.filter
net.sf.jour.log
net.sf.jour.util

net.sf.jour.log

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
540.0%44.0%56.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.jour.log.Logger
net.sf.jour.log.Logger$LoggerLog4j
net.sf.jour
net.sf.jour.filter
net.sf.jour.instrumentor
net.sf.jour.signature
net.sf.jour.util
java.io
java.lang
java.util
org.apache.log4j

net.sf.jour.processor

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
2521.0%71.0%7.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.jour.processor.Entry
net.sf.jour.processor.InputSource
net.sf.jour.processor.OutputWriter
net.sf.jour.processor.CompileIOException
net.sf.jour.processor.DirectoryInputSource
net.sf.jour.processor.DirectoryInputSource$DirectoryEnumeration
net.sf.jour.processor.DirectoryOutputWriter
net.sf.jour.processor.EntryHelper
net.sf.jour.processor.FileEntry
net.sf.jour.processor.InstrumentedCreatedEntry
net.sf.jour.processor.InstrumentedEntry
net.sf.jour.processor.JarFileEntry
net.sf.jour.processor.JarFileInputSource
net.sf.jour.processor.JarFileInputSource$JarEnumeration
net.sf.jour
net.sf.jour.signature
java.io
java.lang
java.util
java.util.jar
javassist

net.sf.jour.signature

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
1178.0%94.0%3.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.jour.signature.SignatureTestCase
net.sf.jour.signature.APICompare
net.sf.jour.signature.APICompareChangeHelper
net.sf.jour.signature.APICompareConfig
net.sf.jour.signature.APIFilter
net.sf.jour.signature.ChangeDetectedException
net.sf.jour.signature.ExportClasses
net.sf.jour.signature.ExportXML
net.sf.jour.signature.Generator
net.sf.jour.signature.Generator$1
net.sf.jour.signature.Generator$ClassSortComparator
net.sf.jour.signature.SignatureImport
net.sf.jour
java.io
java.lang
java.util
javassist
javassist.bytecode
javax.xml.parsers
javax.xml.transform
javax.xml.transform.dom
javax.xml.transform.stream
junit.framework
net.sf.jour
net.sf.jour.instrumentor
net.sf.jour.log
net.sf.jour.processor
net.sf.jour.util
org.w3c.dom
org.xml.sax

net.sf.jour.util

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
41010.0%71.0%19.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.jour.util.CmdArgs
net.sf.jour.util.BuildVersion
net.sf.jour.util.ClassPathUtil
net.sf.jour.util.ConfigFileUtil
net.sf.jour.util.FileUtil
net.sf.jour.util.FileUtil$FileListByDateComparator
net.sf.jour.util.FileUtil$FileListByNameComparator
net.sf.jour.util.RegExUtil
net.sf.jour.util.StringUtil
net.sf.jour.util.TimeUtil
net.sf.jour
net.sf.jour.filter
net.sf.jour.instrumentor
net.sf.jour.signature
java.io
java.lang
java.net
java.text
java.util
java.util.regex
javax.xml.parsers
net.sf.jour.log
org.w3c.dom
org.xml.sax

Cycles

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

PackagePackage Dependencies
net.sf.journet.sf.jour.instrumentor
net.sf.jour
net.sf.jour.instrumentornet.sf.jour
net.sf.jour.instrumentor
net.sf.jour.signaturenet.sf.jour.instrumentor
net.sf.jour
net.sf.jour.instrumentor

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.