title: Sonar cyclomatic complexity rule issue - discourages multiple return statements
body: <p>For the following piece of code, sonarqube computes the method cyclomatic complexity as 9</p>
  
  <pre><code>String foo() {
      if (cond1) return a;
      if (cond2) return b;
      if (cond3) return c;
      if (cond4) return d;
      return e;
  }
  </code></pre>
  
  <p>I understand as per the rules for computation <a href="http://docs.sonarqube.org/display/SONAR/Metrics+-+Complexity" rel="noreferrer">http://docs.sonarqube.org/display/SONAR/Metrics+-+Complexity</a> the complexity of 9 is correct.
  So complexity of the method is = 4 (if) + 4 (return) + 1 (method) = 9</p>
  
  <p>This complexity can be reduced, if I have a single exit point.</p>
  
  <pre><code>String foo() {
      String temp;
      if (cond1) { 
          temp = a;
      } else if (cond2) {
          temp = b;
      } else if (cond3) { 
          temp = c;
      } else if (cond4) {
          temp = d;
      } else {
          temp = e;
      }
      return temp;
  }
  </code></pre>
  
  <p>I believe this code is more cluttered and unreadable than the previous version and I feel having methods with return on guard conditions is a better programming practice. So is there a good reason why return statement is considered for computation of cyclomatic complexity? Can the logic for computation be changed so that it doesn't promote single exit point.</p>