Difference between revisions of "Tracking Code Quality"

From CitconWiki
Jump to navigationJump to search
Line 2: Line 2:
 
* Presentation by Marty Andrews
 
* Presentation by Marty Andrews
 
* The [http://en.wikipedia.org/wiki/Cyclomatic_complexity Cyclomatic Complexity] of a method is really the minimum number of unit tests needed to test very path in a method.  
 
* The [http://en.wikipedia.org/wiki/Cyclomatic_complexity Cyclomatic Complexity] of a method is really the minimum number of unit tests needed to test very path in a method.  
* By reducing CC, usually by breaking large methods down, you reduce the number of tests you need to write !
+
* By reducing CC, usually by breaking large methods down, you reduce the number of tests you need to write!
 
* Complexian - www.cogentconsulting.com.au/resources/complexian/index.html
 
* Complexian - www.cogentconsulting.com.au/resources/complexian/index.html
 
* FindBugs - usually needs human to interpret. Good to hook in but not run in CI. Human can run so often
 
* FindBugs - usually needs human to interpret. Good to hook in but not run in CI. Human can run so often
Line 12: Line 12:
 
** Custom Columns - Define your own quality metric by combining any of Clover's built in ones
 
** Custom Columns - Define your own quality metric by combining any of Clover's built in ones
 
** Track code quality over time using historical charts and reports
 
** Track code quality over time using historical charts and reports
 +
 +
=== Industry standard CCN numbers ===
 +
* There was some discussion over what is an unacceptably high CCN. I ([JerryShea]) don't like to see CCN above 20 personally. I have seen this table reproduced in a few places, including [http://www.linuxjournal.com/article/8035 this linuxjournal article]:
 +
{| class="wikitable"
 +
|-
 +
! CCN
 +
! Interpretation
 +
|-
 +
| 1-10
 +
| a simple program, without much risk
 +
|-
 +
| 11-20
 +
| more complex, moderate risk
 +
|-
 +
| 21-50
 +
| complex, high risk
 +
|-
 +
| 51+
 +
| untestable, very high risk
 +
|}
  
 
=== References ===
 
=== References ===

Revision as of 14:52, 29 June 2008

Tracking Code Quality

  • Presentation by Marty Andrews
  • The Cyclomatic Complexity of a method is really the minimum number of unit tests needed to test very path in a method.
  • By reducing CC, usually by breaking large methods down, you reduce the number of tests you need to write!
  • Complexian - www.cogentconsulting.com.au/resources/complexian/index.html
  • FindBugs - usually needs human to interpret. Good to hook in but not run in CI. Human can run so often
  • SourceMonitor
  • JOODI - Package level checking. Good to enforce certain layers only access other layers e.g.
  • Spec#
  • Clover2
    • Project Risk Coverage Cloud - A tag cloud containing every class that exposes those which have low test coverage but high cyclomatic complexity
    • Custom Columns - Define your own quality metric by combining any of Clover's built in ones
    • Track code quality over time using historical charts and reports

Industry standard CCN numbers

  • There was some discussion over what is an unacceptably high CCN. I ([JerryShea]) don't like to see CCN above 20 personally. I have seen this table reproduced in a few places, including this linuxjournal article:
CCN Interpretation
1-10 a simple program, without much risk
11-20 more complex, moderate risk
21-50 complex, high risk
51+ untestable, very high risk

References

  1. T.J. McCabe, "A complexity measure," IEEE Trans. Software Eng. vol. SE2, no 4, pp 308-320, 1976
  2. B.A. Nejmeh, "NPATH: a measure of execution path complexity and its applications," Commun, ACM, vol 31, no 2, pp 188-200, 1988.
  3. Wikipedia:Cyclomatic_complexity
  4. Complexity Analyser for Java, http://www.martyandrews.net/resources/complexian.html
  5. Complexity Analyser for C++, http://gnocchi.sourceforge.net/
  6. Clover2, http://atlassian.com/clover