网易首页 > 网易号 > 正文 申请入驻

当C++遇上AUTOSAR编码规范,你的安全我来护航

0
分享至

当飞鸟遇上游鱼,当溪流遇上江海,当北京遇上西雅图,当你遇上Mr/Ms.Right…,“当”是一切美好的开端,但今天,咱先不聊自然也不聊爱情,聊一聊当C++遇上AUTOSAR编码规范,会有一段怎样的故事?

AUTOSAR与静态代码测试

汽车界的同仁们都知晓,AUTOSAR(AUTomotive Open System ARchitecture)组织拥有超过180个会员,涵盖了汽车整车厂、零部件供应商、工具供应商、半导体芯片供应商等,这样的强强联合,开发了一套针对汽车ECU的开放式软件体系架构,实现了应用层和底层的解耦,标准化软件基本元素、接口及总线系统,使汽车行业能够在控制成本的同时,更好地应对系统复杂度不断增长的情况。

AUTOSAR组织开发的第一个开放式架构称为“Classic Platform”,该架构的开发以C代码为主体,在做代码静态测试时,应用MISRA C 2012足以。但随着智能化的普及,为了满足车联网及无人驾驶技术的发展需求,AUTOSAR组织推出新架构“Adaptive Platform”,Adaptive Platform的相关API接口由C++语言进行开发。那么问题来了,我们是否可以直接遵循MISRA C++编码规范?莫急,且看如下详述~

MISRA C++编码规范

许多安全关键性系统开发者结合已经建立的编码规范,典型如MISRA C++2008,来使用C++03语言标准,这无可厚非,MISRA C++2008的制定基础即为C++03。但C语言在持续更新,编译器也随之而变,这就意味着帮助开发人员编写安全可靠的代码的编码标准同样需要持续更新以保证新语言特性的最佳实践应用。

为此在2017年,AUTOSAR组织基于C++14标准发布了新的编码准则——AUTOSAR Coding Guidelines,这一准则是MISRA C++2008的延伸,它为应用现代C++语言编写安全和任务关键型嵌入式系统提供了有效指导。

其实AUTOSAR编码标准与MISRA C++2008存在高度的共性,在处理新语言特性的使用上存在少量差异,所以如果我们采用了合适的自动代码静态分析方案,完成MISRA C++2008到AUTOSAR Coding Guidelines的迁移并不是一件难事。

AUTOSAR Coding Guidelines和现有编码规范的区别和联系

这应该是广大开发人员比较关心的一部分,用两个成语来概括AUTOSAR Coding Guidelines:兼容并蓄、独树一帜。因为它涉及了一系列已有的编程标准,又根据Adaptive Platform制定了独有的规则。2018年3月,AUTOSAR Coding Guidelines发布了402条规则,其中138条直接取自MISRA C++2008。

此外AUTOSAR还引用了如下编码标准:

· Joint Strike Fighter Air Vehicle C++ coding standards (JSF AV C++)

· High Integrity C++ coding standard Version 4.0 (HICPP)

· CERT C++ coding standard (CERT)

· C++ Core guidelines (C++ CORE)

· Google C++ Style Guide

在AUTOSAR编码标准中,有“对已有编码标准的可追溯性”的章节,它详述了MISRA,HICPP,JSF,C++ Core guidelines,和CERT编码规则与AUTOSAR编码标准的关联度,并分成如下几类:“完全相同”、“微小差别”、“显著差别”、“不采用”,详见下表:

开发团队应该采用AUTOSAR编码规范吗?

很多人可能存在这样的疑问:能不能用MISRAC++2008测试C++14的代码?是否有必要采用AUTOSAR Coding Guidelines?

严格来讲,使用C++14编译器编译的代码是不能遵从MISRA规范的。如果用MISRAC++2008测试C++14的代码,就肯定会出现违反项,我们需要对每一项违反进行说明,并用其他方法再一次检查违反项代码。换句话说,是有可能证明C++14代码符合MISRA规范的,但过程很艰苦。AUTOSAR Coding Guidelines帮助开发人员摆脱了这种复杂情况。

所以,开发团队采用AUTOSAR编码规范是毋庸置疑的。不仅如此,如果您的项目需要按照C++14编码并且需要说明该项目符合ISO26262功能安全标准,那么AUTOSAR编码规范就是无可替代的,因为在AUTOSAR编码规范之前没有其他的编码标准是为了支持符合C++14编写的安全关键型软件而设计的。

下表是各编码规范支持的C++语言版本:

如何实现从已有编码规范到AUTOSAR的转变?

答案很简单,按照AUTOSAR规范提示,修改源码。前提是您选择了靠谱的代码静态测试工具,才能得到精准的规范诊断信息,比如Helix QAC。在Helix QAC中,可以直接加载AUTOSAR编码规范,自动执行代码静态检测。

如果您已经遵循了MISRA编码规范,那意味着您已经完成了大部分工作,但不可避免的,在应用代码静态测试分析器做AUTOSAR规范检查时,分析器会在符合MISRA规范的代码里找到违反项,因为AUTOSAR编码标准引入了针对C++11/14特性的规范。这时候该举个例子了,比如:

Rule A8-5-2: Braced-initialization {}, without equals sign, shall be used for variable initialization

在C++03的初始化中,是这样写的:

int 32 x1 =0;

而AUTOSAR规范中不再兼容这种表达,取而代之的,是

std : : int 32_t x1{0};

再比如:

std : : int8_t c1=400; //ok?

std : : int8_t c2 {400}; //error:

narrowing conversion

这种初始化方式防止了缩小转换,提高了代码安全性,是C++新特性最佳实践应用的代表,然而这种规则检测MISRA C++是不支持的。

另外一个例子是:

Rule A3-9-1: Fixed width integer types from , indicating the size and signedness, shall be used in place of the basic numerical types

这条规则取代了MISRA C++ Rule 3-9-2,MISRA C++依赖于用户或执行时定义的类型,而AUTOSAR则使用ISO C++标准中定义的类型。

其实说到这里,大家对AUTOSAR Coding Guidelines肯定有了更新的认识和判断。AUTOSAR编码规范之所以被应用,是因为在AUTOSAR架构下找不到合适的编程标准去指导现代C++(C++11/14)语言在安全关键性软件上的应用,典型如Adaptive Platform软件架构。现代C++提供了很多很有帮助的语言特性,当联合AUTOSAR编码规范一起使用时,可以帮助您提高代码的可读性,为嵌入式系统软件安全保驾护航。

这样看来,当C++遇上AUTOSAR编码规范,不失为汽车行业的一件大事。

如何开启浪漫的邂逅?

如需按照AUTOSAR编码规范进行测试,可联系北汇信息进行试用申请。北汇信息作为Perforce(PRQA)公司的合作伙伴,将为客户提供优质的静态代码测试工具和服务。

Perforce(PRQA)公司是AUTOSAR组织在代码静态分析领域的唯一会员,负责功能安全软件架构的相关标准制定工作,参与编写了C++14编码指南,制定了AUTOSAR测试方案,并应用其开发的静态测试工具Helix QAC在AUTOSAR Adaptive Platform演示代码上执行代码静态测试。

Helix QAC作为代码静态分析领域的先驱,不仅仅提供针对AUTOSAR C++的诊断,还支持MISRA C/C++、HICPP、JSF AV C++、CERT、CWE编码规范包,其精准的诊断消息和强大的软件生命周期管理平台为全球3000多个整车厂和零部件供应商所信赖。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
刚上映就爆了!《扫恶》上映拿下 9.1分,大尺度案件全程无尿点

刚上映就爆了!《扫恶》上映拿下 9.1分,大尺度案件全程无尿点

糊咖娱乐
2026-03-20 14:56:27
3月30日起执行!不用再买墓地,国家正式放开殡葬新选择

3月30日起执行!不用再买墓地,国家正式放开殡葬新选择

福建平子
2026-03-22 08:11:56
价格大跳水!许多人爱吃,正大量上市

价格大跳水!许多人爱吃,正大量上市

杭州之声
2026-03-20 18:49:35
名门千金海清:坐拥9500平大院,给欧豪下跪,儿子被称小谷爱凌

名门千金海清:坐拥9500平大院,给欧豪下跪,儿子被称小谷爱凌

边城少爷
2026-03-21 15:28:36
杜兰特敬服阿门绝杀,多名美记直呼见证历史,杜兰特选择谦虚

杜兰特敬服阿门绝杀,多名美记直呼见证历史,杜兰特选择谦虚

吴朑爱游泳
2026-03-22 15:25:25
舅舅突然来电你表弟撞了豪车,要赔110万,我冷静回应

舅舅突然来电你表弟撞了豪车,要赔110万,我冷静回应

王二哥老搞笑
2026-03-22 13:05:05
地主少爷当上军区副参谋长,评衔时毛主席看中将名单:怎没见他?

地主少爷当上军区副参谋长,评衔时毛主席看中将名单:怎没见他?

浩渺青史
2026-03-20 18:34:30
击落3架美军F-15E的科威特飞行员,因多项罪名已被逮捕

击落3架美军F-15E的科威特飞行员,因多项罪名已被逮捕

碳基生物关怀组织
2026-03-17 22:35:07
家族业力毁了几代人幸福,35岁女子三姐妹全离异,年入百万照样分

家族业力毁了几代人幸福,35岁女子三姐妹全离异,年入百万照样分

青梅侃史啊
2026-03-20 22:12:20
33年来第1次4连败,切尔西的首要问题是罗塞尼尔

33年来第1次4连败,切尔西的首要问题是罗塞尼尔

米奇兔
2026-03-22 18:21:48
韩媒:中国欠特朗普一声谢谢!若不是美国打压,中国芯不会那么强

韩媒:中国欠特朗普一声谢谢!若不是美国打压,中国芯不会那么强

心也简单
2026-03-22 16:57:03
《隐身的名字》大结局:文毓秀一生被毁,葛文君遭报应,柏庶坐牢

《隐身的名字》大结局:文毓秀一生被毁,葛文君遭报应,柏庶坐牢

草莓解说体育
2026-03-22 09:57:00
抛弃印度,普京急建新三角?关键时刻,中方摊牌:不解决死穴免谈

抛弃印度,普京急建新三角?关键时刻,中方摊牌:不解决死穴免谈

万国明信片
2026-03-22 17:00:28
美暂时解除石油制裁,伊朗斥“心理战”

美暂时解除石油制裁,伊朗斥“心理战”

参考消息
2026-03-21 16:59:17
浙江55岁母亲发帖:儿子不婚不育,我也想通了!告别催婚内耗!

浙江55岁母亲发帖:儿子不婚不育,我也想通了!告别催婚内耗!

川渝视觉
2026-03-21 21:43:14
生育大局已定:如不出意外,2026年起中国人口将迎来3大变化

生育大局已定:如不出意外,2026年起中国人口将迎来3大变化

蜉蝣说
2026-03-17 15:58:31
表面谦谦君子,实则流氓头子,这四位男星表里不一

表面谦谦君子,实则流氓头子,这四位男星表里不一

看尽落尘花q
2026-02-19 19:28:49
“梅姨”现身并落网!对贩卖儿童事实供认不讳,已被依法逮捕

“梅姨”现身并落网!对贩卖儿童事实供认不讳,已被依法逮捕

南方都市报
2026-03-21 11:35:00
王鸥直播甩“单身炸弹”!五年“德云绯闻”灰飞烟灭

王鸥直播甩“单身炸弹”!五年“德云绯闻”灰飞烟灭

圆梦的小老头
2026-03-22 18:29:15
伊朗退了,叙利亚退了,巴勒斯坦退了,黎巴嫩退了,塞尔维亚退了

伊朗退了,叙利亚退了,巴勒斯坦退了,黎巴嫩退了,塞尔维亚退了

南权先生
2026-01-29 15:57:27
2026-03-22 19:03:00
北汇信息
北汇信息
专注汽车电子领域
611文章数 31关注度
往期回顾 全部

科技要闻

嫌台积电太慢 马斯克要把芯片产能飙升50倍

头条要闻

白宫发布高市早苗访美照片神态夸张 日本网友:耻辱

头条要闻

白宫发布高市早苗访美照片神态夸张 日本网友:耻辱

体育要闻

郑钦文连续迎战大满贯冠军 “双教练”团队正式亮相

娱乐要闻

今晚首播!央视年代剧《冬去春来》来了

财经要闻

睡梦中欠债1.2万?这只“虾”杀疯了

汽车要闻

14.28万元起 吉利银河星耀8远航家开启预售

态度原创

亲子
房产
旅游
教育
健康

亲子要闻

宝蓝的奶奶生病了,宝蓝帮助奶奶收拾房间,清扫地面,收拾厨房~

房产要闻

全城狂送1000杯咖啡!网易房产【早C计划】,即刻启动!

旅游要闻

318自驾节在四川雅安启动,川藏线交通与旅游深度融合

教育要闻

基础题一定做全对,这是学霸标配

转头就晕的耳石症,能开车上班吗?

无障碍浏览 进入关怀版