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.opendaylight.mdsal.binding.dom.codec.api 7 0 7 1 11 100.0% 92.0% 92.0% 1
org.opendaylight.yangtools.binding.data.codec.api 7 0 7 2 10 100.0% 83.0% 83.0% 1
org.opendaylight.yangtools.binding.data.codec.gen.impl 17 11 6 1 20 35.0% 95.0% 31.0% 1
org.opendaylight.yangtools.binding.data.codec.gen.spi 2 1 1 1 5 50.0% 83.0% 33.0% 1
org.opendaylight.yangtools.binding.data.codec.impl 63 53 10 0 33 16.0% 100.0% 16.0% 1
org.opendaylight.yangtools.binding.data.codec.util 3 2 1 2 8 33.0% 80.0% 13.0% 1

Packages

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

org.opendaylight.mdsal.binding.dom.codec.api

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 11 100.0% 92.0% 92.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree
org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory
org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeNode
org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeCachingCodec
org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeCodec
org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer
org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeWriterFactory
None org.opendaylight.yangtools.binding.data.codec.impl
com.google.common.base
com.google.common.collect
java.lang
java.util
org.opendaylight.yangtools.binding.data.codec.api
org.opendaylight.yangtools.sal.binding.generator.util
org.opendaylight.yangtools.yang.binding
org.opendaylight.yangtools.yang.data.api
org.opendaylight.yangtools.yang.data.api.schema
org.opendaylight.yangtools.yang.data.api.schema.stream
org.opendaylight.yangtools.yang.model.api

org.opendaylight.yangtools.binding.data.codec.api

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 10 100.0% 83.0% 83.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTree
org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTreeFactory
org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTreeNode
org.opendaylight.yangtools.binding.data.codec.api.BindingNormalizedNodeCachingCodec
org.opendaylight.yangtools.binding.data.codec.api.BindingNormalizedNodeCodec
org.opendaylight.yangtools.binding.data.codec.api.BindingNormalizedNodeSerializer
org.opendaylight.yangtools.binding.data.codec.api.BindingNormalizedNodeWriterFactory
None org.opendaylight.mdsal.binding.dom.codec.api
org.opendaylight.yangtools.binding.data.codec.impl
com.google.common.base
com.google.common.collect
java.lang
java.util
org.opendaylight.yangtools.sal.binding.generator.util
org.opendaylight.yangtools.yang.binding
org.opendaylight.yangtools.yang.data.api
org.opendaylight.yangtools.yang.data.api.schema
org.opendaylight.yangtools.yang.data.api.schema.stream
org.opendaylight.yangtools.yang.model.api

org.opendaylight.yangtools.binding.data.codec.gen.impl

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 20 35.0% 95.0% 31.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.binding.data.codec.gen.impl.AbstractGenerator
org.opendaylight.yangtools.binding.data.codec.gen.impl.AbstractStreamWriterGenerator
org.opendaylight.yangtools.binding.data.codec.gen.impl.AugmentableDataNodeContainerEmitterSource
org.opendaylight.yangtools.binding.data.codec.gen.impl.DataNodeContainerSerializerSource
org.opendaylight.yangtools.binding.data.codec.gen.impl.DataObjectSerializerGenerator
org.opendaylight.yangtools.binding.data.codec.gen.impl.DataObjectSerializerSource
org.opendaylight.yangtools.binding.data.codec.gen.impl.AbstractStreamWriterGenerator$1
org.opendaylight.yangtools.binding.data.codec.gen.impl.AbstractStreamWriterGenerator$2
org.opendaylight.yangtools.binding.data.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader
org.opendaylight.yangtools.binding.data.codec.gen.impl.DataObjectSerializerPrototype
org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator
org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator$1
org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator$2
org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator$3
org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator$4
org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator$5
org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator$6
org.opendaylight.yangtools.binding.data.codec.impl
com.google.common.base
com.google.common.cache
java.lang
java.lang.reflect
java.util
javassist
org.opendaylight.yangtools.binding.data.codec.gen.spi
org.opendaylight.yangtools.binding.data.codec.util
org.opendaylight.yangtools.binding.generator.util
org.opendaylight.yangtools.sal.binding.generator.api
org.opendaylight.yangtools.sal.binding.generator.impl
org.opendaylight.yangtools.sal.binding.generator.util
org.opendaylight.yangtools.sal.binding.model.api
org.opendaylight.yangtools.util
org.opendaylight.yangtools.yang.binding
org.opendaylight.yangtools.yang.binding.util
org.opendaylight.yangtools.yang.common
org.opendaylight.yangtools.yang.model.api
org.opendaylight.yangtools.yang.model.api.type
org.slf4j

org.opendaylight.yangtools.binding.data.codec.gen.spi

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 5 50.0% 83.0% 33.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.binding.data.codec.gen.spi.AbstractSource
org.opendaylight.yangtools.binding.data.codec.gen.spi.StaticConstantDefinition
org.opendaylight.yangtools.binding.data.codec.gen.impl
com.google.common.base
com.google.common.collect
java.lang
java.util
org.opendaylight.yangtools.sal.binding.model.api

org.opendaylight.yangtools.binding.data.codec.impl

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 33 16.0% 100.0% 16.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.binding.data.codec.impl.AbstractBindingNormalizedNodeCacheHolder
org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.ForwardingBindingStreamEventWriter
org.opendaylight.yangtools.binding.data.codec.impl.NodeCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.NodeCodecContext$CodecContextFactory
org.opendaylight.yangtools.binding.data.codec.impl.NodeContextSupplier
org.opendaylight.yangtools.binding.data.codec.impl.ReflectionBasedCodec
org.opendaylight.yangtools.binding.data.codec.impl.ValueTypeCodec
org.opendaylight.yangtools.binding.data.codec.impl.ValueTypeCodec$SchemaUnawareCodec
org.opendaylight.yangtools.binding.data.codec.impl.AbstractBindingNormalizedNodeCacheHolder$1
org.opendaylight.yangtools.binding.data.codec.impl.AugmentationNodeContext
org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCache
org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry
org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$1
org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy
org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$DeserializeFunction
org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$GeneratorLoader
org.opendaylight.yangtools.binding.data.codec.impl.BindingToNormalizedStreamWriter
org.opendaylight.yangtools.binding.data.codec.impl.BitsCodec
org.opendaylight.yangtools.binding.data.codec.impl.BitsCodec$1
org.opendaylight.yangtools.binding.data.codec.impl.CachingNormalizedNodeCodec
org.opendaylight.yangtools.binding.data.codec.impl.CachingNormalizedNodeSerializer
org.opendaylight.yangtools.binding.data.codec.impl.CaseNodeCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.ChoiceNodeCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.CompositeValueCodec
org.opendaylight.yangtools.binding.data.codec.impl.ContainerNodeCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecPrototype
org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext$1
org.opendaylight.yangtools.binding.data.codec.impl.EncapsulatedValueCodec
org.opendaylight.yangtools.binding.data.codec.impl.EncapsulatedValueCodec$1
org.opendaylight.yangtools.binding.data.codec.impl.EnumerationCodec
org.opendaylight.yangtools.binding.data.codec.impl.EnumerationCodec$1
org.opendaylight.yangtools.binding.data.codec.impl.IdentifiableItemCodec
org.opendaylight.yangtools.binding.data.codec.impl.IdentifiableItemCodec$1
org.opendaylight.yangtools.binding.data.codec.impl.IdentityCodec
org.opendaylight.yangtools.binding.data.codec.impl.IncorrectNestingException
org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec
org.opendaylight.yangtools.binding.data.codec.impl.KeyedListNodeCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.LazyDataObject
org.opendaylight.yangtools.binding.data.codec.impl.LeafNodeCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.ListNodeCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.MissingClassInLoadingStrategyException
org.opendaylight.yangtools.binding.data.codec.impl.MissingSchemaException
org.opendaylight.yangtools.binding.data.codec.impl.MissingSchemaForClassException
org.opendaylight.yangtools.binding.data.codec.impl.NonCachingCodec
org.opendaylight.yangtools.binding.data.codec.impl.NormalizedNodeWriterWithAddChild
org.opendaylight.yangtools.binding.data.codec.impl.NotificationCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.SchemaRootCodecContext
org.opendaylight.yangtools.binding.data.codec.impl.SchemaRootCodecContext$1
org.opendaylight.yangtools.binding.data.codec.impl.SchemaRootCodecContext$2
org.opendaylight.yangtools.binding.data.codec.impl.SchemaRootCodecContext$3
org.opendaylight.yangtools.binding.data.codec.impl.SchemaRootCodecContext$4
org.opendaylight.yangtools.binding.data.codec.impl.SchemaRootCodecContext$5
org.opendaylight.yangtools.binding.data.codec.impl.SchemaRootCodecContext$6
org.opendaylight.yangtools.binding.data.codec.impl.UnionTypeCodec
org.opendaylight.yangtools.binding.data.codec.impl.UnionTypeCodec$1
org.opendaylight.yangtools.binding.data.codec.impl.UnionValueOptionContext
org.opendaylight.yangtools.binding.data.codec.impl.ValueContext
org.opendaylight.yangtools.binding.data.codec.impl.ValueTypeCodec$1
org.opendaylight.yangtools.binding.data.codec.impl.ValueTypeCodec$2
org.opendaylight.yangtools.binding.data.codec.impl.ValueTypeCodec$3
None com.google.common.base
com.google.common.cache
com.google.common.collect
com.google.common.io
com.google.common.util.concurrent
java.io
java.lang
java.lang.invoke
java.lang.reflect
java.util
java.util.concurrent
org.opendaylight.mdsal.binding.dom.codec.api
org.opendaylight.yangtools.binding.data.codec.api
org.opendaylight.yangtools.binding.data.codec.gen.impl
org.opendaylight.yangtools.binding.data.codec.util
org.opendaylight.yangtools.concepts
org.opendaylight.yangtools.sal.binding.generator.api
org.opendaylight.yangtools.sal.binding.generator.impl
org.opendaylight.yangtools.sal.binding.generator.util
org.opendaylight.yangtools.sal.binding.model.api
org.opendaylight.yangtools.util
org.opendaylight.yangtools.yang.binding
org.opendaylight.yangtools.yang.binding.util
org.opendaylight.yangtools.yang.common
org.opendaylight.yangtools.yang.data.api
org.opendaylight.yangtools.yang.data.api.schema
org.opendaylight.yangtools.yang.data.api.schema.stream
org.opendaylight.yangtools.yang.data.impl.codec
org.opendaylight.yangtools.yang.data.impl.schema
org.opendaylight.yangtools.yang.model.api
org.opendaylight.yangtools.yang.model.api.type
org.opendaylight.yangtools.yang.model.util
org.slf4j

org.opendaylight.yangtools.binding.data.codec.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 8 33.0% 80.0% 13.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.binding.data.codec.util.AugmentationReader
org.opendaylight.yangtools.binding.data.codec.util.AugmentableDispatchSerializer
org.opendaylight.yangtools.binding.data.codec.util.ChoiceDispatchSerializer
org.opendaylight.yangtools.binding.data.codec.gen.impl
org.opendaylight.yangtools.binding.data.codec.impl
com.google.common.base
java.io
java.lang
java.lang.reflect
java.util
org.opendaylight.yangtools.yang.binding
org.opendaylight.yangtools.yang.binding.util
org.slf4j

Cycles

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

There are no cyclic dependencies.

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.