Index of the code metrics available out of the box to Apex rule developers.

Edit me
# Index of code metrics

## Cyclomatic Complexity (CYCLO)

*Operation metric.* Can be calculated on any non-abstract operation.

### Description

Number of independent paths through a block of code [Lanza05].
Formally, given that the control flow graph of the block has `n`

vertices, `e`

edges and `p`

connected components, the cyclomatic complexity of the block is
given by `CYCLO = e - n + 2p`

[McCabe76]. In practice it can be
calculated by counting control flow statements following the standard rules given
below.

The standard version of the metric complies with McCabe’s original definition:

- Methods have a base complexity of 1.
- +1 for every control flow statement (
`if`

,`catch`

,`throw`

,`do`

,`while`

,`for`

,`break`

,`continue`

) and conditional expression (`?:`

). `else`

,`finally`

and`default`

don’t count;- +1 for every boolean operator (
`&&`

,`||`

) in the guard condition of a control flow statement.

### Code examples

```
class Foo {
void baseCyclo() { // Cyclo = 1
highCyclo();
}
void highCyclo() { // Cyclo = 10
int x = 0, y = 2;
boolean a = false, b = true;
if (a && (y == 1 ? b : true)) { // +3
if (y == x) { // +1
while (true) { // +1
if (x++ < 20) { // +1
break; // +1
}
}
} else if (y == t && !d) { // +2
x = a ? y : x; // +1
} else {
x = 2;
}
}
}
}
```

## Weighted Method Count (WMC)

*Class metric.* Can be computed on classes and enums.

# References

Lanza05: Lanza, Marinescu; Object-Oriented Metrics in Practice, 2005.

McCabe76: McCabe, A Complexity Measure, in Proceedings of the 2nd ICSE (1976).