Благодаря вопросу в Code Review у меня возникло небольшое разногласие (которое, по сути, является возможностью чему-то научиться) о том, что именно является Cyclomatic Complexity для приведенного ниже кода.
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 для основного метода равна 2, а для thro
метода - 2.
Однако кто-то еще говорит мне, что сложность вызова thro
несколько раз равна number of calls * method complexity
, и поэтому утверждает, что сложность основного метода равна 7 * 2 = 14.
Мы измеряем разные вещи? Можем ли мы оба быть правильными? Или какова здесь настоящая цикломатическая сложность?