代码质量与安全 | 嵌入式开发中不得不说的编码标准——Barr-C

2023/11/30 9:02:30

来自Barr Group的编码标准Barr-C能够减少嵌入式软件中的bug,并引入风格指南(stylistic
guidelines),让维护、移植更简单。

本文将讲述开发人员如何使用Barr-C:1018来检测用C语言编译的固件中的错误,以及它如何与MISRA结合使用。

龙智作为DevSecOps研发安全运营一体化解决方案供应商、Perforce授权合作伙伴,持续关注代码质量与安全领域的动态与发展,为您提供功能安全和标准合规领先的静态代码分析解决方案与最佳实践参考。联系我们,立即了解C/C
++语言静态代码分析器Helix QAC如何帮您遵守Barr-C规则。

在这里插入图片描述

什么是Barr-C?

Barr-C是由Barr Group开发的嵌入式C语言编码标准,致力于减少固件中的bug数量,同时让嵌入式软件的维护、移植更简单。

BARR-C:2018指南分为两大类:

  • 第一类:处理语言的子集,例如避免使用特定的关键字(例如“register”或“continue”)和使用类似函数的宏。
  • 第二类:与编程风格相关(例如缩进和命名约定)。

第一类中的某些规则被标记为“0bug…句号(Zero Bugs…Period.)”。遵守这些规则有助于在第一时间防止bug。

为什么Barr-C很重要?

即使已经使用了正确的工具来识别缺陷和合规性问题,开发嵌入式软件依旧充满着挑战。

BARR-C:2018定义了一种风格,主要是为了尽量减少编码错误。因此,BARR-C:2018可以被视为C语言子集的第一步,适用于各种项目。

对于没有使用编码标准和静态分析的情况来说,采用BARR-C:2018会带来显著的进步。

如何实现Barr-C合规性?

要想符合BARR-C:2018,您必须强制执行所有规则。

检测不合规的代码有几种方法,例如使用非正式的代码审查或自动扫描。每条规则中都描述了建议的实施方法。标准中的许多规则都可以使用静态分析工具来进行自动检查,比如Helix QAC。

Barr-C与MISRA有何关系?

设计关键安全系统的开发人员都知道,要严格遵循MISRA C:2012指南,因为符合MISRA C:2012能确保嵌入式代码安全可靠。

BARR-C:2018不是为了与MISRA C:2012竞争而设计的,实际上,它们相容且互补。例如,某个项目使用MISRA C:2012,MISRA C给出的建议是采用和执行一致的编码(coding)风格,这就可以使用BARR-C:2018的某部分编程(programming)风格来满足。

同样的,一些关键项目可以先遵循Barr-C,然后顺利过渡到MISRA C。

为什么要使用Helix QAC来满足Barr-C合规性?

因为Helix QAC可以帮助您轻松遵守编码标准和指南,包括MISRA、Barr-C和其他功能安全标准。

作者简介:
在这里插入图片描述
吉尔·布里顿(Jill Britton)

合规总监,Perforce

吉尔·布里顿在多个行业拥有超过30年的嵌入式软件经验。她曾担任电信、汽车、国防和教育软件等领域企业的软件工程师和管理者。

吉尔现在是Perforce的合规总监,同时也是MISRA的委员会成员。吉尔拥有纽卡斯尔大学计算机科学和统计学学士学位,以及伦敦布鲁内尔大学计算机科学硕士学位。

文章来源:https://bit.ly/3DVYxoA


http://www.jnnr.cn/a/117528.html

相关文章

AI智能视频分析系统提升水泥厂安全监管解决方案

一、背景需求 随水泥行业智能化步伐持续加快,智能工厂对设备的点巡检管理、维护维修、资产管理、安全运行管理等也相应提出更高的要求,安全管理与智能视频监控系统的融合,更加不可或缺。 二、方案介绍 SkeyeVSS水泥厂AI智能分析解决方案通过…

基于JavaEE的数字迎新系统丨新生报到系统(Java+SSH)

目 录 摘 要 i ABSTRACT ii 1 绪论 1 1.1 课题研究的背景及意义 1 1.2 国内外研究现状 1 1.2.1 国内外手机系统现状 2 1.2.2 国内外手机应用程序现状 3 1.3 数字迎新系统开发前景 4 1.4本文结构 5 2 数字迎新系统技术概述 6 2.1 相关技术介绍 6 2.1.1 Struts简介 6 2.1.2 Hiber…

黑马点评第一个模块---短信登录实现

黑马点评–短信登录实现 实现流程图: 发送手机验证码代码实现: Overridepublic Result sendCode(String phone, HttpSession session) {//1.校验手机号if (RegexUtils.isPhoneInvalid(phone)){//2.如果不符合,返回错误信息return Result.fai…

【数据结构】链表OJ特别篇 —— 面试情景带你深度剖析 环形链表系列问题 复制带随机指针的链表

文章目录0. 前言1. 环形链表2. 环形链表延伸问题3. 环形链表 II4. 复制带随机指针的链表5. 结语0. 前言 Hello,大家好,我是anduin。这期的内容依然是链表OJ。但与前两期不同的是,这次我会模拟面试的情景,由浅入深,以生…

教你几招,快速实现Word转PDF操作

在平时的工作和学习中,我们经常会使用到Word和PDF这两种文档格式。Word可以随时随地进行编辑修改,但是PDF文件不行,因此PDF的稳定性较好。在日常的文件传输中,我们经常会将Word转为PDF,这样就不会出现格式、字体出现乱…

【python】程序员最浪漫的表白方式,将情书写在她的照片里

前言 大家早好、午好、晚好吖~ 这不光棍节快到了,表弟准备写一封情书给他的女神,想在光棍节之前脱单。 为了提高成功率,于是跑来找我给他参谋参谋,本来我是不想理他的。 不过谁让他是我表弟呢(请我洗jio)…

web前端期末大作业 html+css+javascript化妆品网页设计实例 企业网站制作

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

C++11并发编程——多线程

C11并发编程——多线程引言1线程库1.2构造函数和赋值1.2.1初始化构造函数和默认构造函数的使用1.2.2移动构造函数的使用1.3成员函数1.4拓展:.创建建线程,线程函数为类成员函数2.管理当前线程的函数(定义于命名空间 this_thread)3.…

再谈数据湖3.0:降本增效背后的创新原动力

前言:2022年3月 31 日,阿里云全球数据湖峰会上,阿里云从“湖管理、湖存储和湖计算“这三个方面,为观众带来了“数据湖 3.0” 的重磅升级方案。在时隔两百多天的云栖大会上,阿里云存储对数据湖的能力,进行了…

公众号题库调用方法使用

公众号题库调用方法使用 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(…

Java I/O(一)I/O概述

Java I/O 目录Java I/O1 I/O概述1.1 I/O的过程1.2 I/O的通信模型1.2.1 阻塞I/O模型1.2.2 非阻塞I/O模型1.2.3 多路复用I/O模型1.2.4 信号驱动I/O模型1.2.5 异步I/O模型1.2.5.1 异步非阻塞I/O1.2.5.2 异步阻塞I/O1 I/O概述 I/O有内存I/O,磁盘I/O,网络I/O…

BurpSuit详细安装教程(含有免费安装包)

目录 BurpSuit简介及其安装(2022.11.9) 1. BurpSuit的应用场景: 2.BurpSuit的安装和功能模块简介 BurpSuit简介及其安装(2022.11.9) BurpSuit是一款安全测试工具,web测试工具。 1. BurpSuit的应用场景&…

效精准统计客流量摄像头分析系统

为充分利用大数据分析,我打造了旅游产业运行监测管理服务平台,对旅游业相关主体依据搜集到的游客消费动向、旅游资源状况等数据进行量化分析,并及时调整、制定相应的策略,为游客提供更好的服务,也极大提升整体的管理效…

文档流下载——axios+fetch两种方式下载——技能提升

之前写过一篇关于 文档流下载的方法,当时是用的fetch,使用axios的并没有实现文档流的下载。 下载文档流文件——基础提升 链接:https://blog.csdn.net/yehaocheng520/article/details/122575003?ops_request_misc%257B%2522request%255Fid%…

level2行情接口十档行情快照如何去运用?

怎么看十档行情? 打开任意个股,在盘口即可查看买一到买十、卖一到卖十委托挂单情况。 使用Level 2 行情便可看到买卖十档报价,看得更多看得更远,主力动向尽收眼底。 下面给分享一下在level2行情接口的StockQuoteRecord&#xff08…

助力社区防疫,百数提供了一款管理系统模板

新型冠状病毒肺炎疫情给全球带来了严峻的挑战,再加上潜伏周期长、传播面广等特点,决定了防治工作从单方面的医疗救治转向以社区为载体的面源管控。因此,社区成为当前乃至未来较长时期内防疫工作的重要阵地。 通常情况下,社区防疫…

mysql实现一次将多条不同sql查询结果并封装到一个结果集

前言 最近遇到一个统计查询需求,要求一次性查询多个统计信息,其中两个查询信息不在一个表中,也没有业务关联,表中也没有做连接处理。不考虑产品设计是否合理,完全是实际需求如此,需要一次性查询出来返回给前…

表单嵌套表格,实现表格行内表单的校验

随着element ui的使用,很多业务场景的实现,往往需要多个组件嵌套使用来实现; 前段时间,为了实现表格中的每一行的数据进行校验的同时实现添加多个的需求; 初步想法 在每一行对应属性中嵌套表单实现逐个校验;但是由于数据量大大;一行需要展示的属性很多;以至于不得不使用表格…

论文精读:Swin Transformer V2: Scaling Up Capacity and Resolution

论文地址:https://arxiv.org/pdf/2111.09883.pdf 代码地址: GitHub - microsoft/Swin-Transformer: This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows". Abstract 本篇论文主要致力于解决大型…

jenkins打开html不显示样式问题(包含mac安装启动jenkins)

一、前言 自动化测试完成后生成的html自动化测试结果,在打开时发现样式丢失,解决该问题,下载Groovy插件,亲测有效(包含mac安装jenkins) 二、 在此之前先没有jenkins的小伙伴先安装一下jenkins(mac安装步骤) 如果已经安装jenkin…
最新文章