首页 > 其他分享 > 【北汇信息 | MISRA C 通识及实践】

【北汇信息 | MISRA C 通识及实践】

时间:2023-08-28 10:57:12浏览次数:43  
标签:北汇 指南 AUTOSAR 编码标准 通识 C++ MISRA 2023

上周三我们在直播课中讲解了 MISRA C 通识及实践(请看VCR),今天我们来探讨一下MISRA C++:2023~

 

http://mp.toutiao.com/feoffline/mp-article-preview/video?pgc_id=7272194497587446308

 

MISRA C++:2023®是广受期待的MISRA C++ ®标准的下一个版本,将于今年晚些时候发布。新版本将整合AUTOSAR C++14指南,并支持C++的最新版本。

 

MISRA®是由汽车行业软件可靠性协会(MISRA)开发的一套C和C++编码标准,不仅是汽车行业的最佳标准之一,也是任何使用嵌入式系统的行业的最佳标准之一。

 

为了帮助您为即将发布的版本做好准备,我们推出了一个由我们的MISRA专家Frank van den Beuken博士撰写的关于MISRA C++:2023概述的博客系列。

 

 

1️⃣MISRA C++ ®背景

 

 

MISRA C++于2008年发布。它为ISO C++2003编写的安全相关软件的开发提供了专家指导。这套指南已被广泛采用,合规性已成为许多安全关键项目的强制性要求。然而,从那时起,C++语言发生了很大变化,新版本引入了新的语言功能并改变了现有的功能。

 

使用较新C++语言版本的项目可能不符合MISRA C++ 2008的所有规则。为了为这些后续版本提供指南,AUTOSAR为C++14开发了新的指南,该指南基于MISRA C++:2008,但通过其他标准的规则进行了增强。

 

MISRA C++工作组目前正在根据AUTOSAR指南对MISRA C++进行更新,该适用于C++17,但包括MISRA在安全相关C++开发方面的既定最佳实践。预计更新后的标准将于今年晚些时候发布。

 

人们对新的MISRA C++指南非常感兴趣。然而,由于MISRA C++:2008已被许多项目采用,此对改用新指南的影响存在一些担忧。

 

 

2️⃣MISRA C++:2023® 博客系列预览

 

 

在本博客系列中,我们将讨论新标准的多个方面。

 

▶️C++和MISRA C++的历史

 

我们将从C++编程语言的历史概述开始,从1979年贝尔实验室的Bjarne Stroustrup提出的C++编程语言概念,到1991年开始标准化,再到目前的C++20版本。

 

值得注意的是,C++20中添加的一些主要功能在很久以前就已经讨论过了。模块和概念就是这种情况,它们是为并发编程的标准化特性提供库实现和协同程序的新颖特性。直到现在,并发支持才成为标准的一部分,尽管这些是与程序组织一起与C的效率相结合的Simula编程语言功能。

 

然而,必须指出的是,MISRA C++仍然基于C++17。主要原因是编译器的实现程序需要时间来为所有语言功能提供支持,然后此类实现也需要经过认证才能用于安全关键项目。

 

随着时间的推移,已经编写了许多不同的C++编码标准。我们已经提到了AUTOSAR指南,但也有许多其他流行的编码标准在使用中。今年的《汽车软件开发状况报告 》 介绍了400名汽车开发专业人士对汽车软件行业当前实践和新兴趋势的回答。随着电动和半自动驾驶汽车发展的持续增长,以及随之而来的软件组件的增加,研究结果继续表明 ,信息安全与功能安全一样重要,这是一个主要问题。这反映在对遵守安全标准的要求日益增加。

 

报告还显示,MISRA仍然是汽车行业最受欢迎的编码标准,42% 的受访者使用MISRA编码标准。鉴于MISRA的悠久历史及其汽车根源,这并不奇怪。 AUTOSAR是一种在汽车软件平台背景下开发的最新编码标准,其最终更新于2018年,以 36% 的得票率位居第三。C++核心指南标准出人意料地以 39% 的得票率位居第二,尽管该标准与汽车行业没有明显的关系。它如此受欢迎可能是因为它涵盖了开发人员想要使用的最新C++语言功能。

 

 

您目前使用哪些编码标准?对《2023年汽车软件开发状况报告》的回应

 

▶️C++编码标准的几个方面

 

该标准由Bjarne Stroustrup和Herb Sutter推出,是一份不断改进的动态文件。C++核心指南也被用作AUTOSAR的来源,因为它涵盖了最新的C++语言功能。AUTOSAR包括两个标准之间的比较,表明30%的C++核心指南与AUTOSAR规则冲突。MISRA C++:2023继承了AUTOSAR的许多规则,但没有直接引用C++核心指南。

 

我们将专门写一篇博客来比较这些C++编码标准的各个方面,包括理念、指南、实施和声明合规性。由于MISRA C++:2023似乎不太可能接受所有AUTOSAR规则,我们将评估与C++核心指南相冲突的规则部分是否仍然如此之大。

 

▶️MISRA C++:2023 的新指南和新规则

 

最后,我们将在一些博客中专门介绍一些新颖的指南。

 

MISRA C++规则12.0.1 “ 应适当提供特殊成员功能” 是一项新规则,为定义类类型的接口提供了指导。它提倡“零规则”, 它提倡“零规则”,这意味着它不喜欢指定特殊的成员函数,因为语言标准已经保证编译器已经提供了预期的实现。

 

这与其他指南相矛盾,例如“五法则”(如果还单独计算默认构造函数,则为六),该指南指出需要始终显式指定所有特殊成员函数。

 

但是,这也存在风险,从为 AUTOSAR 规则 A12-0-1 提供的合规示例可以看出:

Plaintext

class A // Compliant - the class A follow the "Rule of six" rule

{

public:

A(); // Non-default constructor

~A() = default;

A(A const&) = default;

A& operator=(A const&) = default;

A(A&&) = delete;

A& operator=(A&&) = delete;

};

我们可以看到,只有移动构造函数被删除,复制函数和析构函数是默认的。此代码可能是开发人员将遵循“三法则”的代码扩展为“五法则”的结果,但试图通过删除新的移动构造函数来保留旧的行为结果。MISRA C++不允许这种特殊成员函数的组合; 如果一个类提供复制函数,那么它也必须提供移动构造函数。该类的问题在于它不能与容器一起使用,例如,当试图声明该类型的向量时,由于缺少移动构造函数,将发生编译错误。

预计会产生重大影响的准则是细则4.0.6,“数字类型之间的分配应适当”。此规则禁止许多隐式类型转换。熟悉 MISRA C:2012 的开发人员可能希望拥有与 MISRA C基本类型定义的类似类型转换规则,但事实并非如此。

MISRA C++ 要严格得多,这是有原因的:与 C 相反,C++ 提供了函数重载,这取决于表达式的确切类型和自动占位符类型说明符,其中类型是从表达式派生的。如果不遵守规则,则可能是包含头文件会导致函数重载比之前匹配的函数匹配得更好,这可能是出乎意料的。有一种安全的方法可以避免隐式转换,方法是使用具有整型基础类型的类型安全枚举类型。此类强类型的值不受隐式转换的影响。

 

 

3️⃣确保MISRA符合Helix QAC的要求

 

 

Perforce的 Helix QAC 是一种静态分析工具,在提供MISRA C和MISRA C++合规性检查以及许多其他有价值的分析功能方面处于领先地位。

 

Helix QAC提供合规模块,用于执行MISRA C和MISRA C++的所有版本和修订,包括MISRA C:2023。Perforce计划在正式发布日期临近时提供完整的MISRA C++:2023合规模块。

 

了解为什么 Helix QAC 是适用于 MISRA C 和 MISRA C++的最佳静态代码分析器 ➡️ 注册 7 天免费试用:[email protected]

 

翻译

搜索

复制

<iframe></iframe>

标签:北汇,指南,AUTOSAR,编码标准,通识,C++,MISRA,2023
From: https://www.cnblogs.com/polelink/p/17661698.html

相关文章

  • 静态代码测试工具HelixQAC新版对MISRA C规则提供100%覆盖率
    HelixQAC 2023.2中的新增功能HelixQAC2023.2对MISRAC:2012和MISRAC:2023规则提供了100%的覆盖率,并更新了相应的合规性模块以适用于MISRAC:2023。此外,此版本还包括改进的C23语言支持、对Validate平台的改进和HelixQAC和Validate的集成,以及其他质量增强功能。......
  • 北汇信息T-Box和OTA车联网测试系统获服务业发展引导资金支持,助力智能交通发展
    近日,上海北汇信息科技有限公司的针对T-Box和OTA的车联网测试系统成功获得上海市服务业发展引导资金支持。引导资金主要用于支持服务业发展中的薄弱环节、关键领域、重点区域和新兴行业的项目建设、业务开展、重大问题研究等,聚焦服务业新赛道,培育服务业“新技术、新业态、新模式、......
  • 遵守 MISRA 如何提高C++应用的安全性
    Perforce在支持需要稳定和安全的应用程序方面有着悠久的历史。凭借50多年的应用程序开发经验,从客户、趋势和竞争对手那里学到了很多东西。Perforce从软件开发的所有领域都采用了最佳实践,并试图将这些实践应用于Perforce所做的一切。Perforce采用了单元测试、自动化测试、敏捷开......
  • 东方中科并购北汇仪式暨北汇周年庆典盛大举行!
    一场由于疫情推迟的庄重的并购仪式,一场由于疫情延误了三年的全公司周年聚会,终于在7月14日和15日,上海,东方中科并购北汇仪式暨北汇周年庆典,盛大举行了!并购是“新起点”,在新股东——东方中科支持下、新的战略规划指引下,北汇踏上“新征程”。来自东方中科的领导以及北汇信息全体员工,......
  • 真·随笔(三)《政治学通识》笔记
    读书太少了,还天天鉴证,没底子。看点东西充实一下。中国政治观:中国古代(孔子、韩非)、海国图志、孙中山、当代。孙:管理众人的事便是政治。孔子对曰:“政者,正也。子帅以正,孰敢不正?”……翻译成现代政治学语言,可以表述为“政府是社会的道德榜样”。借助这种视角,大家可以理解目前中国......
  • 跨学科通识
    1、熵与热力学1.1熵定义:热力学中表征物质状态的参量之一,用符号S表示,其物理意义是体系混乱程度的度量熵越大,意味着发生的可能性越大;而整个宇宙,自发地朝着可能性更大的方向,也就是熵更大的方向在发展,这就是熵增原理;封闭系统中,随着时间推移,熵会不断增加熵越小越好思想实验1、封......
  • 欢迎小北同学!加入北汇信息
       哈喽大家好,初次见面和大家自我介绍一下,我的名字叫小北同学,家人们都亲切的叫我小北,大家也可以这么叫我哦~ 名称由来:“北”贴合家庭名称-上海北汇信息科技有限公司,“北”也是我们大家庭的前辈齐聚一堂,共同奋斗之起始,“小北”寓意可爱活泼,“同学”则代表了我们家庭的积极进取......
  • CPU通识课启发我的内容—从晶体管到生态宇宙
    做CPU的理由①中国信息化生态的高额利润被国外厂商赚取②国外高端CPU有严重供应链风险,难以杜绝后面,受制于人(就有点像寄人篱下)③信息安全:国外产品往往不提供设计资料和源代码。使用过程中常出现后门和漏洞,重要信息数据有被窃取、泄露的风险④缺少CPU影响企业生产产品(如工业控制),......
  • MISRA C 2012标准学习与理解
    目录总览指示(Directives)实现编译和构建需求可追踪性代码设计规则(Rules)标准C环境未使用代码(Unusedcode)注释(Comments)字符集和词汇约定(Charactersetsandlexicalconventions)标识符类型(types)Literalsandconstants声明和定义(Declarationsanddefinitions)初始化(Initialization)......
  • ChatGPT 通识入门
    最近网络上对于ChatGPT的讨论热潮不断地膨胀,一个势必给整个人类社会带来新变革的科技和工具产生了。这个新的工具能够识别自然语言并能够理解上下文的语境,并能够具备人类思维的模型。但是ChatGPT到底是一个什么样的东西,能够给我们普通人或者特定工作岗位的人员带来什么样的帮......