Завдяки питанню в Code Review я зіткнувся з невеликою суперечкою (що по суті є можливістю дізнатися щось) про те, що саме є цикломатичною складністю для наведеного нижче коду.
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");
}
Коли я пишеш цей код у Eclipse та використовує плагін метрики Eclipse , це говорить мені, що McCabe Cyclomatic Complexity для основного методу дорівнює 2, а для thro
методу - 2.
Однак хтось інший каже мені, що складність виклику thro
кілька разів є number of calls * method complexity
, і тому стверджує, що складність основного методу становить 7 * 2 = 14.
Ми вимірюємо різні речі? Чи можемо ми обидва бути правильними? Або яка реальна цикломатична складність тут?