BCEL - JDepend Source Code Analysis

BCEL Front Page News and Status Distributions Documentation Manual FAQ Get Involved Projects Project Documentation Front Page Project Info Project Reports Task List Change Log Developer Activity File Activity Metric Results Checkstyle Report Javadoc Report JavaDocs Source XReference Development Process | ### 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
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance
--- | --- | --- | --- | ---
6 | 4 | 100% | 40% | 40%
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages
--- | --- | --- | ---
Constants ExceptionConstants Repository |  | org.apache.bcel.classfile org.apache.bcel.generic org.apache.bcel.util org.apache.bcel.verifier org.apache.bcel.verifier.statics org.apache.bcel.verifier.structurals | java.io java.lang org.apache.bcel.classfile org.apache.bcel.util
#### org.apache.bcel.classfile
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance
--- | --- | --- | --- | ---
6 | 8 | 21% | 57% | 22%
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages
--- | --- | --- | ---
AccessFlags Attribute AttributeReader Constant ConstantCP ConstantObject FieldOrMethod Node Utility Visitor | ClassFormatException ClassParser Code CodeException ConstantClass ConstantDouble ConstantFieldref ConstantFloat ConstantInteger ConstantInterfaceMethodref ConstantLong ConstantMethodref ConstantNameAndType ConstantPool ConstantString ConstantUtf8 ConstantValue Deprecated DescendingVisitor EmptyVisitor ExceptionTable Field InnerClass InnerClasses JavaClass LineNumber LineNumberTable LocalVariable LocalVariableTable Method PMGClass Signature SourceFile StackMap StackMapEntry StackMapType Synthetic Unknown | org.apache.bcel org.apache.bcel.generic 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 java.util.zip org.apache.bcel org.apache.bcel.generic org.apache.bcel.util
#### 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
#### org.apache.bcel.util
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance
--- | --- | --- | --- | ---
3 | 9 | 5% | 75% | 20%
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages
--- | --- | --- | ---
Repository | AttributeHTML BCELFactory BCELifier ByteSequence Class2HTML ClassLoader ClassLoaderRepository ClassPath ClassQueue ClassSet ClassStack ClassVector CodeHTML ConstantHTML InstructionFinder JavaWrapper MethodHTML SyntheticRepository | org.apache.bcel org.apache.bcel.classfile org.apache.bcel.generic | java.io java.lang java.lang.reflect java.util java.util.zip org.apache.bcel org.apache.bcel.classfile org.apache.bcel.generic org.apache.regexp
#### org.apache.bcel.verifier
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance
--- | --- | --- | --- | ---
2 | 12 | 27% | 86% | 13%
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages
--- | --- | --- | ---
NativeVerifier PassVerifier VerifierFactoryObserver | GraphicalVerifier TransitiveHull VerificationResult Verifier VerifierAppFrame VerifierFactory VerifierFactoryListModel VerifyDialog | org.apache.bcel.verifier.statics org.apache.bcel.verifier.structurals | java.awt java.awt.event java.io java.lang java.util javax.swing javax.swing.event org.apache.bcel org.apache.bcel.classfile org.apache.bcel.generic org.apache.bcel.verifier.statics org.apache.bcel.verifier.structurals
#### org.apache.bcel.verifier.exc
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance
--- | --- | --- | --- | ---
2 | 2 | 29% | 50% | 21%
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages
--- | --- | --- | ---
CodeConstraintException StaticCodeConstraintException VerificationException VerifierConstraintViolatedException | AssertionViolatedException ClassConstraintException InvalidMethodException LinkingConstraintException LoadingException LocalVariableInfoInconsistentException StaticCodeInstructionConstraintException StaticCodeInstructionOperandConstraintException StructuralCodeConstraintException Utility | org.apache.bcel.verifier.statics org.apache.bcel.verifier.structurals | java.io java.lang
#### org.apache.bcel.verifier.statics
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance
--- | --- | --- | --- | ---
1 | 7 | 0% | 88% | 12%
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages
--- | --- | --- | ---
| DOUBLE_Upper IntList LONG_Upper LocalVariableInfo LocalVariablesInfo Pass1Verifier Pass2Verifier Pass3aVerifier StringRepresentation | org.apache.bcel.verifier | java.lang java.util org.apache.bcel org.apache.bcel.classfile org.apache.bcel.generic org.apache.bcel.verifier org.apache.bcel.verifier.exc
#### org.apache.bcel.verifier.structurals
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance
--- | --- | --- | --- | ---
1 | 9 | 14% | 90% | 4%
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages
--- | --- | --- | ---
InstructionContext Subroutine | ControlFlowGraph ExceptionHandler ExceptionHandlers ExecutionVisitor Frame GenericArray InstConstraintVisitor LocalVariables OperandStack Pass3bVerifier Subroutines UninitializedObjectType | org.apache.bcel.verifier | java.awt java.io java.lang java.util org.apache.bcel org.apache.bcel.classfile org.apache.bcel.generic org.apache.bcel.verifier org.apache.bcel.verifier.exc
### 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.