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 Total

Classes
Abstract

Classes
Concrete

Classes
Afferent

Couplings
Efferent

Couplings
Abstractness Instability Distance
net.sourceforge.pmd 16 4 12 9 7 25% 44% 31%
net.sourceforge.pmd.ant 2 0 2 0 4 0% 100% 0%
net.sourceforge.pmd.ast 101 5 96 11 1 5% 8% 87%
net.sourceforge.pmd.cpd 29 4 25 1 6 14% 86% 0%
net.sourceforge.pmd.cpd.cppast 11 1 10 1 0 9% 0% 91%
net.sourceforge.pmd.jaxen 4 1 3 3 4 25% 57% 18%
net.sourceforge.pmd.quickfix 1 1 0 0 0 100% 0% 0%
net.sourceforge.pmd.renderers 9 1 8 2 2 11% 50% 39%
net.sourceforge.pmd.rules 32 0 32 0 6 0% 100% 0%
net.sourceforge.pmd.rules.design 11 0 11 1 3 0% 75% 25%
net.sourceforge.pmd.rules.junit 1 0 1 0 2 0% 100% 0%
net.sourceforge.pmd.rules.strictexception 3 0 3 0 2 0% 100% 0%
net.sourceforge.pmd.stat 3 1 2 2 1 33% 33% 33%
net.sourceforge.pmd.symboltable 27 7 20 3 2 26% 40% 34%
net.sourceforge.pmd.util 5 1 4 4 1 20% 20% 60%
net.sourceforge.pmd.util.viewer 1 0 1 0 1 0% 100% 0%
net.sourceforge.pmd.util.viewer.gui 7 1 6 1 3 14% 75% 11%
net.sourceforge.pmd.util.viewer.gui.menu 4 0 4 0 4 0% 100% 0%
net.sourceforge.pmd.util.viewer.model 6 1 5 2 3 17% 60% 23%
net.sourceforge.pmd.util.viewer.util 1 0 1 2 0 0% 0% 100%
org.apache.tools.ant No stats available: package referenced, but not analyzed.
org.apache.tools.ant.types No stats available: package referenced, but not analyzed.
org.jaxen No stats available: package referenced, but not analyzed.
org.jaxen.util No stats available: package referenced, but not analyzed.
org.saxpath No stats available: package referenced, but not analyzed.
org.w3c.dom No stats available: package referenced, but not analyzed.

Packages

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

net.sourceforge.pmd.ant

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 4 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None Formatter

PMDTask

None net.sourceforge.pmd

net.sourceforge.pmd.renderers

org.apache.tools.ant

org.apache.tools.ant.types

net.sourceforge.pmd.ast

Afferent Couplings Efferent Couplings Abstractness Instability Distance
11 1 5% 8% 87%
Abstract Classes Concrete Classes Used by Packages Uses Packages
AccessFlags

JavaParserConstants

JavaParserTreeConstants

JavaParserVisitor

Node

ASTAdditiveExpression

ASTAllocationExpression

ASTAndExpression

ASTArgumentList

ASTArguments

ASTArrayDimsAndInits

ASTArrayInitializer

ASTAssertStatement

ASTAssignmentOperator

ASTBlock

ASTBlockStatement

ASTBooleanLiteral

ASTBreakStatement

ASTCastExpression

ASTCastLookahead

ASTCatch

ASTClassBody

ASTClassBodyDeclaration

ASTClassDeclaration

ASTCompilationUnit

ASTConditionalAndExpression

ASTConditionalExpression

ASTConditionalOrExpression

ASTConstructorDeclaration

ASTContinueStatement

ASTDoStatement

ASTEmptyStatement

ASTEqualityExpression

ASTExclusiveOrExpression

ASTExplicitConstructorInvocation

ASTExpression

ASTFieldDeclaration

ASTForInit

ASTForStatement

ASTForUpdate

ASTFormalParameter

ASTFormalParameters

ASTIfStatement

ASTImportDeclaration

ASTInclusiveOrExpression

ASTInitializer

ASTInstanceOfExpression

ASTInterfaceDeclaration

ASTInterfaceMemberDeclaration

ASTLabeledStatement

ASTLiteral

ASTLocalVariableDeclaration

ASTMethodDeclaration

ASTMethodDeclarationLookahead

ASTMethodDeclarator

ASTMultiplicativeExpression

ASTName

ASTNameList

ASTNestedClassDeclaration

ASTNestedInterfaceDeclaration

ASTNullLiteral

ASTPackageDeclaration

ASTPostfixExpression

ASTPreDecrementExpression

ASTPreIncrementExpression

ASTPrimaryExpression

ASTPrimaryPrefix

ASTPrimarySuffix

ASTPrimitiveType

ASTRelationalExpression

ASTResultType

ASTReturnStatement

ASTShiftExpression

ASTStatement

ASTStatementExpression

ASTStatementExpressionList

ASTSwitchLabel

ASTSwitchStatement

ASTSynchronizedStatement

ASTThrowStatement

ASTTryStatement

ASTType

ASTTypeDeclaration

ASTUnaryExpression

ASTUnaryExpressionNotPlusMinus

ASTUnmodifiedClassDeclaration

ASTUnmodifiedInterfaceDeclaration

ASTVariableDeclarator

ASTVariableDeclaratorId

ASTVariableInitializer

ASTWhileStatement

AccessNode

JJTJavaParserState

JavaCharStream

JavaParser

JavaParserTokenManager

JavaParserVisitorAdapter

ParseException

SimpleNode

Token

TokenMgrError

net.sourceforge.pmd

net.sourceforge.pmd.cpd

net.sourceforge.pmd.jaxen

net.sourceforge.pmd.rules

net.sourceforge.pmd.rules.design

net.sourceforge.pmd.rules.junit

net.sourceforge.pmd.rules.strictexception

net.sourceforge.pmd.symboltable

net.sourceforge.pmd.util.viewer.gui

net.sourceforge.pmd.util.viewer.gui.menu

net.sourceforge.pmd.util.viewer.model

net.sourceforge.pmd.symboltable

net.sourceforge.pmd.cpd.cppast

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 0 9% 0% 91%
Abstract Classes Concrete Classes Used by Packages Uses Packages
CPPParserConstants

CPPParser

CPPParserTokenManager

ClassScope

Declaration

ParseException

Scope

SimpleCharStream

SymtabManager

Token

TokenMgrError

net.sourceforge.pmd.cpd

None

net.sourceforge.pmd.jaxen

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 4 25% 57% 18%
Abstract Classes Concrete Classes Used by Packages Uses Packages
NodeIterator

Attribute

AttributeAxisIterator

DocumentNavigator

net.sourceforge.pmd.rules

net.sourceforge.pmd.util.viewer.gui.menu

net.sourceforge.pmd.util.viewer.model

net.sourceforge.pmd.ast

org.jaxen

org.jaxen.util

org.saxpath

net.sourceforge.pmd.quickfix

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 0 100% 0% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
Fix

None None None

net.sourceforge.pmd.renderers

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 2 11% 50% 39%
Abstract Classes Concrete Classes Used by Packages Uses Packages
Renderer

CSVRenderer

EmacsRenderer

HTMLRenderer

IDEAJRenderer

TextPadRenderer

TextRenderer

VBHTMLRenderer

XMLRenderer

net.sourceforge.pmd

net.sourceforge.pmd.ant

net.sourceforge.pmd

net.sourceforge.pmd.util

net.sourceforge.pmd.rules.junit

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None JUnitAssertionsShouldIncludeMessageRule

None net.sourceforge.pmd

net.sourceforge.pmd.ast

net.sourceforge.pmd.rules.strictexception

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None AvoidCatchingThrowable

ExceptionSignatureDeclaration

ExceptionTypeChecking

None net.sourceforge.pmd

net.sourceforge.pmd.ast

net.sourceforge.pmd.stat

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 1 33% 33% 33%
Abstract Classes Concrete Classes Used by Packages Uses Packages
StatisticalRule

DataPoint

Metric

net.sourceforge.pmd

net.sourceforge.pmd.rules.design

net.sourceforge.pmd

net.sourceforge.pmd.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 1 20% 20% 60%
Abstract Classes Concrete Classes Used by Packages Uses Packages
UnaryFunction

ASTViewer

Applier

ResourceLoader

StringUtil

net.sourceforge.pmd

net.sourceforge.pmd.cpd

net.sourceforge.pmd.renderers

net.sourceforge.pmd.symboltable

net.sourceforge.pmd

net.sourceforge.pmd.util.viewer

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 1 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None Viewer

None net.sourceforge.pmd.util.viewer.gui

net.sourceforge.pmd.util.viewer.gui.menu

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 4 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None ASTNodePopupMenu

AttributesSubMenu

SimpleNodeSubMenu

XPathFragmentAddingItem

None net.sourceforge.pmd.ast

net.sourceforge.pmd.jaxen

net.sourceforge.pmd.util.viewer.model

net.sourceforge.pmd.util.viewer.util

net.sourceforge.pmd.util.viewer.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 0 0% 0% 100%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None NLS

net.sourceforge.pmd.util.viewer.gui

net.sourceforge.pmd.util.viewer.gui.menu

None

Cycles

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

Package Cyclic Dependencies
net.sourceforge.pmd net.sourceforge.pmd.stat

net.sourceforge.pmd

net.sourceforge.pmd.ant net.sourceforge.pmd.renderers

net.sourceforge.pmd

net.sourceforge.pmd.stat

net.sourceforge.pmd

net.sourceforge.pmd.ast net.sourceforge.pmd.symboltable

net.sourceforge.pmd.ast

net.sourceforge.pmd.cpd net.sourceforge.pmd

net.sourceforge.pmd.stat

net.sourceforge.pmd

net.sourceforge.pmd.jaxen net.sourceforge.pmd.ast

net.sourceforge.pmd.symboltable

net.sourceforge.pmd.ast

net.sourceforge.pmd.renderers net.sourceforge.pmd

net.sourceforge.pmd.stat

net.sourceforge.pmd

net.sourceforge.pmd.rules net.sourceforge.pmd

net.sourceforge.pmd.stat

net.sourceforge.pmd

net.sourceforge.pmd.rules.design net.sourceforge.pmd.stat

net.sourceforge.pmd

net.sourceforge.pmd.stat

net.sourceforge.pmd.rules.junit net.sourceforge.pmd

net.sourceforge.pmd.stat

net.sourceforge.pmd

net.sourceforge.pmd.rules.strictexception net.sourceforge.pmd

net.sourceforge.pmd.stat

net.sourceforge.pmd

net.sourceforge.pmd.stat net.sourceforge.pmd

net.sourceforge.pmd.stat

net.sourceforge.pmd.symboltable net.sourceforge.pmd.ast

net.sourceforge.pmd.symboltable

net.sourceforge.pmd.util net.sourceforge.pmd

net.sourceforge.pmd.stat

net.sourceforge.pmd

net.sourceforge.pmd.util.viewer net.sourceforge.pmd.util.viewer.gui

net.sourceforge.pmd.ast

net.sourceforge.pmd.symboltable

net.sourceforge.pmd.ast

net.sourceforge.pmd.util.viewer.gui net.sourceforge.pmd.ast

net.sourceforge.pmd.symboltable

net.sourceforge.pmd.ast

net.sourceforge.pmd.util.viewer.gui.menu net.sourceforge.pmd.ast

net.sourceforge.pmd.symboltable

net.sourceforge.pmd.ast

net.sourceforge.pmd.util.viewer.model net.sourceforge.pmd.jaxen

net.sourceforge.pmd.ast

net.sourceforge.pmd.symboltable

net.sourceforge.pmd.ast

Explanations

[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.