工作笔记 代码指标
软件的显著的特征是无形、很难测量。软件行业逐渐总结出好的软件的一些原则(如:简单/封装,高内聚,底耦合等),基于这些原则,业内制定了一些软件代码指标
在汽车行业,HIS制定的HIS Source Code Metrix在汽车ECU软件中应用的比较广泛,本文对其进行介绍:
注:HIS (“Herstellerinitiative Software“) 是由德国OEM代表(Audi, BMW, Daimler, Porsche and Volkswagen)组成,用于定义在汽车行业的软件相关的标准,该组织在2016年解散
1. Comment Density “COMF“: > 0.2
代码中的注释密度,注释密度可以提高代码的可读性
2. Number of paths “PATH“: 1 ~ 80
是指函数内的路径(PATH)的总和
如下代码的路径总和为8
if ()
{ } // block 1, paths = 1
else
{ } // block 2 paths = 1
// block 3 paths = block 1 + block 2 = 2
switch
{ case 1: break;
case 2: break;
case 3: break;
default: break;
}
// block 4 paths = 4
// paths = block 3 * block 4 = 2 * 4 = 8
3. Number of Go to Statements “GOTO“: 0
是指函数内的goto语句的个数
4. Cyclomatic Complexity“v(G)“ : 1 ~ 10
函数的圈复杂度
5. Number of Calling Functions “CALLING“: 0 ~ 5
有多少个函数调用本函数?
6. Number of called Functions “CALLS“: 0 ~ 7
函数调用了多少其它函数?
7. Number of Function Parameters „PARAM“: 0 ~ 5
函数的参数个数
8. Number of Instructions per function „STMT“: 1 ~ 50
函数内包含的源代码行数
9. Number of call Levels „LEVEL“ : 0 ~ 4
函数内的嵌套层次
如下的嵌套层次为2
if ()
{
if ()
{ }
else
{}
} else
{ }
10. Number of return points „RETURN“: 0 ~ 1
函数只能有一个出口(return)
11. Number of recursions „ap_cg_cycle“ : 0
不允许有递归
如上的指标要求是比较严格的,很多企业都是基于该指标制定了企业标准,企业标准中的指标要求一般都会比如上的指标要求要略宽松些,例如某国际知名的Tier1的要求如下:
工作笔记 代码指标