Synopsis: | Avoid complex code |
Language: | Java |
Severity Level: | 2 |
Category: | CodeSize |
Description: |
Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are 'if', 'while', 'for', and 'case labels'. Generally, 1-4 is low complexity, 5-7 indicates moderate complexity, 8-10 is high complexity, and 11+ is very high complexity. This rule triggers if a method has a complexity of 10 or more. The higher the cyclomatic complexity, the harder it is to write a set of unit tests that cover all branches. Cyclomatic complexity is an indication how hard it is to test your code. // Cyclomatic Complexity = 12 public class Foo { 1 public void example() { 2 if (a == b) { 3 if (a1 == b1) { fiddle(); 4 } else if a2 == b2) { fiddle(); } else { fiddle(); } 5 } else if (c == d) { 6 while (c == d) { fiddle(); } 7 } else if (e == f) { 8 for (int n = 0; n < h; n++) { fiddle(); } } else{ switch (z) { 9 case 1: fiddle(); break; 10 case 2: fiddle(); break; 11 case 3: fiddle(); break; 12 default: fiddle(); break; } } } } |