简介:常见的规则如代码行数,圈复杂度等。但是polyspace中也会有对应的代码度量方法。
一般性测试类型
测试类型
Polyspace的测试报告的列表中一般有以下几项,
- 缺陷,冲突
- 合规性(MISRA标准的合规性)
- 代码度量
- 鲁棒性(根据测试选项)
代码度量的一般性运行结果
下面的测试结果中显示了代码度量的测试结果,一般情况下如果没有特殊要求,是可以直接接受的。代码度量显示了代码的复杂程度。
主要是以下的几类:
- 语言范围
- 调用层级
- 调用函数的个数
- 被多少个函数调用
- 函数的参数的个数
测试的case分析
Number of function parameters 函数参数的数量过多
Justify:There are many arguments for the function.
一般严重程度设置为低。因为我们确实需要这么多的参数。
解释:下面的含义时函数的参数阈值为5,但是实际上这个函数的参数却达到了9个。
修改建议:改为结构体的形式可以减少函数的参数。但我们一般不会这么做。
Number of call levels 调用层级
这里是度量嵌套控制流结构的深度。简单来讲是if else 的嵌套层数。
例子: 嵌套层级为2
例子:嵌套层级为3:
Number of called function 调用函数的个数
被调用的函数个数,包含RTE接口,读和写等。
同一个函数被调用多次,计算的时候相当于1次。因此下面的数目为2.
递归函数的多次调用,也是相当于1次,因此下面的数目为1。
Number of Calling Functions 被几个函数引用
被同一个函数多次引用,也只计为1.因此下面的数目为2.
Language Scope 语言范围
语言范围 (操作符数目+操作数数目)/(操作符种类数+操作数种类数)