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.yangtools.yang.parser.spi 10 0 10 0 2 100.0% 100.0% 100.0% 1
org.opendaylight.yangtools.yang.parser.spi.meta 44 21 23 2 11 52.0% 85.0% 37.0% 1
org.opendaylight.yangtools.yang.parser.spi.source 35 8 27 1 7 77.0% 88.0% 65.0% 1
org.opendaylight.yangtools.yang.parser.spi.validation 2 1 1 0 2 50.0% 100.0% 50.0% 1

Packages

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

org.opendaylight.yangtools.yang.parser.spi

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.opendaylight.yangtools.yang.parser.spi.ExtensionNamespace
org.opendaylight.yangtools.yang.parser.spi.FeatureNamespace
org.opendaylight.yangtools.yang.parser.spi.GroupingNamespace
org.opendaylight.yangtools.yang.parser.spi.IdentityNamespace
org.opendaylight.yangtools.yang.parser.spi.ModuleNamespace
org.opendaylight.yangtools.yang.parser.spi.NamespaceToModule
org.opendaylight.yangtools.yang.parser.spi.PreLinkageModuleNamespace
org.opendaylight.yangtools.yang.parser.spi.SchemaNodeIdentifierNamespace
org.opendaylight.yangtools.yang.parser.spi.SubmoduleNamespace
org.opendaylight.yangtools.yang.parser.spi.TypeNamespace
None None java.lang
org.opendaylight.yangtools.yang.parser.spi.meta

org.opendaylight.yangtools.yang.parser.spi.meta

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 11 52.0% 85.0% 37.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport
org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport
org.opendaylight.yangtools.yang.parser.spi.meta.DerivedIdentitiesNamespace
org.opendaylight.yangtools.yang.parser.spi.meta.DerivedNamespaceBehaviour
org.opendaylight.yangtools.yang.parser.spi.meta.ImportedNamespaceContext
org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder
org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder$InferenceAction
org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder$InferenceContext
org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder$Prerequisite
org.opendaylight.yangtools.yang.parser.spi.meta.MutableStatement
org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour
org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour$NamespaceStorageNode
org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour$Registry
org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionModuleNamespace
org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace
org.opendaylight.yangtools.yang.parser.spi.meta.StatementDefinitionNamespace
org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory
org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace
org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace$TreeBased
org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace$TreeScoped
org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport
org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext
org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext$Mutable
org.opendaylight.yangtools.yang.parser.spi.meta.CopyHistory
org.opendaylight.yangtools.yang.parser.spi.meta.CopyType
org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException
org.opendaylight.yangtools.yang.parser.spi.meta.InvalidSubstatementException
org.opendaylight.yangtools.yang.parser.spi.meta.MissingSubstatementException
org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase
org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour$StorageNodeType
org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour$StorageSpecific
org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour$TreeScoped
org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceNotAvailableException
org.opendaylight.yangtools.yang.parser.spi.meta.QNameCacheNamespace
org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException
org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException
org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupportBundle
org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupportBundle$1
org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupportBundle$Builder
org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils$1
org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator$1
org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator$Builder
org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator$Cardinality
org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator$Counter
org.opendaylight.yangtools.yang.parser.spi
org.opendaylight.yangtools.yang.parser.spi.source
com.google.common.base
com.google.common.collect
java.lang
java.util
java.util.stream
org.opendaylight.yangtools.concepts
org.opendaylight.yangtools.yang.common
org.opendaylight.yangtools.yang.model.api
org.opendaylight.yangtools.yang.model.api.meta
org.opendaylight.yangtools.yang.model.repo.api
org.opendaylight.yangtools.yang.parser.spi.source

org.opendaylight.yangtools.yang.parser.spi.source

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 7 77.0% 88.0% 65.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.yang.parser.spi.source.AnyxmlSchemaLocationNamespace
org.opendaylight.yangtools.yang.parser.spi.source.AugmentToChoiceNamespace
org.opendaylight.yangtools.yang.parser.spi.source.BelongsToModuleContext
org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleIdentifier
org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleName
org.opendaylight.yangtools.yang.parser.spi.source.DeclarationInTextSource
org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToModuleIdentifier
org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToNamespace
org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToSemVerModuleIdentifier
org.opendaylight.yangtools.yang.parser.spi.source.ImportedModuleContext
org.opendaylight.yangtools.yang.parser.spi.source.IncludedModuleContext
org.opendaylight.yangtools.yang.parser.spi.source.IncludedSubmoduleNameToIdentifier
org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleIdentifier
org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName
org.opendaylight.yangtools.yang.parser.spi.source.ModuleIdentifierToModuleQName
org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToModuleQName
org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToNamespace
org.opendaylight.yangtools.yang.parser.spi.source.ModuleNamespaceForBelongsTo
org.opendaylight.yangtools.yang.parser.spi.source.ModuleQNameToModuleName
org.opendaylight.yangtools.yang.parser.spi.source.ModulesDeviatedByModules
org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule
org.opendaylight.yangtools.yang.parser.spi.source.QNameToStatementDefinition
org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference
org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource
org.opendaylight.yangtools.yang.parser.spi.source.StatementWriter
org.opendaylight.yangtools.yang.parser.spi.source.StmtOrderingNamespace
org.opendaylight.yangtools.yang.parser.spi.source.SupportedFeaturesNamespace
org.opendaylight.yangtools.yang.parser.spi.source.DeclarationInTextSource$AtLine
org.opendaylight.yangtools.yang.parser.spi.source.DeclarationInTextSource$AtPosition
org.opendaylight.yangtools.yang.parser.spi.source.DeclarationInTextSource$InSource
org.opendaylight.yangtools.yang.parser.spi.source.ImplicitSubstatement
org.opendaylight.yangtools.yang.parser.spi.source.ModulesDeviatedByModules$SupportedModules
org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModuleMap
org.opendaylight.yangtools.yang.parser.spi.source.SourceException
org.opendaylight.yangtools.yang.parser.spi.source.SupportedFeaturesNamespace$SupportedFeatures
org.opendaylight.yangtools.yang.parser.spi.meta
java.lang
java.net
java.util
org.opendaylight.yangtools.concepts
org.opendaylight.yangtools.yang.common
org.opendaylight.yangtools.yang.model.api.meta
org.opendaylight.yangtools.yang.parser.spi.meta

org.opendaylight.yangtools.yang.parser.spi.validation

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 50.0% 100.0% 50.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace
org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace$ValidationBundleType
None java.lang
org.opendaylight.yangtools.yang.model.api.meta

Cycles

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

Package Package Dependencies
org.opendaylight.yangtools.yang.parser.spi org.opendaylight.yangtools.yang.parser.spi.meta
org.opendaylight.yangtools.yang.parser.spi.source
org.opendaylight.yangtools.yang.parser.spi.meta
org.opendaylight.yangtools.yang.parser.spi.meta org.opendaylight.yangtools.yang.parser.spi.source
org.opendaylight.yangtools.yang.parser.spi.meta
org.opendaylight.yangtools.yang.parser.spi.source org.opendaylight.yangtools.yang.parser.spi.meta
org.opendaylight.yangtools.yang.parser.spi.source

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.