Chris Dolan wrote: > That can't be right. Negation does not contribute to complexity. > Instead, I believe it is the for loop and the exit points that are > increasing your count. Consider rewriting the for as ifs and gotos: > > sub complexity_of_six { > my $bar = shift; > my $total = 0; > my $type = ref $bar; > if ( ! $type ) { > $total = $bar; > } > elsif ( $type eq 'ARRAY' ) { > my $_i = 0; > LOOP: > goto DONE if ($_i >= @{$bar}); > my $baz = $bar->[$_i]; > $total += $baz; > $_i++; > goto LOOP; > DONE: > } > else { > confess("Don't know how to handle refs to $type"); > } > return $total; > } > > Then the decision points are: > 1) if ( ! $type ) > 2) if ( $type eq 'ARRAY') > 3) if ($_i >= @{$bar}) > 4) else > and the end points are > 1) confess("Don't know how to handle refs to $type"); > 2) return $total > > So I actually count a complexity of 7 (num decision points + num > endpoints + 1) if I've understood the wiki definition correctly. > http://en.wikipedia.org/wiki/Cyclomatic_complexity
Are the else and confess different decision points? There's no way out of the else but the confess. Similar issue with the return.