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.nuxeo.build.ant 12 12 0 5 16 0.0% 76.0% 24.0% 1
org.nuxeo.build.ant.artifact 20 20 0 1 23 0.0% 96.0% 4.0% 1
org.nuxeo.build.ant.ftl 2 2 0 0 7 0.0% 100.0% 0.0% 1
org.nuxeo.build.ant.profile 4 4 0 2 6 0.0% 75.0% 25.0% 1
org.nuxeo.build.maven 5 5 0 5 33 0.0% 87.0% 13.0% 1
org.nuxeo.build.maven.filter 24 19 5 3 14 21.0% 82.0% 3.0% 1
org.nuxeo.build.maven.graph 7 6 1 3 27 14.0% 90.0% 4.0% 1
org.nuxeo.connect.update 1 1 0 1 4 0.0% 80.0% 20.0% 1

Packages

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

org.nuxeo.build.ant

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 16 0.0% 76.0% 24.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.nuxeo.build.ant.AntClient
org.nuxeo.build.ant.AntClient$1
org.nuxeo.build.ant.ExitTask
org.nuxeo.build.ant.ExitTask$1
org.nuxeo.build.ant.ExitTask$False
org.nuxeo.build.ant.OldVersion
org.nuxeo.build.ant.PropertyRegexp
org.nuxeo.build.ant.RemoveDuplicateTask
org.nuxeo.build.ant.RemoveDuplicateTask$Entry
org.nuxeo.build.ant.RenameTask
org.nuxeo.build.ant.Version
org.nuxeo.build.ant.ZipDiffTask
org.nuxeo.build.ant.artifact
org.nuxeo.build.ant.profile
org.nuxeo.build.maven
org.nuxeo.build.maven.filter
org.nuxeo.build.maven.graph
java.io
java.lang
java.net
java.util
java.util.regex
java.util.zip
org.apache.commons.io
org.apache.maven.plugin.logging
org.apache.tools.ant
org.apache.tools.ant.input
org.apache.tools.ant.listener
org.apache.tools.ant.taskdefs
org.apache.tools.ant.taskdefs.condition
org.apache.tools.ant.types
org.codehaus.plexus.util
org.nuxeo.connect.update

org.nuxeo.build.ant.artifact

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 23 0.0% 96.0% 4.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.nuxeo.build.ant.artifact.ArtifactDependencies
org.nuxeo.build.ant.artifact.ArtifactFile
org.nuxeo.build.ant.artifact.ArtifactForeach
org.nuxeo.build.ant.artifact.ArtifactPattern
org.nuxeo.build.ant.artifact.ArtifactSet
org.nuxeo.build.ant.artifact.ArtifactSetParser
org.nuxeo.build.ant.artifact.AttachArtifactTask
org.nuxeo.build.ant.artifact.Excludes
org.nuxeo.build.ant.artifact.Expand
org.nuxeo.build.ant.artifact.ExpandTask
org.nuxeo.build.ant.artifact.FiltersCollection
org.nuxeo.build.ant.artifact.Includes
org.nuxeo.build.ant.artifact.NuxeoExpandTask
org.nuxeo.build.ant.artifact.NuxeoExpandTask$1
org.nuxeo.build.ant.artifact.PrintDependencyManagementTask
org.nuxeo.build.ant.artifact.PrintDependencyManagementTask$1
org.nuxeo.build.ant.artifact.PrintDependencyManagementTask$FORMAT
org.nuxeo.build.ant.artifact.PrintGraphTask
org.nuxeo.build.ant.artifact.ResolveFile
org.nuxeo.build.ant.artifact.ResolveFiles
org.nuxeo.build.maven
java.io
java.lang
java.util
org.apache.commons.io
org.apache.commons.io.filefilter
org.apache.maven
org.apache.maven.artifact
org.apache.maven.project
org.apache.tools.ant
org.apache.tools.ant.taskdefs
org.apache.tools.ant.types
org.apache.tools.ant.types.resources
org.eclipse.aether
org.eclipse.aether.artifact
org.eclipse.aether.graph
org.eclipse.aether.resolution
org.eclipse.aether.util
org.eclipse.aether.util.graph.visitor
org.nuxeo.build.ant
org.nuxeo.build.ant.profile
org.nuxeo.build.maven
org.nuxeo.build.maven.filter
org.nuxeo.build.maven.graph

org.nuxeo.build.ant.ftl

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.nuxeo.build.ant.ftl.FreemarkerEngine
org.nuxeo.build.ant.ftl.ProcessTemplateTask
None freemarker.cache
freemarker.template
java.io
java.lang
java.util
org.apache.tools.ant
org.nuxeo.build.maven

org.nuxeo.build.ant.profile

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 6 0.0% 75.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.nuxeo.build.ant.profile.AntProfileManager
org.nuxeo.build.ant.profile.Profile
org.nuxeo.build.ant.profile.ProfileGroup
org.nuxeo.build.ant.profile.ProfileTask
org.nuxeo.build.ant.artifact
org.nuxeo.build.maven
java.lang
java.util
org.apache.tools.ant
org.apache.tools.ant.taskdefs
org.nuxeo.build.ant
org.nuxeo.build.maven

org.nuxeo.build.maven

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 33 0.0% 87.0% 13.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.nuxeo.build.maven.AntBuildMojo
org.nuxeo.build.maven.ArtifactDescriptor
org.nuxeo.build.maven.HelpMojo
org.nuxeo.build.maven.IntegrationTestMojo
org.nuxeo.build.maven.VerifyMojo
org.nuxeo.build.ant.artifact
org.nuxeo.build.ant.ftl
org.nuxeo.build.ant.profile
org.nuxeo.build.maven.filter
org.nuxeo.build.maven.graph
java.io
java.lang
java.util
java.util.regex
javax.xml.parsers
org.apache.maven.artifact
org.apache.maven.artifact.handler.manager
org.apache.maven.artifact.repository
org.apache.maven.model
org.apache.maven.plugin
org.apache.maven.plugin.logging
org.apache.maven.plugin.surefire
org.apache.maven.plugins.surefire.report
org.apache.maven.project
org.apache.maven.reporting
org.apache.maven.settings
org.apache.maven.surefire.suite
org.apache.tools.ant
org.apache.tools.ant.taskdefs.optional.testing
org.apache.tools.ant.types
org.codehaus.plexus.util
org.eclipse.aether
org.eclipse.aether.artifact
org.eclipse.aether.collection
org.eclipse.aether.graph
org.eclipse.aether.util.graph.selector
org.nuxeo.build.ant
org.nuxeo.build.ant.artifact
org.nuxeo.build.ant.profile
org.nuxeo.build.maven.filter
org.nuxeo.build.maven.graph
org.w3c.dom
org.xml.sax

org.nuxeo.build.maven.filter

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 14 21.0% 82.0% 3.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.nuxeo.build.maven.filter.AbstractFilter
org.nuxeo.build.maven.filter.ArtifactFilter
org.nuxeo.build.maven.filter.CompositeFilter
org.nuxeo.build.maven.filter.Filter
org.nuxeo.build.maven.filter.SegmentMatch
org.nuxeo.build.maven.filter.AncestorFilter
org.nuxeo.build.maven.filter.AndFilter
org.nuxeo.build.maven.filter.AnyFilter
org.nuxeo.build.maven.filter.ArtifactIdFilter
org.nuxeo.build.maven.filter.ClassifierFilter
org.nuxeo.build.maven.filter.ExactMatch
org.nuxeo.build.maven.filter.GroupIdFilter
org.nuxeo.build.maven.filter.IsOptionalFilter
org.nuxeo.build.maven.filter.ManifestBundleCategoryFilter
org.nuxeo.build.maven.filter.MiddleMatch
org.nuxeo.build.maven.filter.NotFilter
org.nuxeo.build.maven.filter.OrFilter
org.nuxeo.build.maven.filter.PrefixMatch
org.nuxeo.build.maven.filter.ScopeFilter
org.nuxeo.build.maven.filter.SegmentMatch$1
org.nuxeo.build.maven.filter.SuffixMatch
org.nuxeo.build.maven.filter.TrueFilter
org.nuxeo.build.maven.filter.TypeFilter
org.nuxeo.build.maven.filter.VersionFilter
org.nuxeo.build.ant.artifact
org.nuxeo.build.maven
org.nuxeo.build.maven.graph
java.io
java.lang
java.lang.reflect
java.util
java.util.jar
org.apache.maven.artifact
org.apache.maven.plugin.logging
org.apache.tools.ant
org.eclipse.aether.artifact
org.eclipse.aether.graph
org.eclipse.aether.version
org.nuxeo.build.ant
org.nuxeo.build.maven
org.nuxeo.build.maven.graph

org.nuxeo.build.maven.graph

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 27 14.0% 90.0% 4.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.nuxeo.build.maven.graph.AbstractDependencyVisitor
org.nuxeo.build.maven.graph.DependencyUtils
org.nuxeo.build.maven.graph.FlatPrinterDependencyVisitor
org.nuxeo.build.maven.graph.Graph
org.nuxeo.build.maven.graph.Node
org.nuxeo.build.maven.graph.ScopeDependencySelector
org.nuxeo.build.maven.graph.TreePrinterDependencyVisitor
org.nuxeo.build.ant.artifact
org.nuxeo.build.maven
org.nuxeo.build.maven.filter
java.io
java.lang
java.util
org.apache.maven
org.apache.maven.artifact
org.apache.maven.artifact.handler
org.apache.maven.artifact.handler.manager
org.apache.maven.artifact.repository
org.apache.maven.artifact.resolver
org.apache.maven.artifact.versioning
org.apache.maven.model
org.apache.maven.plugin.logging
org.apache.maven.project
org.apache.tools.ant
org.codehaus.plexus.util
org.eclipse.aether
org.eclipse.aether.artifact
org.eclipse.aether.collection
org.eclipse.aether.graph
org.eclipse.aether.resolution
org.eclipse.aether.util.artifact
org.eclipse.aether.util.graph.manager
org.eclipse.aether.util.graph.visitor
org.eclipse.aether.version
org.nuxeo.build.ant
org.nuxeo.build.maven
org.nuxeo.build.maven.filter

org.nuxeo.connect.update

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.nuxeo.connect.update.Version
org.nuxeo.build.ant
java.lang
java.util.regex
org.codehaus.plexus.logging
org.codehaus.plexus.logging.console

Cycles

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

Package Package Dependencies
org.nuxeo.build.ant.artifact org.nuxeo.build.maven
org.nuxeo.build.maven.filter
org.nuxeo.build.maven
org.nuxeo.build.ant.ftl org.nuxeo.build.maven
org.nuxeo.build.maven.filter
org.nuxeo.build.maven
org.nuxeo.build.ant.profile org.nuxeo.build.maven
org.nuxeo.build.maven.filter
org.nuxeo.build.maven
org.nuxeo.build.maven org.nuxeo.build.maven.filter
org.nuxeo.build.maven
org.nuxeo.build.maven.filter org.nuxeo.build.maven
org.nuxeo.build.maven.filter
org.nuxeo.build.maven.graph org.nuxeo.build.maven
org.nuxeo.build.maven.filter
org.nuxeo.build.maven

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.