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.jadira.bindings.core.annotation 5 0 5 4 2 100.0% 33.0% 33.0% 1
org.jadira.bindings.core.annotation.typesafe 2 0 2 0 2 100.0% 100.0% 100.0% 1
org.jadira.bindings.core.api 5 1 4 8 1 80.0% 11.0% 9.0% 1
org.jadira.bindings.core.binder 8 3 5 4 20 62.0% 83.0% 46.0% 1
org.jadira.bindings.core.binder.adapter 1 1 0 0 2 0.0% 100.0% 0.0% 1
org.jadira.bindings.core.cdi 1 1 0 0 5 0.0% 100.0% 0.0% 1
org.jadira.bindings.core.general.adapter 2 2 0 0 2 0.0% 100.0% 0.0% 1
org.jadira.bindings.core.general.binding 7 7 0 1 6 0.0% 86.0% 14.0% 1
org.jadira.bindings.core.general.converter 2 2 0 1 2 0.0% 67.0% 33.0% 1
org.jadira.bindings.core.general.marshaller 2 2 0 2 4 0.0% 67.0% 33.0% 1
org.jadira.bindings.core.general.unmarshaller 3 3 0 1 4 0.0% 80.0% 20.0% 1
org.jadira.bindings.core.jdk 32 31 1 2 9 3.0% 82.0% 15.000001% 1
org.jadira.bindings.core.loader 7 7 0 1 12 0.0% 92.0% 8.0% 1
org.jadira.bindings.core.provider 4 4 0 0 8 0.0% 100.0% 0.0% 1
org.jadira.bindings.core.spi 1 0 1 3 2 100.0% 40.0% 40.0% 1
org.jadira.bindings.core.spring 1 1 0 0 7 0.0% 100.0% 0.0% 1
org.jadira.bindings.core.utils.lang 4 4 0 2 3 0.0% 60.000004% 40.0% 1
org.jadira.bindings.core.utils.reflection 3 3 0 4 5 0.0% 56.0% 44.0% 1
org.jadira.bindings.core.utils.string 1 1 0 1 1 0.0% 50.0% 50.0% 1

Packages

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

org.jadira.bindings.core.annotation

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 2 100.0% 33.0% 33.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jadira.bindings.core.annotation.BindingScope
org.jadira.bindings.core.annotation.Convert
org.jadira.bindings.core.annotation.DefaultBinding
org.jadira.bindings.core.annotation.From
org.jadira.bindings.core.annotation.To
None org.jadira.bindings.core.binder
org.jadira.bindings.core.loader
org.jadira.bindings.core.provider
org.jadira.bindings.core.spring
java.lang
java.lang.annotation

org.jadira.bindings.core.annotation.typesafe

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 100.0% 100.0% 100.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jadira.bindings.core.annotation.typesafe.FromString
org.jadira.bindings.core.annotation.typesafe.ToString
None None java.lang
java.lang.annotation

org.jadira.bindings.core.api

Afferent Couplings Efferent Couplings Abstractness Instability Distance
8 1 80.0% 11.0% 9.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jadira.bindings.core.api.Binding
org.jadira.bindings.core.api.Converter
org.jadira.bindings.core.api.FromUnmarshaller
org.jadira.bindings.core.api.ToMarshaller
org.jadira.bindings.core.api.BindingException
org.jadira.bindings.core.binder
org.jadira.bindings.core.cdi
org.jadira.bindings.core.general.adapter
org.jadira.bindings.core.general.binding
org.jadira.bindings.core.general.converter
org.jadira.bindings.core.general.marshaller
org.jadira.bindings.core.general.unmarshaller
org.jadira.bindings.core.jdk
java.lang

org.jadira.bindings.core.binder

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 20 62.0% 83.0% 46.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jadira.bindings.core.binder.Binder
org.jadira.bindings.core.binder.ConversionBinder
org.jadira.bindings.core.binder.RegisterableBinder
org.jadira.bindings.core.binder.SearchableBinder
org.jadira.bindings.core.binder.StringBinder
org.jadira.bindings.core.binder.BasicBinder
org.jadira.bindings.core.binder.ConverterKey
org.jadira.bindings.core.binder.NoConverterFoundException
org.jadira.bindings.core.binder.adapter
org.jadira.bindings.core.cdi
org.jadira.bindings.core.provider
org.jadira.bindings.core.spring
java.io
java.lang
java.lang.annotation
java.lang.reflect
java.math
java.net
java.util
java.util.concurrent
java.util.concurrent.atomic
org.jadira.bindings.core.annotation
org.jadira.bindings.core.api
org.jadira.bindings.core.general.binding
org.jadira.bindings.core.general.converter
org.jadira.bindings.core.general.marshaller
org.jadira.bindings.core.general.unmarshaller
org.jadira.bindings.core.jdk
org.jadira.bindings.core.loader
org.jadira.bindings.core.spi
org.jadira.bindings.core.utils.lang
org.jadira.bindings.core.utils.reflection

org.jadira.bindings.core.binder.adapter

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jadira.bindings.core.binder.adapter.StringBinderAdapter
None java.lang
org.jadira.bindings.core.binder

org.jadira.bindings.core.cdi

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 5 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jadira.bindings.core.cdi.BinderExtension
None java.lang
java.net
javax.enterprise.inject.spi
org.jadira.bindings.core.api
org.jadira.bindings.core.binder

org.jadira.bindings.core.general.adapter

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jadira.bindings.core.general.adapter.MarshallerToUnmarshaller
org.jadira.bindings.core.general.adapter.UnmarshallerToMarshaller
None java.lang
org.jadira.bindings.core.api

org.jadira.bindings.core.general.binding

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 org.jadira.bindings.core.general.binding.CompositeBinding
org.jadira.bindings.core.general.binding.FromBinding
org.jadira.bindings.core.general.binding.InverseCompositeBinding
org.jadira.bindings.core.general.binding.JodaConvertStringBinding
org.jadira.bindings.core.general.binding.MethodConstructorBinding
org.jadira.bindings.core.general.binding.MethodsBinding
org.jadira.bindings.core.general.binding.ToBinding
org.jadira.bindings.core.binder
java.lang
java.lang.invoke
java.lang.reflect
org.jadira.bindings.core.api
org.jadira.bindings.core.general.marshaller
org.joda.convert

org.jadira.bindings.core.general.converter

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 2 0.0% 67.0% 33.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jadira.bindings.core.general.converter.FromUnmarshallerConverter
org.jadira.bindings.core.general.converter.ToMarshallerConverter
org.jadira.bindings.core.binder
java.lang
org.jadira.bindings.core.api

org.jadira.bindings.core.general.marshaller

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 4 0.0% 67.0% 33.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jadira.bindings.core.general.marshaller.ConverterToMarshaller
org.jadira.bindings.core.general.marshaller.MethodToMarshaller
org.jadira.bindings.core.binder
org.jadira.bindings.core.general.binding
java.lang
java.lang.invoke
java.lang.reflect
org.jadira.bindings.core.api

org.jadira.bindings.core.general.unmarshaller

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.jadira.bindings.core.general.unmarshaller.ConstructorFromUnmarshaller
org.jadira.bindings.core.general.unmarshaller.ConverterFromUnmarshaller
org.jadira.bindings.core.general.unmarshaller.MethodFromUnmarshaller
org.jadira.bindings.core.binder
java.lang
java.lang.invoke
java.lang.reflect
org.jadira.bindings.core.api

org.jadira.bindings.core.jdk

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 9 3.0% 82.0% 15.000001%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jadira.bindings.core.jdk.AbstractStringBinding
org.jadira.bindings.core.jdk.AtomicBooleanStringBinding
org.jadira.bindings.core.jdk.AtomicIntegerStringBinding
org.jadira.bindings.core.jdk.AtomicLongStringBinding
org.jadira.bindings.core.jdk.BigDecimalStringBinding
org.jadira.bindings.core.jdk.BigIntegerStringBinding
org.jadira.bindings.core.jdk.BooleanStringBinding
org.jadira.bindings.core.jdk.ByteStringBinding
org.jadira.bindings.core.jdk.CalendarStringBinding
org.jadira.bindings.core.jdk.CalendarStringBinding$1
org.jadira.bindings.core.jdk.CharSequenceStringBinding
org.jadira.bindings.core.jdk.CharacterStringBinding
org.jadira.bindings.core.jdk.ClassStringBinding
org.jadira.bindings.core.jdk.CurrencyStringBinding
org.jadira.bindings.core.jdk.DateStringBinding
org.jadira.bindings.core.jdk.DateStringBinding$1
org.jadira.bindings.core.jdk.DoubleStringBinding
org.jadira.bindings.core.jdk.FileStringBinding
org.jadira.bindings.core.jdk.FloatStringBinding
org.jadira.bindings.core.jdk.InetAddressStringBinding
org.jadira.bindings.core.jdk.IntegerStringBinding
org.jadira.bindings.core.jdk.LocaleStringBinding
org.jadira.bindings.core.jdk.LongStringBinding
org.jadira.bindings.core.jdk.PackageStringBinding
org.jadira.bindings.core.jdk.ShortStringBinding
org.jadira.bindings.core.jdk.StringBufferStringBinding
org.jadira.bindings.core.jdk.StringBuilderStringBinding
org.jadira.bindings.core.jdk.StringStringBinding
org.jadira.bindings.core.jdk.TimeZoneStringBinding
org.jadira.bindings.core.jdk.URIStringBinding
org.jadira.bindings.core.jdk.URLStringBinding
org.jadira.bindings.core.jdk.UUIDStringBinding
org.jadira.bindings.core.binder
org.jadira.bindings.core.utils.reflection
java.io
java.lang
java.math
java.net
java.text
java.util
java.util.concurrent.atomic
org.jadira.bindings.core.api
org.jadira.bindings.core.utils.reflection

org.jadira.bindings.core.loader

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 12 0.0% 92.0% 8.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jadira.bindings.core.loader.BindingConfiguration
org.jadira.bindings.core.loader.BindingConfigurationEntry
org.jadira.bindings.core.loader.BindingXmlEntityResolver
org.jadira.bindings.core.loader.BindingXmlLoader
org.jadira.bindings.core.loader.BindingXmlLoader$BindingXmlErrorHandler
org.jadira.bindings.core.loader.Extension
org.jadira.bindings.core.loader.Provider
org.jadira.bindings.core.binder
java.io
java.lang
java.lang.reflect
java.net
java.util
javax.xml.parsers
org.jadira.bindings.core.annotation
org.jadira.bindings.core.spi
org.jadira.bindings.core.utils.lang
org.jadira.bindings.core.utils.reflection
org.w3c.dom
org.xml.sax

org.jadira.bindings.core.provider

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.jadira.bindings.core.provider.AbstractAnnotationMatchingConverterProvider
org.jadira.bindings.core.provider.JodaConvertConverterProvider
org.jadira.bindings.core.provider.StandardConverterProvider
org.jadira.bindings.core.provider.StringConverterProvider
None java.lang
java.lang.annotation
java.lang.reflect
java.util
org.jadira.bindings.core.annotation
org.jadira.bindings.core.binder
org.jadira.bindings.core.spi
org.jadira.bindings.core.utils.reflection

org.jadira.bindings.core.spi

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 2 100.0% 40.0% 40.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jadira.bindings.core.spi.ConverterProvider
None org.jadira.bindings.core.binder
org.jadira.bindings.core.loader
org.jadira.bindings.core.provider
java.lang
java.util

org.jadira.bindings.core.spring

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.jadira.bindings.core.spring.BindingConverter
None java.lang
java.lang.annotation
java.util
org.jadira.bindings.core.annotation
org.jadira.bindings.core.binder
org.springframework.core.convert
org.springframework.core.convert.converter

org.jadira.bindings.core.utils.lang

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 3 0.0% 60.000004% 40.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jadira.bindings.core.utils.lang.IterableEnumeration
org.jadira.bindings.core.utils.lang.IterableEnumeration$1
org.jadira.bindings.core.utils.lang.IterableNodeList
org.jadira.bindings.core.utils.lang.IterableNodeList$1
org.jadira.bindings.core.binder
org.jadira.bindings.core.loader
java.lang
java.util
org.w3c.dom

org.jadira.bindings.core.utils.reflection

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 5 0.0% 56.0% 44.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jadira.bindings.core.utils.reflection.ClassLoaderUtils
org.jadira.bindings.core.utils.reflection.ClassUtils
org.jadira.bindings.core.utils.reflection.TypeHelper
org.jadira.bindings.core.binder
org.jadira.bindings.core.jdk
org.jadira.bindings.core.loader
org.jadira.bindings.core.provider
java.lang
java.lang.reflect
java.util
org.jadira.bindings.core.jdk
org.jadira.bindings.core.utils.string

org.jadira.bindings.core.utils.string

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 1 0.0% 50.0% 50.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jadira.bindings.core.utils.string.StringUtils
org.jadira.bindings.core.utils.reflection
java.lang

Cycles

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

Package Package Dependencies
org.jadira.bindings.core.binder org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.jdk
org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.binder.adapter org.jadira.bindings.core.binder
org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.jdk
org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.cdi org.jadira.bindings.core.binder
org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.jdk
org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.jdk org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.jdk
org.jadira.bindings.core.loader org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.jdk
org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.provider org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.jdk
org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.spring org.jadira.bindings.core.binder
org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.jdk
org.jadira.bindings.core.utils.reflection
org.jadira.bindings.core.utils.reflection org.jadira.bindings.core.jdk
org.jadira.bindings.core.utils.reflection

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.