c++编码规范_汽车嵌入式软件测试——嵌入式软件标准及规范简介
在汽车嵌入式软件开发中,采用MISRA C规范作为代码级别规范,模型级别的规范则采用Mathworks提出的建模规范MAAB(MathWorks Automotive Advisory Board)。
1 MISRA C
在第一章中,我们介绍了在嵌入式系统中大多数软件采用C/C++语言编写,但是C/C++语言是弱类型语言,编写的程序最大的问题是可靠性很难保证。目前避免C/C++语言中不安全因素的普遍做法是遵照已制定的编码标准(规范)或从中选定的安全子集来编写程序,其中MISRA C是欧洲汽车工业针对嵌入式C语言的应用所编写的安全子集,经多年发展,MISRA C已经从汽车行业编码规范发展成为跨行业的编码规范,成为世界范围内广泛使用的C语言编码规范。
1.1 MISRA C:2004编程规范
在MISRA C:2004中共有必要规则(Required Rules)121条,推荐规则(Advisory Rules)20条。任何符合MISRA C:2003编程规范的代码都应该严格遵循121条必要规则的要求,并应该在条件允许的情况下尽可能符合20条推荐规则。
MISRA C:2004将其141条规则分为21个类别,每一条规则对应一条编程准则。
#建议规则:是非严格遵守的规则,是对程序员的强烈建议。
#必要规则:是必须遵守的规则,是对程序员的强制要求
1.2 MISRA C:2012 编程规范
对于那些遵循MISRA C:2004开发的代码,MISRA C:2012对其造成的影响是极为有限的。
MISRA C:2012的文档看起来比MISRA C:2004要大得多,但实际上,编码规则总数并没有增加多少:MISRA C:2004包含了141条规则,而MISRA C:2012包含了143条规则和16条指令。MISRA C:2012的文档之所以大了许多,在于其每条编码规则的体积都“变大”了:
更精确的规则描述
每条定义都包含如下内容:- 解释:阐述本编码规则的具体要求;
- 原理:解释本编码规则的必要性;
- 例外:列举不适用本编码规则的特殊情况;
- 举例:从代码遵从本编码规则和代码不遵从本编码规则两个角度进行举例。
增加了规则和指令的区别
指令:仅仅依靠源代码分析,无法对“指令”进行合规性判定,往往需要开发人员提供更多的信息,如设计文档和要求说明。静态代码检测工具可以判定代码符合“指令”,但对于代码不符合“指令”的情况,静态代码检测工具给出的判定结果可能千差万别。
规则:仅仅依靠源代码分析,就可以对“规则”进行合规性判定,不需要开发人员提供更多的信息。所有的静态代码检测工具都应具对“规则”进行合规性判定的能力。
增加了系统规则和单一翻译单元规则之间的区别
编码规则执行的难易程度有着很大的差别。最简单的规则(如“不得使用八进制常量”)可以通过简单的语句语法分析进行判定。然而,很多编码规则的判定,需要一条控制语句、一个完整的功能、一个完整的翻译单元、甚至一个项目的整个代码库的支撑才能进行判定。
在MISRA C:2012中,每条编码规则都被划分为“系统规则”或“单一翻译单元规则”,用来反映编码规则的执行范围。这两者之间的区别如下:
- 单一翻译单元无法进行系统规则的合规性判定。
- 进行系统规则的合规性判定,往往意味着更高的要求及更多的时间。
增加了可判断性内容
编码规则的另一个重要属性是可判定性。对于一些简单的编码规则,只需进行简单的语法分析即可实现判定;而对于某些复杂的规则,则需要深入地分析代码的结构和语义。
对于一些编码规则,其本质是“不可判定的”——不论静态代码检测工具进行多么深入的分析,都无法判定代码的合规性;相反,当某个编码规则被违反,任何工具都可判定且不会误报,那么该规则被认为是“可判定的”。换句话说,任何工具对于“可判定的”编码规则,只会给出两个可能的答案:
- Yes – 此处违反该规则;
- No –此处没有违反该规则;
MISRAC:2012中,所有的规则都被划分为“可判定的”和“不可判定的”两类。共计143条编码规则,其中28条为“不可判定的”。当一个编码规则为“不可判定的”,那么对于这条规则,永远不能保证其合规性,工具可能会给出第三个答案:
- 无法保证合规性检查结果的准确性。
2 MAAB
关于MAAB建模规范在先前的专题中已有详细的介绍,此处不再赘述,可参考之前的专题。申老shi学习笔记--MAAB控制算法建模规范介绍申老shi学习笔记--MAAB建模规范之命名规则一申老shi学习笔记--MAAB建模规范之命名规则二申老shi学习笔记--MAAB建模规范之Simulink一申老shi学习笔记--MAAB建模规范之Simulink二申老shi学习笔记--MAAB建模规范之Simulink三申老shi学习笔记--MAAB建模规范之Simulink四申老shi学习笔记--MAAB建模规范之Signals一申老shi学习笔记--MAAB建模规范之Block Usage一申老shi学习笔记--MAAB建模规范之Block Usage二申老shi学习笔记--MAAB建模规范之Block Parameters一申老shi学习笔记--MAAB建模规范之Simulink Patterns一申老shi学习笔记--MAAB建模规范之Simulink Patterns二
c++编码规范_汽车嵌入式软件测试——嵌入式软件标准及规范简介相关推荐
- mysql++编程规范_建议收藏 - 专业的MySQL开发规范
为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA ...
- 通信线路工程验收规范_一级建造师市政涉及到的相关规范汇总
第一章:道路 施工规范:<城镇道路工程施工与质量验收规范>CJJ 1-2008 辅助规范:<城市道路工程设计规范>CJJ 37-2012(2016版) <土的工程分类标准 ...
- java类的命名规范_一篇搞定Java命名规范
好的代码本身就是注释,减少不必要的注释 驼峰命名规则 大驼峰命名 类名全部使用大驼峰 ServiceDiscovery.ServiceInstance.LruCacheFactory 小驼峰命名 方法 ...
- 代码管理规范_微服务架构下代码管理规范
当下对于代码的管理,主要采用GitLab或GitHub,然而使用git进行代码管理过程中,一般有四种开发模式,分别为主干开发主干发布,主干开发分支发布,分支开发主干发布,分支开发分支发布.四种开发模式 ...
- java类的命名规范_浅谈Java中的命名规范
现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 答案是:制定一整套统一的规范. 无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没 ...
- python大型项目开发规范_大型项目CMakeLIsts.txt的编写规范
1.Very simple executable PROJECT( helloworld ) # 非必需 SET( hello_SRCS hello.cpp ) ADD_EXECUTABLE( h ...
- python软件测试脚本_基于Python的实时嵌入式软件测试脚本
摘 要:计算机技术应用的不断普及,使得实时嵌入式软件在航空.航天.工业控制.交通.医疗和军事安全等诸多领域发挥着愈来愈重要的作用.不难看出,这些领域对软件的可靠性有很严格的要求,因为该领域的软件一旦失 ...
- pep8 python 编码规范_编码规范的重要性
很多去 Google 参观的人,在用完洗手间后都有这样的疑惑,马桶前面的门上怎么会贴着 Python 编码规范?要知道,Google 对编码规范的要求极其严格,这也能从侧面说明编码规范的重要性. 对于 ...
- 嵌入式软件测试——1.简介
#百科介绍 一般来说,软件测试有7个基本阶段,即单元或模块测试.集成测试.外部功能测试.回归测试.系统测试.验收测试.安装测试.嵌入式软件测试在4个阶段上进行,即模块测试.集成测试.系统测试.硬件/软 ...
最新文章
- mysql密码设置 alert_MySQL用户、权限及密码操作
- zabbix服务器没有.pid文件,PID file /run/zabbix/zabbix_server.pid not readable (yet?) after start. 报错解决...
- 爬虫爬取在线小说阅读网站详解
- BERT源码分析(PART II)
- 某度网盘转存限制500个文件?这个软件帮你搞定!
- [译] APT分析报告:10.Lazarus以ThreatNeedle家族攻击工业事件还原(BMP图片隐藏RAT)
- 边缘计算精华问答 | 边缘计算有哪些应用场景?
- org.jeecgframework.core.common.exception.MyExceptionHandler]java.lang.NullPointerException
- 《Java从入门到放弃》JavaSE入门篇:面向对象语法二(入门版)
- English Through Movie
- arc和非arc完美支持
- YUI Compressor Maven Plugin
- 第十七届全国大学生智能车竞赛华南赛区报名信息
- 诺德舞台电钢琴采样-Nord Stage 3 Ultimate Stage Pianos
- 电脑控制所有手机的两种方式
- 十年程序人生——黎活明给程序员的忠告
- SAP培训行业权威评测---51sap培训评测网(www.51sap.net)
- spectral学习记录
- 计算机画分段函数,《几何画板》:绘制分段函数的图像 -电脑资料
- STM32FSMC扩展SRAM