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.model.api 46 7 39 2 10 85.0% 83.0% 68.0% 1
org.opendaylight.yangtools.yang.model.api.meta 6 1 5 2 4 83.0% 67.0% 50.0% 1
org.opendaylight.yangtools.yang.model.api.stmt 102 4 98 1 12 96.0% 92.0% 88.0% 1
org.opendaylight.yangtools.yang.model.api.type 20 0 20 1 4 100.0% 80.0% 80.0% 1
org.opendaylight.yangtools.yang.model.repo.api 22 11 11 1 13 50.0% 93.0% 43.0% 1
org.opendaylight.yangtools.yang.model.repo.spi 7 2 5 0 7 71.0% 100.0% 71.0% 1

Packages

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

org.opendaylight.yangtools.yang.model.api

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 10 85.0% 83.0% 68.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode
org.opendaylight.yangtools.yang.model.api.AugmentationSchema
org.opendaylight.yangtools.yang.model.api.AugmentationTarget
org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode
org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode
org.opendaylight.yangtools.yang.model.api.ConstraintDefinition
org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition
org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode
org.opendaylight.yangtools.yang.model.api.DataNodeContainer
org.opendaylight.yangtools.yang.model.api.DataSchemaNode
org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode
org.opendaylight.yangtools.yang.model.api.Deviation
org.opendaylight.yangtools.yang.model.api.DocumentedNode
org.opendaylight.yangtools.yang.model.api.ExtensionDefinition
org.opendaylight.yangtools.yang.model.api.FeatureDefinition
org.opendaylight.yangtools.yang.model.api.GroupingDefinition
org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode
org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode
org.opendaylight.yangtools.yang.model.api.LeafSchemaNode
org.opendaylight.yangtools.yang.model.api.ListSchemaNode
org.opendaylight.yangtools.yang.model.api.Module
org.opendaylight.yangtools.yang.model.api.ModuleIdentifier
org.opendaylight.yangtools.yang.model.api.ModuleImport
org.opendaylight.yangtools.yang.model.api.MustDefinition
org.opendaylight.yangtools.yang.model.api.NamespaceRevisionAware
org.opendaylight.yangtools.yang.model.api.NotificationDefinition
org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath
org.opendaylight.yangtools.yang.model.api.RpcDefinition
org.opendaylight.yangtools.yang.model.api.SchemaContext
org.opendaylight.yangtools.yang.model.api.SchemaContextHolder
org.opendaylight.yangtools.yang.model.api.SchemaContextListener
org.opendaylight.yangtools.yang.model.api.SchemaContextProvider
org.opendaylight.yangtools.yang.model.api.SchemaNode
org.opendaylight.yangtools.yang.model.api.SchemaPath
org.opendaylight.yangtools.yang.model.api.SourceStreamAware
org.opendaylight.yangtools.yang.model.api.TypeDefinition
org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode
org.opendaylight.yangtools.yang.model.api.UsesNode
org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode
org.opendaylight.yangtools.yang.model.api.Deviation$Deviate
org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping
org.opendaylight.yangtools.yang.model.api.SchemaPath$1
org.opendaylight.yangtools.yang.model.api.SchemaPath$1$1
org.opendaylight.yangtools.yang.model.api.SchemaPath$AbsoluteSchemaPath
org.opendaylight.yangtools.yang.model.api.SchemaPath$RelativeSchemaPath
org.opendaylight.yangtools.yang.model.api.Status
org.opendaylight.yangtools.yang.model.api.stmt
org.opendaylight.yangtools.yang.model.api.type
com.google.common.base
com.google.common.collect
java.lang
java.net
java.util
java.util.concurrent.atomic
org.opendaylight.yangtools.concepts
org.opendaylight.yangtools.yang.common
org.opendaylight.yangtools.yang.model.api.meta
org.opendaylight.yangtools.yang.model.api.stmt

org.opendaylight.yangtools.yang.model.api.meta

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 4 83.0% 67.0% 50.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement
org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement
org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace
org.opendaylight.yangtools.yang.model.api.meta.ModelStatement
org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition
org.opendaylight.yangtools.yang.model.api.meta.StatementSource
org.opendaylight.yangtools.yang.model.api
org.opendaylight.yangtools.yang.model.api.stmt
java.lang
java.util
org.opendaylight.yangtools.concepts
org.opendaylight.yangtools.yang.common

org.opendaylight.yangtools.yang.model.api.stmt

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 12 96.0% 92.0% 88.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement
org.opendaylight.yangtools.yang.model.api.stmt.ArgumentStatement
org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement
org.opendaylight.yangtools.yang.model.api.stmt.BaseStatement
org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement
org.opendaylight.yangtools.yang.model.api.stmt.BitStatement
org.opendaylight.yangtools.yang.model.api.stmt.BodyGroup
org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement
org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement
org.opendaylight.yangtools.yang.model.api.stmt.ConditionalDataDefinition
org.opendaylight.yangtools.yang.model.api.stmt.ConditionalFeature
org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement
org.opendaylight.yangtools.yang.model.api.stmt.ContactStatement
org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement
org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionContainer
org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionContainer$WithReusableDefinitions
org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionStatement
org.opendaylight.yangtools.yang.model.api.stmt.DefaultStatement
org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement
org.opendaylight.yangtools.yang.model.api.stmt.DeviateStatement
org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement
org.opendaylight.yangtools.yang.model.api.stmt.DocumentationGroup
org.opendaylight.yangtools.yang.model.api.stmt.DocumentationGroup$WithStatus
org.opendaylight.yangtools.yang.model.api.stmt.DocumentedConstraintGroup
org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement
org.opendaylight.yangtools.yang.model.api.stmt.ErrorAppTagStatement
org.opendaylight.yangtools.yang.model.api.stmt.ErrorMessageStatement
org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement
org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement
org.opendaylight.yangtools.yang.model.api.stmt.FractionDigitsStatement
org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement
org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement
org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement
org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement
org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement
org.opendaylight.yangtools.yang.model.api.stmt.InputStatement
org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement
org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement
org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement
org.opendaylight.yangtools.yang.model.api.stmt.LengthStatement
org.opendaylight.yangtools.yang.model.api.stmt.LinkageGroup
org.opendaylight.yangtools.yang.model.api.stmt.ListStatement
org.opendaylight.yangtools.yang.model.api.stmt.MandatoryStatement
org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement
org.opendaylight.yangtools.yang.model.api.stmt.MetaGroup
org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement
org.opendaylight.yangtools.yang.model.api.stmt.ModuleHeaderGroup
org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement
org.opendaylight.yangtools.yang.model.api.stmt.MultipleElementsGroup
org.opendaylight.yangtools.yang.model.api.stmt.MustStatement
org.opendaylight.yangtools.yang.model.api.stmt.NamespaceStatement
org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement
org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement
org.opendaylight.yangtools.yang.model.api.stmt.OrganizationStatement
org.opendaylight.yangtools.yang.model.api.stmt.OutputStatement
org.opendaylight.yangtools.yang.model.api.stmt.PathStatement
org.opendaylight.yangtools.yang.model.api.stmt.PatternStatement
org.opendaylight.yangtools.yang.model.api.stmt.PositionStatement
org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement
org.opendaylight.yangtools.yang.model.api.stmt.PresenceStatement
org.opendaylight.yangtools.yang.model.api.stmt.RangeStatement
org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement
org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement
org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement$RefineContainerStatement
org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement$RefineLeafStatement
org.opendaylight.yangtools.yang.model.api.stmt.RequireInstanceStatement
org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement
org.opendaylight.yangtools.yang.model.api.stmt.RevisionGroup
org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement
org.opendaylight.yangtools.yang.model.api.stmt.Rfc6020AbnfRule
org.opendaylight.yangtools.yang.model.api.stmt.RpcStatement
org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier
org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement
org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement
org.opendaylight.yangtools.yang.model.api.stmt.TypeDefinitionAware
org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement
org.opendaylight.yangtools.yang.model.api.stmt.TypeGroup
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$BinarySpecification
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$BitsSpecification
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$Decimal64Specification
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$EnumSpecification
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$IdentityRefSpecification
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$InstanceIdentifierSpecification
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$LeafrefSpecification
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$NumericalRestrictions
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$StringRestrictions
org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement$UnionSpecification
org.opendaylight.yangtools.yang.model.api.stmt.TypedefEffectiveStatement
org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement
org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement
org.opendaylight.yangtools.yang.model.api.stmt.UnitsStatement
org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement
org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement
org.opendaylight.yangtools.yang.model.api.stmt.ValueStatement
org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement
org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement
org.opendaylight.yangtools.yang.model.api.stmt.YinElementStatement
org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier$1
org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier$1$1
org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier$Absolute
org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier$Relative
org.opendaylight.yangtools.yang.model.api
com.google.common.base
com.google.common.collect
java.lang
java.lang.annotation
java.net
java.util
java.util.concurrent.atomic
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.api.type

org.opendaylight.yangtools.yang.model.api.type

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 4 100.0% 80.0% 80.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition$Bit
org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition$EnumPair
org.opendaylight.yangtools.yang.model.api.type.IdentityTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.LengthConstraint
org.opendaylight.yangtools.yang.model.api.type.PatternConstraint
org.opendaylight.yangtools.yang.model.api.type.RangeConstraint
org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition
org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition
None org.opendaylight.yangtools.yang.model.api.stmt
java.lang
java.util
org.opendaylight.yangtools.yang.common
org.opendaylight.yangtools.yang.model.api

org.opendaylight.yangtools.yang.model.repo.api

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 13 50.0% 93.0% 43.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactory
org.opendaylight.yangtools.yang.model.repo.api.SchemaRepository
org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter
org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation
org.opendaylight.yangtools.yang.model.repo.api.YangSchemaSourceRepresentation
org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource
org.opendaylight.yangtools.yang.model.repo.api.YinDomSchemaSource
org.opendaylight.yangtools.yang.model.repo.api.YinSchemaSource
org.opendaylight.yangtools.yang.model.repo.api.YinSchemaSourceRepresentation
org.opendaylight.yangtools.yang.model.repo.api.YinTextSchemaSource
org.opendaylight.yangtools.yang.model.repo.api.YinXmlSchemaSource
org.opendaylight.yangtools.yang.model.repo.api.MissingSchemaSourceException
org.opendaylight.yangtools.yang.model.repo.api.SchemaResolutionException
org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException
org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter$1
org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier
org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource$1
org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource$DelegatedYangTextSchemaSource
org.opendaylight.yangtools.yang.model.repo.api.YinDomSchemaSource$Simple
org.opendaylight.yangtools.yang.model.repo.api.YinDomSchemaSource$Transforming
org.opendaylight.yangtools.yang.model.repo.api.YinTextSchemaSource$1
org.opendaylight.yangtools.yang.model.repo.api.YinTextSchemaSource$DelegatedYinTextSchemaSource
org.opendaylight.yangtools.yang.model.repo.spi
com.google.common.base
com.google.common.collect
com.google.common.io
com.google.common.util.concurrent
java.io
java.lang
java.util
java.util.regex
javax.xml.transform
javax.xml.transform.dom
org.opendaylight.yangtools.concepts
org.opendaylight.yangtools.objcache
org.w3c.dom

org.opendaylight.yangtools.yang.model.repo.spi

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 71.0% 100.0% 71.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.yangtools.yang.model.repo.spi.SchemaListenerRegistration
org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceListener
org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider
org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceRegistration
org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceRegistry
org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource
org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource$Costs
None com.google.common.base
com.google.common.util.concurrent
java.lang
java.util
org.opendaylight.yangtools.concepts
org.opendaylight.yangtools.objcache
org.opendaylight.yangtools.yang.model.repo.api

Cycles

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

Package Package Dependencies
org.opendaylight.yangtools.yang.model.api org.opendaylight.yangtools.yang.model.api.stmt
org.opendaylight.yangtools.yang.model.api
org.opendaylight.yangtools.yang.model.api.stmt org.opendaylight.yangtools.yang.model.api
org.opendaylight.yangtools.yang.model.api.stmt
org.opendaylight.yangtools.yang.model.api.type org.opendaylight.yangtools.yang.model.api
org.opendaylight.yangtools.yang.model.api.stmt
org.opendaylight.yangtools.yang.model.api

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.