stan4j.com
Quality Report
Date2008-04-19
Package Prefixcom.google.
Guice 1.0
Library Dependency Graph
Metrics Summary
MetricValue
Number of Libraries4
Number of Packages22
Number of Top Level Classes260
Average Number of Top Level Classes per Package11.82
Average Number of Member Classes per Class0.19
Average Number of Methods per Class5.60
Average Number of Fields per Class3.00
Estimated Lines of Code26249
Estimated Lines of Code per Top Level Class100.96
Average Cyclomatic Complexity2.15
Fat for Library Dependencies4
Fat for Flat Package Dependencies45
Fat for Top Level Class Dependencies1137
Tangled for Library Dependencies0%
Tangled for Flat Package Dependencies0.26%
Average Component Dependency between Libraries33.33%
Average Component Dependency between Packages24.03%
Average Component Dependency between Units11.92%
Average Distance0.07
Average Absolute Distance0.33
Average Weighted Methods per Class12.03
Average Depth of Inheritance Tree1.16
Average Number of Children0.23
Average Coupling between Objects4.04
Average Response for a Class10.78
Average Lack of Cohesion in Methods14.92
Top Violations (10 of 156)
ArtifactMetricValue
injectTangled2.41%
Guice 1.0Tangled - Packages0.26%
inject.asmD-0.75
inject.asmFat82
inject.cglib.asmD-0.74
injectFat177
inject.asm.MethodWriterWMC452
inject.asm.MethodWriterELOC1894
inject.asm.MethodWriterFat251
inject.cglib.asmFat74
Pollution Chart
Violations by Metric
Number of Top Level Classes
ArtifactValue
inject50
Number of Methods
ArtifactValue
inject.cglib.core.CodeEmitter108
inject.cglib.proxy.Enhancer51
Number of Fields
ArtifactValue
inject.asm.MethodWriter44
inject.cglib.asm.MethodWriter37
inject.cglib.proxy.Enhancer39
inject.asm.ClassWriter37
inject.cglib.core.EmitUtils22
inject.cglib.asm.ClassWriter30
inject.cglib.core.CodeEmitter26
inject.asm.Type24
inject.cglib.asm.Type24
inject.asm.Opcodes202
inject.cglib.asm.Opcodes189
inject.ErrorMessages36
inject.cglib.core.Constants35
Estimated Lines of Code
ArtifactValue
inject.asm.MethodWriter1894
inject.asm.ClassReader1387
inject.cglib.asm.MethodWriter1268
inject.cglib.asm.ClassReader1162
inject.asm.ClassReader.accept()869
inject.cglib.core.EmitUtils856
inject.cglib.proxy.Enhancer813
inject.cglib.asm.ClassReader.accept()722
inject.InjectorImpl769
inject.asm.ClassWriter618
inject.cglib.core.CodeEmitter770
inject.asm.Frame707
inject.cglib.asm.ClassWriter538
inject.cglib.core.ReflectUtils464
inject.asm.MethodWriter.d()304
inject.cglib.asm.MethodWriter.a()301
inject.util.ReferenceMap459
inject.asm.Type412
inject.cglib.core.TypeUtils401
inject.asm.Frame.a()333
inject.BinderImpl384
inject.cglib.asm.Type393
inject.asm.MethodWriter.a()200
inject.cglib.asm.MethodWriter.a()199
inject.cglib.asm.ClassWriter.toByteArray()162
inject.asm.ClassWriter.toByteArray()149
inject.asm.MethodWriter.visitMaxs()146
inject.asm.ClassReader.a()152
inject.cglib.asm.ClassReader.a()141
inject.asm.AnnotationWriter.visit()131
inject.cglib.asm.AnnotationWriter.visit()129
inject.cglib.asm.MethodWriter.a()115
inject.Key305
inject.asm.MethodWriter.a()114
inject.asm.MethodWriter.visitFrame()100
inject.InjectorImpl.getInternalFactory()106
inject.cglib.core.KeyFactory.Generator.generateClass()85
inject.asm.Frame.a()89
inject.asm.MethodWriter.c()89
inject.InjectorImpl.getImplicitBinding()80
inject.ProxyFactory.createConstructionProxy()74
inject.asm.ByteVector.putUTF8()69
inject.cglib.asm.ByteVector.putUTF8()69
inject.cglib.asm.FieldWriter.a()73
inject.cglib.core.KeyFactory.<clinit>()61
inject.cglib.transform.AbstractTransformTask.processJarFile()62
inject.cglib.proxy.Enhancer.generateClass()62
inject.cglib.proxy.Enhancer.emitMethods()63
inject.asm.ClassReader.a()63
inject.cglib.asm.ClassReader.a()63
inject.asm.MethodWriter.visitJumpInsn()61
inject.asm.FieldWriter.a()61
inject.cglib.proxy.Enhancer.validate()60
inject.servlet.ServletModule.configure()64
Cyclomatic Complexity
ArtifactValue
inject.asm.ClassReader.accept()217
inject.cglib.asm.ClassReader.accept()174
inject.asm.MethodWriter.d()77
inject.cglib.asm.MethodWriter.a()78
inject.asm.MethodWriter.a()46
inject.cglib.asm.MethodWriter.a()47
inject.asm.Frame.a()179
inject.cglib.asm.ClassWriter.toByteArray()34
inject.asm.ClassWriter.toByteArray()29
inject.asm.MethodWriter.visitMaxs()31
inject.asm.ClassReader.a()37
inject.cglib.asm.ClassReader.a()35
inject.asm.AnnotationWriter.visit()26
inject.cglib.asm.AnnotationWriter.visit()26
inject.cglib.asm.MethodWriter.a()26
inject.asm.MethodWriter.a()26
inject.asm.MethodWriter.visitFrame()20
inject.asm.MethodWriter.c()24
inject.InjectorImpl.getInternalFactory()23
inject.asm.Frame.a()19
inject.cglib.asm.FieldWriter.a()21
inject.asm.signature.SignatureReader.a()23
inject.cglib.asm.signature.SignatureReader.a()23
inject.cglib.proxy.Enhancer.validate()18
inject.asm.FieldWriter.a()17
inject.asm.MethodWriter.visitVarInsn()18
inject.asm.Frame.b()21
inject.cglib.core.EmitUtils.append_string_helper()18
inject.asm.Item.a()22
inject.cglib.core.CodeEmitter.cast_numeric()17
inject.cglib.asm.Item.a()19
inject.asm.Frame.a()16
inject.asm.Type.getOpcode()20
inject.cglib.asm.Type.getOpcode()20
inject.cglib.core.CodeEmitter.if_cmp()16
inject.asm.MethodWriter.visitFieldInsn()15
inject.asm.Type.a()15
inject.cglib.asm.Type.a()15
Fat
ArtifactValue
inject.asm82
inject177
inject.asm.MethodWriter251
inject.cglib.asm74
inject.cglib.core88
inject.cglib.asm.MethodWriter178
inject.asm.ClassReader89
inject.cglib.proxy.Enhancer179
inject.cglib.core.EmitUtils118
inject.cglib.core.CodeEmitter161
inject.cglib.asm.ClassReader71
inject.InjectorImpl127
inject.asm.ClassWriter150
inject.cglib.asm.ClassWriter129
inject.util.ReferenceMap111
inject.BinderImpl83
inject.Key123
inject.asm.Type80
inject.cglib.asm.Type78
inject.BindingBuilderImpl71
Tangled
ArtifactValue
inject2.41%
Tangled for Flat Package Dependencies
ArtifactValue
Guice 1.00.26%
Distance
ArtifactValue
inject.asm-0.75
inject.cglib.asm-0.74
inject.cglib.util0.75
inject.spi-0.56
Weighted Methods per Class
ArtifactValue
inject.asm.MethodWriter452
inject.asm.ClassReader343
inject.cglib.asm.MethodWriter310
inject.cglib.asm.ClassReader278
inject.asm.Frame278
inject.cglib.core.CodeEmitter206
inject.cglib.proxy.Enhancer140
inject.cglib.core.EmitUtils112
inject.asm.ClassWriter120
inject.cglib.asm.ClassWriter107
inject.asm.Type126
inject.cglib.core.TypeUtils123
inject.cglib.asm.Type124
Coupling between Objects
ArtifactValue
inject.cglib.core.EmitUtils32
inject.InjectorImpl26
inject.cglib.core.CodeEmitter38
inject.cglib.core.ReflectUtils30
inject.cglib.core.TypeUtils26
inject.cglib.asm.Type27
Response for a Class
ArtifactValue
inject.cglib.core.EmitUtils143
inject.cglib.proxy.Enhancer143
inject.cglib.core.CodeEmitter168
Design Tangles
Tangle inside inject (#nodes=2, #edges=2, weight=24, fas size=1, weight=7)
Tangle inside inject (#nodes=2, #edges=2, weight=2, fas size=1, weight=1)
Package Distance Chart
Metric Ratings
Count Metrics
MetricRatingLinear
Number of Top Level Classes
true
Number of Methods
true
Number of Fields
true
Estimated Lines of Code
true
Estimated Lines of Code
true
Complexity Metrics
MetricRatingLinear
Cyclomatic Complexity
true
Fat
true
Fat
true
Fat
true
Tangled
true
Tangled for Library Dependencies
true
Tangled for Flat Package Dependencies
true
Average Component Dependency between Libraries
true
Average Component Dependency between Packages
true
Robert C. Martin Metrics
MetricRatingLinear
Distance
true
Average Absolute Distance
true
Chidamber & Kemerer Metrics
MetricRatingLinear
Weighted Methods per Class
true
Depth of Inheritance Tree
true
Average Depth of Inheritance Tree
true
Coupling between Objects
true
Response for a Class
true