How to measure C++ or Java file complexity?
I want to start measuring what Michael Feathers has referred to as the
turbulence of code, namely churn vs. complexity.
To do this, I need to measure the complexity of a C++ or Java file. So I
found a couple tools that measure cyclomatic complexity (CC). They each
measure CC well at the function or method level. However, I need a metric
at the file level, and they don't do so well there. One tool just returns
the average of all method complexities in the file, and the other tool
treats the whole file like it is one giant method, i.e., it counts all the
decision points in the whole file.
So I did some research and found that McCabe defines CC only in terms of
modules--and they define a module as a function--not as a file (see slides
20 and 30 of this presentation). And I think that makes sense.
So now I'm left with trying to figure out how to represent file
complexity. My thought is that I should just use the maximum method CC for
that file.
Any thoughts about that approach or any other suggestions?
Thanks!
Ken
No comments:
Post a Comment