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
org.apache.bcel 3 3 0 6 4 1 40% 40%
org.apache.bcel.classfile 48 10 38 6 8 0,21 57% 22%
org.apache.bcel.generic 216 44 172 5 7 0,2 58% 21%
org.apache.bcel.util 19 1 18 3 9 0,05 75% 20%
org.apache.bcel.verifier 11 3 8 2 12 0,27 86% 13%
org.apache.bcel.verifier.exc 14 4 10 2 2 0,29 50% 21%
org.apache.bcel.verifier.statics 9 0 9 1 7 0 88% 12%
org.apache.bcel.verifier.structurals 14 2 12 1 9 0,14 90% 4%

Packages

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

org.apache.bcel.generic

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 7 20% 58% 21%
Abstract Classes Concrete Classes Used by Packages Uses Packages
AllocationInstruction

ArithmeticInstruction

ArrayInstruction

BranchInstruction

CPInstruction

ClassObserver

CompoundInstruction

ConstantPushInstruction

ConversionInstruction

EmptyVisitor

ExceptionThrower

FieldGenOrMethodGen

FieldInstruction

FieldObserver

FieldOrMethod

GotoInstruction

IfInstruction

IndexedInstruction

Instruction

InstructionComparator

InstructionConstants

InstructionListObserver

InstructionTargeter

InvokeInstruction

JsrInstruction

LoadClass

LoadInstruction

LocalVariableInstruction

MethodObserver

NamedAndTyped

PopInstruction

PushInstruction

ReferenceType

ReturnInstruction

Select

StackConsumer

StackInstruction

StackProducer

StoreInstruction

Type

TypedInstruction

UnconditionalBranch

VariableLengthInstruction

Visitor

AALOAD

AASTORE

ACONST_NULL

ALOAD

ANEWARRAY

ARETURN

ARRAYLENGTH

ASTORE

ATHROW

ArrayType

BALOAD

BASTORE

BIPUSH

BREAKPOINT

BasicType

BranchHandle

CALOAD

CASTORE

CHECKCAST

ClassGen

ClassGenException

CodeExceptionGen

ConstantPoolGen

D2F

D2I

D2L

DADD

DALOAD

DASTORE

DCMPG

DCMPL

DCONST

DDIV

DLOAD

DMUL

DNEG

DREM

DRETURN

DSTORE

DSUB

DUP

DUP2

DUP2_X1

DUP2_X2

DUP_X1

DUP_X2

F2D

F2I

F2L

FADD

FALOAD

FASTORE

FCMPG

FCMPL

FCONST

FDIV

FLOAD

FMUL

FNEG

FREM

FRETURN

FSTORE

FSUB

FieldGen

GETFIELD

GETSTATIC

GOTO

GOTO_W

I2B

I2C

I2D

I2F

I2L

I2S

IADD

IALOAD

IAND

IASTORE

ICONST

IDIV

IFEQ

IFGE

IFGT

IFLE

IFLT

IFNE

IFNONNULL

IFNULL

IF_ACMPEQ

IF_ACMPNE

IF_ICMPEQ

IF_ICMPGE

IF_ICMPGT

IF_ICMPLE

IF_ICMPLT

IF_ICMPNE

IINC

ILOAD

IMPDEP1

IMPDEP2

IMUL

INEG

INSTANCEOF

INVOKEINTERFACE

INVOKESPECIAL

INVOKESTATIC

INVOKEVIRTUAL

IOR

IREM

IRETURN

ISHL

ISHR

ISTORE

ISUB

IUSHR

IXOR

InstructionFactory

InstructionHandle

InstructionList

JSR

JSR_W

L2D

L2F

L2I

LADD

LALOAD

LAND

LASTORE

LCMP

LCONST

LDC

LDC2_W

LDC_W

LDIV

LLOAD

LMUL

LNEG

LOOKUPSWITCH

LOR

LREM

LRETURN

LSHL

LSHR

LSTORE

LSUB

LUSHR

LXOR

LineNumberGen

LocalVariableGen

MONITORENTER

MONITOREXIT

MULTIANEWARRAY

MethodGen

NEW

NEWARRAY

NOP

ObjectType

POP

POP2

PUSH

PUTFIELD

PUTSTATIC

RET

RETURN

ReturnaddressType

SALOAD

SASTORE

SIPUSH

SWAP

SWITCH

TABLESWITCH

TargetLostException

org.apache.bcel.classfile

org.apache.bcel.util

org.apache.bcel.verifier

org.apache.bcel.verifier.statics

org.apache.bcel.verifier.structurals

java.io

java.lang

java.lang.reflect

java.util

org.apache.bcel

org.apache.bcel.classfile

org.apache.bcel.util

Cycles

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

Package Cyclic Dependencies
org.apache.bcel org.apache.bcel.classfile

org.apache.bcel

org.apache.bcel.classfile org.apache.bcel

org.apache.bcel.classfile

org.apache.bcel.generic org.apache.bcel

org.apache.bcel.classfile

org.apache.bcel

org.apache.bcel.util org.apache.bcel

org.apache.bcel.classfile

org.apache.bcel

org.apache.bcel.verifier org.apache.bcel.generic

org.apache.bcel

org.apache.bcel.classfile

org.apache.bcel

org.apache.bcel.verifier.statics org.apache.bcel.generic

org.apache.bcel

org.apache.bcel.classfile

org.apache.bcel

org.apache.bcel.verifier.structurals org.apache.bcel.generic

org.apache.bcel

org.apache.bcel.classfile

org.apache.bcel

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.