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 ]

PackageTCCCACCaCeAIDV
cppast80755636.0%33.0%60.000004%1
cppncss1410401229.0%100.0%29.0%1
cppncss.counter131032323.0%60.000004%17.0%1
cppncss.measure10641440.0%80.0%20.0%1
cppstyle110060.0%100.0%0.0%1
cppstyle.checks110120.0%67.0%33.0%1
cpptools11834627.000002%60.000004%13.0%1
cpptools.preprocessor6331450.0%80.0%30.000002%1

Packages

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

cppast

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
636.0%33.0%60.000004%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
cppast.Node
cppast.ParserConstants
cppast.ParserTreeConstants
cppast.ParserVisitor
cppast.SimpleNode
cppast.AbstractVisitor
cppast.AstAdditiveExpression
cppast.AstAndExpression
cppast.AstAssignmentExpression
cppast.AstBreakStatement
cppast.AstCaseStatement
cppast.AstCastExpression
cppast.AstCatchBlock
cppast.AstClassDeclaration
cppast.AstClassDefinition
cppast.AstConditionalExpression
cppast.AstConstantExpression
cppast.AstConstructorDeclaration
cppast.AstConstructorDefinition
cppast.AstConstructorInitializer
cppast.AstContinueStatement
cppast.AstDeclaration
cppast.AstDeclarationStatement
cppast.AstDefaultStatement
cppast.AstDeleteExpression
cppast.AstDestructorDeclaration
cppast.AstDestructorDefinition
cppast.AstElseStatement
cppast.AstEnumSpecifier
cppast.AstEqualityExpression
cppast.AstExclusiveOrExpression
cppast.AstExpressionStatement
cppast.AstFunctionBody
cppast.AstFunctionCallExpression
cppast.AstFunctionDeclaration
cppast.AstFunctionDefinition
cppast.AstFunctionName
cppast.AstFunctionParameters
cppast.AstFunctionPointerPostfix
cppast.AstGotoStatement
cppast.AstIdExpression
cppast.AstIfStatement
cppast.AstInclusiveOrExpression
cppast.AstIterationStatement
cppast.AstLabelStatement
cppast.AstLogicalAndExpression
cppast.AstLogicalOrExpression
cppast.AstMemberDeclaration
cppast.AstMultiplicativeExpression
cppast.AstNamespaceAliasDefinition
cppast.AstNamespaceDefinition
cppast.AstNewExpression
cppast.AstParameter
cppast.AstParameterType
cppast.AstParameterTypeQualifier
cppast.AstPointerToMemberExpression
cppast.AstPostfixExpression
cppast.AstPrimaryExpression
cppast.AstRelationalExpression
cppast.AstReturnStatement
cppast.AstShiftExpression
cppast.AstSwitchStatement
cppast.AstThrowExpression
cppast.AstTranslationUnit
cppast.AstTryBlock
cppast.AstTypeIdExpression
cppast.AstUnaryExpression
cppast.JJTParserState
cppast.JavaCharStream
cppast.ParseException
cppast.Parser
cppast.Parser$1
cppast.Parser$JJCalls
cppast.Parser$LookaheadSuccess
cppast.ParserTokenManager
cppast.Scope
cppast.SymbolTable
cppast.Token
cppast.TokenMgrError
cppast.VisitorComposite
cppncss
cppncss.counter
cppstyle
cppstyle.checks
cpptools
cpptools.preprocessor
java.io
java.lang
java.util

cppncss

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
01229.0%100.0%29.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
cppncss.AbstractResultOutput
cppncss.CppNcss$VisitorFactory
cppncss.CppNcssTask$Argument
cppncss.ResultOutput
cppncss.AsciiResultOutput
cppncss.CppNcss
cppncss.CppNcss$1
cppncss.CppNcss$2
cppncss.CppNcssTask
cppncss.CppNcssTask$Define
cppncss.CppNcssTask$Macro
cppncss.CppNcssTask$Symbol
cppncss.ResultOutputAdapter
cppncss.XmlResultOutput
Nonecppast
cppncss.counter
cppncss.measure
cpptools
java.io
java.lang
java.util
org.apache.tools.ant
org.apache.tools.ant.taskdefs
org.apache.tools.ant.types
org.dom4j
org.dom4j.io

cppncss.counter

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
2323.0%60.000004%17.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
cppncss.counter.Counter
cppncss.counter.CounterObserver
cppncss.counter.FunctionNameExtractor$Filter
cppncss.counter.AbstractCounter
cppncss.counter.CcnCounter
cppncss.counter.FileVisitor
cppncss.counter.FunctionCounter
cppncss.counter.FunctionNameExtractor
cppncss.counter.FunctionNameExtractor$1
cppncss.counter.FunctionNameExtractor$2
cppncss.counter.FunctionNameExtractor$3
cppncss.counter.FunctionVisitor
cppncss.counter.NcssCounter
cppncss
cppncss.measure
cppast
cpptools
java.lang

cppncss.measure

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
1440.0%80.0%20.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
cppncss.measure.AverageObserver
cppncss.measure.Collector
cppncss.measure.MeasureObserver
cppncss.measure.SumObserver
cppncss.measure.Average
cppncss.measure.AverageCollector
cppncss.measure.Measure
cppncss.measure.MeasureCollector
cppncss.measure.Sum
cppncss.measure.SumCollector
cppncss
cppncss.counter
cpptools
java.lang
java.util

cppstyle

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
060.0%100.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonecppstyle.CppStyle
Nonecppast
cppstyle.checks
cpptools
java.io
java.lang
java.util

cppstyle.checks

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
120.0%67.0%33.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonecppstyle.checks.FileHeaderCheck
cppstyle
cppast
java.io

cpptools

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
4627.000002%60.000004%13.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
cpptools.AbstractLogger
cpptools.EventHandler
cpptools.FileObserver
cpptools.Analyzer
cpptools.Analyzer$1
cpptools.Analyzer$2
cpptools.AntLogger
cpptools.ConsoleLogger
cpptools.FileObserverComposite
cpptools.Options
cpptools.Usage
cppncss
cppncss.counter
cppncss.measure
cppstyle
cppast
cpptools.preprocessor
java.io
java.lang
java.util
org.apache.tools.ant

cpptools.preprocessor

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
1450.0%80.0%30.000002%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
cpptools.preprocessor.AbstractTokenFilter
cpptools.preprocessor.TokenFilter
cpptools.preprocessor.TokenProvider
cpptools.preprocessor.Define
cpptools.preprocessor.Macro
cpptools.preprocessor.PreProcessor
cpptools
cppast
java.io
java.lang
java.util

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.

TermDescription
Number of ClassesThe number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.
Afferent CouplingsThe number of other packages that depend upon classes within the package is an indicator of the package's responsibility.
Efferent CouplingsThe number of other packages that the classes in the package depend upon is an indicator of the package's independence.
AbstractnessThe 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.
InstabilityThe 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.
DistanceThe 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.
CyclesPackages 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.