C/C++编程安全标准GJB-8114解读——语句使用类

在软件测试团队建立软件测试体系或软件测试实验室申请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++编程规范》专题讲座,他曾参与过多个大型航空、航天、军工、电子型号项目的测试任务,如需直播回放视频也可私信我获取。

(谢绝转载,更多内容可查看我的专栏)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值