Overview Pyramid
Source: SourceMonitor
|
ANDC |
|
n/a |
|
|
AHH |
|
n/a |
|
|
30.6 |
NOP |
|
49 |
|
|
4.8 |
NOC |
|
1500 |
|
|
25.8 |
NOM |
|
7215 |
|
NOM |
4.8 |
|
.1 |
LOC |
|
186497 |
34714 |
|
CALLS |
n/a |
CYCLO |
|
14009 |
n/a |
|
FANOUT |
Legend: |
|
undefined |
|
value in range |
|
value too small |
|
value too big |
Thresholds
Value | Low | High |
ANDC |
0.19 |
0.37 |
AHH |
0.05 |
0.21 |
NOM/NOC |
4 |
15 |
LOC/NOM |
5 |
16 |
CYCLO/LOC |
0.2 |
0.3 |
CALLS/NOM |
1.17 |
2 |
FANOUT/CALLS |
0.2 |
0.48 |
Smells
- LOC/NOM is high: methods tend to be rather long.
- CYCLO/LOC is low: methods tend to have a rather simple logic.
- CALLS/NOM is high: methods tend to call many other methods.
Explanation
A brief description of the metrics used in the Overview Pyramid.
Top part: System Inheritance
- ANDC
- average number of derived classes;
- AHH
- average hierarchy height.
Left part: Size and Complexity
Direct metrics
- NOP
- number of packages;
- NOC
- number of classes;
- NOM
- number of methods;
- LOC
- lines of code;
- CYCLO
- cyclomatic complexity index.
Derived metrics
- NOC/NOP
- average number of classes per package → high-level structuring, indicates if packages tend to be coarse or fine grained;
- NOM/NOC
- average number of methods per class → class structuring, indicates how operations are distributed over the system;
- LOC/NOM
- average number of lines per method → operation structuring, indicates how well the system's behaviour is distributed over operations;
- CYCLO/LOC
- average method complexity → intrinsic operation complexity, indicates the expected complexity of an operation.
Right part: Coupling
Direct metrics
- CALLS
- number of calls;
- FANOUT
- number of referenced types.
Derived metrics
- CALLS/NOM
- average number of calls in a method → coupling intensity, indicates how many operations are invoked on average by each operation;
- FANOUT/CALLS
- average number of external calls → coupling dispersion, indicates how many classes are involved on average in a single operation.