白盒测试——C/C++编程规范(21)
本系列文章将带大家一起解析一下白盒测试经常用到的GJB-8114标准规则,其中一共有124条强制性规则。GJB-8114强制性规则是按类分的,一共有13类,前面的文章已经讲过一部分,本文继续往下讲一下函数调用类规则和语句使用类规则。
R-1-7-15
禁止在函数参数表中使用省略号
像违背示例中展示的,在早期的C语言中有好多都是这样做的,某一个参数个数不定,我在这里是可以使用省略号的,现在不允许这样做了。
R-1-7-16
禁止使用直接或间接自调用函数
这个也就是说自己调用自己,或者自己调用了一个别的函数,别的函数再调用了它自己,这样就是一个递归调用。我们在计算阶乘的时候往往大家都爱用递归调用来写,但是这个有一个最大的坏处,递归调用递归多少层你不知道,有可能会使你的程序把堆栈都给占光了,然后造成崩溃,所以现在就规定了,不允许递归调用。
语句使用类
R-1-8-1
禁止不可达语句
在咱们的程序当中,有一些冗余代码,还有一些是不可达的代码,也就是说你的程序怎么样都执行不到那段程序,这样的代码就是不可达的。比如说违背示例中,在return temp这就已经返回了,但是下面还有一个赋值语句,就没有任何意义了。现在遇到这种语句都会挑出来,要求开发者一定要将这些不可达语句删掉。
R-1-8-2
禁止不可达分支
这个跟上面的不可达语句实际上是一样的,有些分支可能也是无论如何你都运行不到的,比如说违背示例1中展示的,里面的n本来就是一个大于等于0的数,后面的case-1,条件是-1,那它永远也执行不到这个分支,所以说这个分支是不可达的。
R-1-8-3
禁止使用无效语句
比如违背示例中展示的,我们给x赋成0,接着又给它赋成别的值,然后返回x,这个x=0是一个无效语句。
这里面大家首先要明确一点,这个无效语句是由谁说了算呢,不是说一个外人看了一眼别人的程序,认为这个语句是无效语句它就是无效语句了。有一些和硬件相关的,可能你认为是一个无效语句,但是人家会告诉你那是为了调整硬件时序的,有可能这个语句就是有效的。所以要根据具体情况去判断无效语句,这个如果是嵌入式语言,通常都不太好判断。但是在咱们日常的pc机上,这种无效语句就比较容易判断了。