Grazie a una domanda alla Code Review ho avuto un piccolo disaccordo (che essenzialmente è un'opportunità per imparare qualcosa) su cosa sia esattamente la complessità ciclomatica per il codice qui sotto.
public static void main(String[] args) {
try {
thro();
thro();
thro();
thro();
thro();
thro();
thro();
}
catch (NullPointerException e) {
}
}
private static Random random = new Random();
public static void thro() throws NullPointerException {
if (random.nextBoolean())
throw new NullPointerException();
System.out.println("No crash this time");
}
Quando scrivo questo codice in Eclipse e si usa il plug-in delle metriche Eclipse , mi dice che la complessità ciclica McCabe per il metodo principale è 2 e per il thro
metodo che dice 2.
Tuttavia, qualcun altro mi dice che la complessità della chiamata thro
più volte è number of calls * method complexity
, e quindi sostiene che la complessità del metodo principale è 7 * 2 = 14.
Stiamo misurando cose diverse? Entrambi possiamo essere corretti? O qual è l'attuale complessità ciclomatica?