2013年7⽉10⽇,中国⼈民解放军总装备部发布了中华⼈民共和国国家军⽤标准GJB 8114,全称为 8114-2013《C/C++语⾔编程安全⼦集》,提出软件编程标准,以提⾼国家军⽤软件的安全性,并作为静态规则检查的依据。
⼤量数据表明,软件存在的问题或隐患很⼤部分根源在于没有遵守编程规范或标准,所以很多院所和企业⼤多制定了⾃⼰企业的编程规范。
编程规范或标准的落实,⼀⽅⾯可以使代码开发⼈员在编程过程中遵守规则,从⽽保证代码的可理解性和可维护性,进而提高代码质量;另⼀⽅⾯也可以让测试⼈员按照规则来检查代码,及时发现代码问题。
航空、航天、电⼦、船舶等软件测评中⼼作为第三⽅评测机构,在测试过程中会严格按照“8114”的规则进⾏检测,不但可以在评测体系内保证代码规则的⼀致性,还可以在全军体系内实施推动软件标准化,落实提⾼软件的可维护性和可靠性,增强我国军⽤软件的质量。
鉴于传统的代码规则检查需要靠评测中⼼⼈⼯阅读和审查代码,如果开发⽅提交的代码本⾝没有遵守标准,就会导致评测中⼼消耗很多时间和资源在静态代码审查上。所以,⾃动化的检查⼯具来实现对代码进⾏快速有效的规则检查十分有必要。
很多企事业单位⾃⼰编制了⾃动化测试规则检查⼯具,但由于资源有限,以及标准的理解等限制,导致很多⾃研⼯具没有普适性,甚⾄对⼀些提交的代码⽆法检测。
同时国外的⼯具很少能够⽀持国标。国内做标准检测的⼚家也非常少,静态分析工具 — CodeSense软件源代码缺陷深度分析平台完全支持国军标。
CodeSense支持缺陷(违类型规)3000余条,其中GJB81114-2013、GJB5369-2005覆盖率95%,MISRAC-2004、MISRA-2012、MISRA C++-2018覆盖率80%。另外CWE 7PK覆盖率80%以上,OWASP TOP 10覆盖率100%。
以下是利用CodeSense的GJB8114模板对C++源码进行进行规则检测的实操案例:
一、登录系统
打开CodeSense工具,输入用户名密码登入系统。
![](https://img-blog.csdnimg.cn/img_convert/19bdb491df22220298ed1f50d32ac77f.png)
二、新建测试项目
1、选择需要检测的项目的zip格式压缩包,点击打开。
![](https://img-blog.csdnimg.cn/img_convert/8d5eff3681ec8e4005ea35fd21e0d77c.png)
2、设置项目的基本配置参数,包括项目名称、项目负责人、访问权限、项目描述,其中带*号的项是必须填写的。
![](https://img-blog.csdnimg.cn/img_convert/8156e77e02840d90d5072724b2adae19.png)
3、选择项目的检测配置参数,包括涉及的编程语言、使用的检测模板、编译器、检测文件类型以及代码度量的参数设置,其中带‘*’号的项是必须设置的。检测模板选择GJB8114。
![](https://img-blog.csdnimg.cn/img_convert/e23612a7eb3ae536f0fb156f7011af10.png)
4、设置完成点击保存,系统就会自动的进行一次静态分析。
三、查看检测结果
1、任务管理界面查看检测进度,检测完成会显示检测成功图标。
![](https://img-blog.csdnimg.cn/img_convert/7a7657154c9daad49a3d14e91142d968.png)
2、查看检测结果信息,包括代码行数、违规总数、检测时间以及违规等级占比图等等。
![](https://img-blog.csdnimg.cn/img_convert/c4fb40792be992742b04c93d7747a7a6.png)
3、查看具体的缺陷位置,以及规则描述。
![](https://img-blog.csdnimg.cn/img_convert/33cd921bfa711edc1d27f69540970acc.png)
4、缺陷审计,确认问题。
![](https://img-blog.csdnimg.cn/img_convert/6cee0650b6cc568fce1f07cb7018cceb.png)
5、查看代码度量的结果,包括项目维度、文件维度和函数维度。
![](https://img-blog.csdnimg.cn/img_convert/d059ba814517fad45909bc5582b349c2.png)
四、查看测试报告
1、导出测试报告。
![](https://img-blog.csdnimg.cn/img_convert/93fc3bd527627db589b181e3b2666c47.png)
2、下载测试报告。
![](https://img-blog.csdnimg.cn/img_convert/33bc7572beaee93121ff2d65cef4cac9.png)
3、查看测试报告内容。
![](https://img-blog.csdnimg.cn/img_convert/e5f6c650c1669bcde34f00580baa25a0.png)