函数度量的关键指标
- 从函数调用的函数数STCAL
1.1 概念:这个指标计算函数中函数调用的次数,只计算不同函数(对特定函数的多个调用实例被计算为一个调用),而不计算通过指针调用的函数。
- 圈复杂度STCYC
2.1概念:圈复杂度可以用来衡量一个模块判定结构的复杂程度,其数量上表现为独立路径的条数,也可理解为覆盖所有的可能情况最少使用的测试用例个数。圈复杂度可应用在程序的子程序、模块、方法或类别。
2.2度量指标:
2.3 计算方法:点边计算法和节点判定法
2.3.1点边计算法
如上图所示,E表示控制流图中边的数量,N表示控制流图中节点的数量。
圈复杂度的计算公式为:V(G) = E - N + 2
If-else圈复杂度为2
2.3.2节点判定法
对应的计算公式为:V (G) = P + 1
其中 P 为判定节点数,常见的判定节点有:if 语句,while 语句,for 语句,case 语句,catch 语句,and 和 or 布尔操作,?: 三元运算符。
- GO语句数量STGTO
3.1 概念:无条件跳转语句,可让程序直接跳转到任意标记位置。
- 出口点数量STM19
4.1概念:这个度量是对软件中退出点数量的度量,通过计算返回语句来计算。没有返回语句的函数STM19值为0。这个函数是否声明有返回值无关(即返回void)。
4.2 举例
- 调用此函数的函数数STM29
5.1 概念:这个度量定义为调用指定函数的函数数量,函数的调用次数是临界性的指示器,函数被调用次数越多,它就越关键,因此也就越可靠。
- 嵌套深度STMIF
6.1 概念:控制结构中最大嵌套层次
6.2 度量指标:应介于1~5之间
6.3 计算方法:下述举例该嵌套深度STMIF为3
- 函数参数的个数STPAR
7.1 概念:此指标计算函数实参列表中声明的形参数量
- 路径复杂度STPTH
8.1 概念:该度量类似于Nejmeh的2 NPATH统计,给出函数控制流图中可能路径的上限。它是函数中非循环执行路径的数目。
8.2 度量指标:应介于4~200之间
PS 博客内容为个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。