Grazie a una domanda su Code Review Sono entrato in un piccolo disaccordo (che essenzialmente è un'opportunità per imparare qualcosa) su cosa sia esattamente la complessità ciclomatica per il codice sottostante.
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 si scrive questo codice in Eclipse e si utilizza il plug-in per le metriche di Eclipse , mi viene detto che la complessità ciclica di McCabe per il metodo principale è 2, e per il metodo thro
dice 2.
Tuttavia, qualcun altro mi dice che la complessità di chiamare thro
più volte è number of calls * method complexity
, e quindi afferma che la complessità del metodo principale è 7 * 2 = 14.
Misuriamo cose diverse? Possiamo essere entrambi corretti? O qual è la reale complessità ciclomatica qui?