在软件测试团队建立软件测试体系或软件测试实验室申请CNAS/CMA认定时,都需要依据相关技术标准,确认权威的测试方法,指导日常的软件测试工作。GJB-8114《C/C++语言编程安全子集》是一部嵌入式软件安全测试相关的国家标准,本系列文章我们针对GJB-8114标准的具体内容进行解读和介绍,前面已经为大家介绍了声明定义类、版面书写类、指针使用类、分支控制类、函数调用类和运算处理,本文我们继续为大家介绍语句使用类。
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机上,这种无效语句就比较容易判断了。
R-1-8-4
使用八进制数必须明确注释
像违背示例中展示的是一个八进制的,所以后面必须明确注释八进制。主要原因就是这个O跟0太相似了。
R-1-8-5
数字类型后缀必须使用大写字母
这是一个规定,比如说违背示例中的b=0l,这个l必须是大写。前4个违背示例我们都是比较好理解的,最后这个0.1f大家就有可能不太好理解了,这个为什么也是违反呢?因为我们在print语句中常常用0.1f,但是在这里要求,必须用大写,实际上大写和小写并没有什么区别。
以上就是针对GJB-8114《C/C++语言编程安全子集》标准中,语句使用类的相关要求,后面会继续为大家介绍后面的规则,欢迎大家继续关注。
本系列内容整理自优品软件培育计划百场前沿技术系列讲座直播第16期,中国航天科技集团公司软件评测中心研究员李国良为大家带来的《白盒测试——C/C++编程规范》专题讲座,他曾参与过多个大型航空、航天、军工、电子型号项目的测试任务,如需直播回放视频也可私信我获取。
(谢绝转载,更多内容可查看我的专栏)