代码度量(Code Metric)属于软件度量(Soft Metric)的范畴。很多人希望能够统计自己源码工程中的代码行数,实际上这就是Code Metric的初级形式。在很多开发标准中,都定义了Metric相关内容。如IEEE、CMM/CMMI。
Code Metric有若干重要指标。一款开源的Metric分析软件C and C++ Code Counter的分析报告书中阐述了如下指标:
NOM = Number of modules
LOC = Lines of Code
COM = Lines of Comments
MVG = McCabe's Cyclomatic Complexity
L_C = Lines of code per line of comment
M_C = Cyclomatic Complexity per line of comment
IF4 = Information Flow measure
顾名思义,NOM是模块数量,即源码工程中包含多少模块。LOC是代码行数,这里不包括空行和注释。COM是注释行数。MVG是复杂度。L_C是每行注释代码行数,M_C是每行注释复杂度。IF4,信息流测定。(由于没有找到中文的翻译和释义,仅凭个人理解罗列翻译)
微软的VSTS2008提供Metric功能,但无法针对C++使用。CCCC(C and C++ Code Counter)似乎已经停止维护,命令行模式,不易使用。一些商用工具功能强大但过于昂贵。
追记:
1.UTF编码的文件将不被识别和读取。CCCC和SouceMonitor都存在这个问题。SourceMonitor有相关的选项,可能是我操作问题,失败了……
2.SouceMonitor统计出来的代码行数偏低。主要原因可能是没有计算大括号…… 在我目前开发的项目中,根据现有的编码规范,是否计算大括号的统计差异为40%。
3.适当的使用CCCC也是不错的。有些统计值CCCC较为完整。