数清楚代码行也不容易

    最近想开发一个代码行统计工具,和CVS集成在一起,以便于统计代码增、删、改的行数。本来以为是很简单的一件事情,在和同事讨论后,提出了以下一些疑问:

    1)代码行以逻辑语句计算,还是以物理代码行计算?

    比如说1条逻辑语句占用了2个物理行,以1行计算还是2行计算?到网上查了一下,COCOMO采用的是逻辑行,而SEI和DoD采用的物理行。想来物理行可能更准确些,就是{/}都单独计算一行,有点不爽。要是计算逻辑行数的话,一般按照分号计算,但for / if / switch等还得另行计算。况且有些程序和脚本不是以分号结尾,比如shell。

    2)如果源代码和注释在同一行,怎么计算?

    下载了一个SEI网站上推荐的工具,测试了一下,这种情况它是按照1行代码行计算的,注释忽略掉了。而很多其它代码行统计工具都是各计算1行,其实这样是很符合情理的。

    3)软件产品一般都是经过若干内部版本的回归修改和测试,才最后发布正式版本的。代码规模的统计是在两个发布基线之间直接比较,还是相邻两条发布基线之间所有内部版本的累加?

    若在两个发布基线之间直接比较,则忽略掉了内部反复修改的工作量,而且每次回归测试所发现的Bug与相应的机会域不匹配。若采用内部版本的累加,则有效代码规模(对这次发布真正有共献的部分)遭到了破坏。

    大家认为以下几行代码的总行数、代码行数、注释行数和空白行数分别是多少?

    //打印A与B比较的结果
    if(a==b)//如果A等于B
    {
         printf("A等于B/n");
    }else{
        printf("//A不等于B/n"); 

    }

Jacob Chin © 2006

你可能感兴趣的:(软件度量)