Graças a uma pergunta na Code Review , entrei em um pequeno desacordo (que é essencialmente uma oportunidade de aprender algo) sobre o que exatamente é a Complexidade Ciclomática para o código abaixo.
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");
}
Ao escrever esse código no Eclipse e usar o plug - in de métricas do Eclipse , ele diz que a Complexidade Ciclomática McCabe para o método principal é 2 e para o thro
método que diz 2.
No entanto, alguém me diz que a complexidade de chamar thro
várias vezes é number of calls * method complexity
e, portanto, afirma que a complexidade do método principal é 7 * 2 = 14.
Estamos medindo coisas diferentes? Nós dois podemos estar corretos? Ou qual é a complexidade ciclomática real aqui?