当前位置: 首页 > news >正文

MISRA C++ 2023指南:您需要了解的一切

图片

MISRA C++ 2023可以帮助使用现代C++语言的组织开发安全关键型软件。使用新的MISRA标准,开发人员可以通过确保和记录其软件应用程序的MISRA合规性,满足IEC 6108或ISO 26262等功能安全标准给出的静态分析要求。

什么是MISRA C++2023?

以便使用C++17进行安全可靠的编程。这份已发布的文档是MISRA C++ 2023。

MISRA C++是一套编码指南,定义了在关键系统中使用的C++语言子集,以减少犯错的风险,最大限度地减少不合格程序的危险。

MISRA指南旨在确保软件的安全性和可靠性。此外,符合要求的程序可能以明确表明代码错误的方式编写,或者很可能被开发人员误解。MISRA 准则针对的就是这种情况。

图片

MISRA C++2023指南和规则

MISRA C++ 2023指南被归类为规则或指令。规则是那些包含合规和不合规完整定义的准则。对于指令,不可能提供执行合规性检查所需的完整描述,因为这取决于特定项目背景下的设计决策。

每项准则都归类为以下几类:

  • 强制性

  • 要求 

  • 建议                      

MISRA C++ 2023共包含179条指南、4项指令和175条规则,这些指南、指令和规则按照 C++ 标准的章节进行分组,包括以下内容:

  • 基本概念

  • 标准转换

  • 表达式

  • 语句

  • 特殊成员功能

  • 异常处理

其中一些规则来自AUTOSAR编码指南或旧的MISRA C++ 2008。然而,MISRA指南只关注实施,而AUTOSAR还提供了与设计、工具链基础设施或文档相关的建议。一般来说,MISRA C++ 2023以代码的语义为导向,避免错误,而不会提供太多的文体指导。

如何实现MISRA C++2023合规性

MISRA C++ 2023要求遵循MISRA合规性文件中定义的合规流程。这是MISRA C和MISRA C++标准之间共享的独立文档。最新版本于2020年发布,取代了2016年的早期版本。

MISRA合规性引入了一系列有关合规流程和报告的要求。它定义了期望作为合规性构件的特殊报告。

  • 指导方针实施计划是一份文件,其中规定了将用于执行方针的所有技术手段。

  • 指南重新分类计划是一份文件,描述了为特定项目引入的指南类别的所有变化。

  • 指南合规性摘要是一份记录每项指南合规水平的报告。

此外,"合规性 "文件还推荐了一套完整的偏差处理流程,其中包括对偏差记录的要求、偏差许可的使用以及可接受偏差的原因列表。

拥有一套标准化的要求来宣称项目符合MISRA,有助于团队确保适当的可信度,并有能力在集成多个模块时合并合规报告,前提是对每个模块都已执行MISRA C/C++代码检查

有些准则可以使用代码审查程序进行检查,尽管这样做会很麻烦。其他准则,特别是那些需要对整个系统进行分析的,包括需要对整套应用程序源代码执行数据和控制流分析的指南,实际上是无法手动检查的。因此,使用自动静态代码分析工具如Parasoft C/C++test是非常重要的,这些工具提供对MISRA C++ 2023的完整支持,可以根据MISRA指南分析代码并生成适当的合规性文档集。

结论

MISRA C++ 旨在提供c++语言的安全子集。这是通过对C++源代码的一些要求和限制来实现的,用来增强应用程序的安全性。

错误预防

C++标准将某些情况指定为未定义的行为,主要是为了允许编译器生成更高效的代码。编译器可以假设未定义的行为情况永远不会发生,并根据该假设执行额外的优化。这有风险,如果发生这种情况,程序的行为是不可预测的。在某些情况下,这意味着程序在运行测试时表现良好,并在生产中失败,这可能会导致整个验证过程徒劳无益。MISRA C++提供了直接或间接防止未定义行为的指南。一个示例案例是评估对象的不确定值,规则11.6.2保护该值不得在设置对象之前读取该对象的值

代码的可维护性

依赖于实现定义行为的程序可能很难移植到另一个目标。这种行为的一个例子是sizeof(int)它会影响算术运算的行为,例如在实际运算发生之前,所有类型较窄的操作数都被提升。这最终可能会导致算术运算的不同结果,具体取决于编译目标。MISRA C++指南在其标准转换规则中防止此类问题,例如:

  • 规则7.0.5积分提升和通常的算术转换不得更改操作数的签名或类型类别。

  • 规则7.0.6数字类型之间的分配应是适当的。

风险管理

MISRA指南还解决了开发人员对有效C++源代码的困惑或不正确理解造成的一类潜在风险。例如,if (x = y)是完全有效的C++,但很可能是输入错误的结果,其中意外使用了赋值运算符而不是相等运算符。规则8.18.2不应使用分配运算符的结果,确保此类代码将被报告和审查其正确性。

结论

功能安全标准要求使用一套合理的编码指南和安全语言子集是有原因的。可以声称符合MISRA C++ 2023的组织增强了其现代C++应用程序的安全性。

*联系我们,了解有关MISRA C++ 2023文档内容以及AUTOSAR和MISRA C++指南之间差异的更多详细信息,了解您的开发团队如何获得最广泛的MISRA覆盖范围。

电话:021-60932819

技术支持邮箱:info-china@parasoft.com

网站:www.parasoftchina.com

相关文章:

MISRA C++ 2023指南:您需要了解的一切

MISRA C 2023可以帮助使用现代C语言的组织开发安全关键型软件。使用新的MISRA标准,开发人员可以通过确保和记录其软件应用程序的MISRA合规性,满足IEC 6108或ISO 26262等功能安全标准给出的静态分析要求。 什么是MISRA C2023? 以便使用C17进行安全可靠…...

Vue:【亲测可用】父组件数组包对象,传给子组件对象,子组件修改属性(字段)后,父组件没有更新

场景&#xff1a;vue中父组件数组包对象&#xff0c;传给子组件对象&#xff0c;子组件修改属性&#xff08;字段&#xff09;后&#xff0c;父组件没有更新 代码&#xff1a; # 父组件 <div v-for"(object, name, index) in arr" :key"index"><…...

hbase学习十:客户端实现与Meta表解析

1、客户端实现 hbase社区的客户端一般是java客户端。 HBase也支持Shell交互式客户端。Shell客户端实质是用JRuby(用Java编写的Ruby解释器,方便Ruby脚本跑在JVM虚拟机上)脚本调用官方HBase客户端来实现的。因此,各种客户端的核心实现都在社区Java版本客户端上。 客户端访…...

《OpenScene: 3D Scene Understanding with Open Vocabularies》阅读笔记1

传统的3D场景理解方法依赖于带标签的3D数据集,用于训练一个模型以进行单一任务的监督学习。我们提出了OpenScene,一种替代方法,其中模型在CLIP特征空间中预测与文本和图像像素共同嵌入的3D场景点的密集特征。这种零样本方法实现了与任务无关的训练和开放词汇查询。例如,为了…...

数据结构 - Trie树(字符串统计、最大异或对)

文章目录 前言Part 1&#xff1a;Trie字符串统计1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 Part 2&#xff1a;最大异或对1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 前言 本篇博客将介绍Trie树的常见应用&#xff0c;包括&#xff1a;Trie…...

2. vue 工程创建

1. 基于 vite创建 官方文档: https://v3.cn.vuejs.org/guide/installation.html#vite vite官网: https://vitejs.cn 使用vite创建的优势&#xff1a; 开发环境中&#xff0c;无需打包操作&#xff0c;可快速的冷启动。轻量快速的热重载(HMR)。真正的按需编译&#xff0c;不再…...

2024绿色能源、城市规划与环境国际会议(ICGESCE 2024)

2024绿色能源、城市规划与环境国际会议(ICGESCE 2024) 一、【会议简介】 随着全球气候变化和环境问题日益严重&#xff0c;绿色能源和可持续发展已成为全球关注的焦点。本次会议旨在汇聚全球在绿色能源、城市规划与环境领域的专家、学者和实践者&#xff0c;共同探讨和分享关于…...

0门槛电子画册制作

​电子画册制作&#xff0c;门槛低至零&#xff0c;也可以制作出如此精美的电子画册吗&#xff1f;别担心&#xff0c;这个问题早已解决&#xff0c;今天就教你如何0门槛制作电子画册。 选择合适的企业宣传册制作软件&#xff0c;如FLBOOK在线制作电子杂志平台等。这个工具提供…...

C语言----冒泡排序进阶

冒泡排序大家应该到写过吧。但大家可能知道到的冒泡排序有两种方法。而我呢&#xff0c;最近学习到了另外一种方法&#xff0c;现在知道三种方法了。所以想与大家分享一下。但是缺点是第三种是第二种的自实现版。第一种就是我们平常写的普通冒泡排序。第二种就是qsort。第三种就…...

【机器学习】实验5,AAAI 会议论文聚类分析

本次实验以AAAI 2014会议论文数据为基础&#xff0c;要求实现或调用无监督聚类算法&#xff0c;了解聚类方法。 任务介绍 每年国际上召开的大大小小学术会议不计其数&#xff0c;发表了非常多的论文。在计算机领域的一些大型学术会议上&#xff0c;一次就可以发表涉及各个方向…...

安卓虚拟机ART和Dalvik

目录 一、JVM和Dalvik1.1 基于栈的虚拟机字节码指令执行过程 1.2 基于寄存器的虚拟机 二、ART与Dalvikdex2aotAndroid N的运作方式 三、总结 一、JVM和Dalvik Android应用程序运行在Dalvik/ART虚拟机&#xff0c;并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。 Dalvik…...

OPENWRT本地局域网模拟域名多IP

本地配置MINIO服务时&#xff0c;会遇到域名多IP的需求。当某一个节点失效时&#xff0c;可以通过域名访问平滑过渡到其它的节点继续服务。 【MINIO搭建过程略】 搭建完毕后&#xff0c;有4个节点&#xff0c;对应的docker搭建命令&#xff1a; docker run --nethost --rest…...

今日学习总结2024.3.2

最近的学习状态比较好&#xff0c;感觉非常享受知识进入脑子的过程&#xff0c;有点上头。 实验室一个星期唯一一天的假期周六&#xff0c;也就是今天&#xff0c;也完全不想放假出去玩啊&#xff0c;在实验室泡了一天。 很后悔之前胆小&#xff0c;没有提前投简历找实习&…...

Java虚拟机(JVM)从入门到实战【上】

Java虚拟机&#xff08;JVM&#xff09;从入门到实战【上】&#xff0c;涵盖类加载&#xff0c;双亲委派机制&#xff0c;垃圾回收器及算法等知识点&#xff0c;全系列6万字。 一、基础篇 P1 Java虚拟机导学课程 P2 初识JVM 什么是JVM Java Virtual Machine 是Java虚拟机。…...

SaaS 电商设计 (九) 动态化且易扩展的实现购物车底部弹层(附:一套普适的线上功能切量的发布方案)

目录 一.背景1.1 业务背景1.2 技术负债 二.技术目标三.方案设计3.1 解决移动端频繁发版3.1.1 场景分析3.1.2 技术方案 3.2 减少后端坏味道代码&无法灵活扩展问题3.2.1 通过抽象接口完成各自单独楼层渲染逻辑3.2.2 通过配置能力做到部分字段可配 四.升级上线(普适于高并发大…...

数据结构——lesson5栈和队列详解

hellohello~这里是土土数据结构学习笔记&#x1f973;&#x1f973; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1f4a5; 所属专栏&#xff1a;数据结构学习笔记 &#x1f4a5;对于顺序表链表有疑问的都可以在上面数据结构的专栏进行学习哦~感谢大家的观看与…...

使用rsync同步服务器和客户端的文件夹

使用rsync同步服务器和客户端的文件夹 实现目的实验准备实验操作步骤服务器操作关闭防火墙和SELINUX安装rsync修改服务器配置文件/etc/rsync.conf创建服务器备份文件的目录创建rsync系统运行的用户修改备份文件的所有者和所属组创建rsync.passwd启动rsync服务并进行验证 客户端…...

计算机网络|Socket

文章目录 Socket并发socket Socket Socket是一种工作在TCP/IP协议栈上的API。 端口用于区分不同应用&#xff0c;IP地址用于区分不同主机。 以下是某一个服务器的socket代码。 其中with是python中的一个语法糖&#xff0c;代表当代码块离开with时&#xff0c;自动对s进行销毁…...

Python 使用 MyHDL库 实现FPGA板卡仿真验证

要使用 Python 结合 MyHDL 库实现 FPGA 板卡的仿真验证&#xff0c;您可以利用 MyHDL 提供的硬件描述语言和仿真功能来进行 FPGA 设计的验证。下面我将为您介绍一个简单的示例&#xff0c;演示如何使用 MyHDL 库进行 FPGA 设计的仿真验证。 步骤概述 编写 MyHDL 硬件描述&…...

解决SpringBoot集成WebSocket打包失败问题

前言 这几天在一个SpringBoot项目中使用WebSocket来用作客服聊天以及上传文件功能,项目在写的时候,以及在idea中跑的时候都非常完美,结果一打成jar包是,报错.在网上查了报错原因,原来是自己导入的WebSocket的jar与SpringBoot内置tomcat中的WebSocket的jar冲突,需要在打包时把S…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...