Grâce à une question sur Code Review, j'ai eu un petit désaccord (qui est essentiellement une opportunité d'apprendre quelque chose) sur ce qu'est exactement la complexité cyclomatique pour le code ci-dessous.
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");
}
En écrivant ce code dans Eclipse et en utilisant le plugin de métriques Eclipse , cela me dit que la complexité cyclomatique McCabe pour la méthode principale est 2, et pour la thro
méthode, elle dit 2.
Cependant, quelqu'un d'autre me dit que la complexité d'appeler thro
plusieurs fois est number of calls * method complexity
, et affirme donc que la complexité de la méthode principale est 7 * 2 = 14.
Sommes-nous en train de mesurer des choses différentes? Peut-on avoir raison tous les deux? Ou quelle est la complexité cyclomatique réelle ici?