代码静态测试 | MISRA是什么?如何使用它来改进嵌入式编码?

MISRA C是由汽车产业软件可靠性协会(Motor Industry Software Reliability Association)提出的C语言开发标准,目的是在增进嵌入式系统的安全性及可移植性。

一开始,MISRA C主要是针对汽车产业 ,发展过程中,其他产业也逐渐开始使用MISRA C,包括航空、电信、国防、医疗设备、铁路等领域。

阅读本文,您将了解到嵌入式编码的两种关键语言,以及如何通过MISRA来改进嵌入式编码。龙智作为DevSecOps研发安全运营一体化解决方案供应商、Perforce授权合作伙伴,持续关注静态测试领域动态与发展,为您提供功能安全和标准合规领先的静态代码分析器,并带来最新洞察与最佳实践参考。
在这里插入图片描述
嵌入式编码为安装在大型设备上的系统提供动力,比如汽车、飞机或医疗设备等,这些系统被设计来执行特定的专用功能。

每个专用功能都通过嵌入式编码实现的。这段代码必须是可靠且无错误的,因为任何漏洞都可能对嵌入式系统的安全性造成毁灭性后果。因此,应用编码标准(如MISRA)来确保代码的可靠性和质量是非常必要的。

本篇文章将解释如何使用MISRA改进嵌入式编码。

为什么可靠的代码对于嵌入式编码来说必不可少?

嵌入式软件赋能世界上最重要的系统。它被用于:

  • 人们每天驾驶的汽车
  • 维持生命的心脏监视器(和其他医疗设备)
  • 环绕世界飞行的飞机
  • 因此,编码错误是完全不允许发生的。

这就是为什么嵌入式编程需要遵守规则的原因——确保代码是安全、可靠且有保障的。而这些规则可能会根据所使用的编程语言而有所不同。

嵌入式编码和系统的2种关键编程语言

大多数嵌入式系统都是用C和C++编程的。

这是因为C和C++允许对硬件进行低级控制。C和C++支持嵌入式软件的复杂性。同时,使用这些语言可生成高效的代码。

另外,还因为程序员中有很大比例在使用C和C++,而且他们可以保持最佳性能——这对于嵌入式系统来说是关键。

如何使用MISRA进行嵌入式编码

许多嵌入式行业都有严格的安全合规规范,而这些规范往往需要使用编码标准。

嵌入式软件有几种不同的C和C++编码标准可供选择。MISRA® 是最值得信赖的编码标准之一。MISRA规则能够确保代码符合行业标准。它帮助您减少循环复杂性,并提高代码的质量。

下面是不同行业的开发人员如何使用MISRA提高代码质量的三个例子。

  1. MISRA帮助改善嵌入式汽车代码

汽车开发人员相信MISRA能够帮助他们确保代码变得更好。因为MISRA是汽车行业质量和合规性的基准。

“一个客观事实是,MISRA已经被公认为是基准,并已被整个日本汽车行业采用,覆盖从OEMS一直到芯片级的整个供应链。”
——Socionext 公司

ISO 26262合规性

汽车行业需要遵守ISO 26262这一功能安全标准。

ISO 26262对汽车安全完整性等级(ASIL) (A到d)有着严格的要求。它建议使用编码标准来确保符合ASIL,并强调了MISRA编码标准。

Protean Electric公司使用Helix QAC来应用MISRA C规则,这对他们遵守ISO 26262带来了很大的帮助。此外,Helix QAC能够发现其他工具遗漏的问题。因此,Protean不必担心出现误报。

稳定的代码质量

Delphi汽车公司也使用Helix QAC来应用MISRA C规则,帮助他们的开发人员采用最佳编码实践,并确保了无论个人经验如何,所有开发人员的代码质量都能始终如一。

2.MISRA提供更好的嵌入式铁路代码

铁路系统开发人员也信任MISRA能提供更好的代码。

“MISRA是显而易见的选择。它最初由汽车行业创建,是历史最悠久、最受尊敬的标准之一,并被多个安全相关市场广泛采用。” —— Viveris
Technologies

EN 50128合规性

铁路行业需要符合功能安全标准EN 50128。

EN 50128有五个软件安全完整性等级(SSIL),范围从SSIL0到SSIL4。为了符合所有SSIL的要求,推荐使用一个编码标准,但SSIL3和SSIL4是强制的。

该编码标准必须:

  • 防止使用未定义或未指定的行为
  • 防止程序员犯常见错误
  • 限制某些结构的使用
  • 消除潜在的歧义
  • 限制库的使用

MISRA满足这些要求,并帮助确保您的软件质量。

Viveris Technologies使用Helix QAC来应用MISRA规则,并满足EN 50128的合规性要求。这确保了他们的无人驾驶列车——里昂地铁是安全、可靠的。

准确的诊断

对于Viveris来说,准确的代码诊断与合规性同样重要。

通过使用Helix QAC,他们获得了比使用其他工具更好的MISRA C规则覆盖率。真正的问题被识别并修复。并且误报更少。

因此,他们的代码变得更好了,时间也得到了更好的利用。

  1. MISRA提供更好的嵌入式航空航天代码

航空航天开发人员也信赖MISRA可以提供更好的代码。

MISRA规则集来自一些世界领先的编码专家。它适用于(并被广泛采用)任务关键型和安全关键型行业——包括航空航天。

DO-178C合规性

航空航天业需要遵守功能安全标准DO-178C。

DO-178C包括从A到E的五个安全级别。遵守这些安全级别需要一个编码标准,例如MISRA。

Selex ES公司使用MISRA C++作为他们的编码标准,并确保MISRA符合Helix QAC。

确保质量——即使在自动生成的代码中

Selex ES还使用Helix QAC、MISRA C和C++ 规则来确保其嵌入式编程的质量。他们甚至在自动生成的代码上使用它。这意味着他们可以确保嵌入式软件的质量,并加快开发时间。

嵌入式编码如何实现MISRA合规性

为了符合MISRA编码标准,您需要应用MISRA规则。这可以在代码审查期间手动完成,或者可以使用静态代码分析器自动完成。

然而,并不是所有的静态代码分析器都是相同的。对于MISRA,不同工具的准确性有差别,而Helix QAC是MISRA C和C++最准确的静态分析器。

使用Helix QAC实现MISRA合规性的示例

观看这个小视频,您能了解到Helix QAC是如何使编码更容易符合MISRA C:2012。

视频指南:如何遵循MISRA C: 2021指南进行编码

作者简介:
在这里插入图片描述

理查德·贝莱尔斯(Richard Bellairs)
产品营销经理,Perforce

理查德·贝莱尔斯拥有超过20年的跨行业工作经验。在90年代和21世纪初,他在制造、国防、测试和测量行业担任电子和软件工程职位,之后转向产品管理和产品营销。现在,他支持Perforce市场领先的代码质量管理解决方案。理查德拥有谢菲尔德大学的电子工程学士学位和英国特许营销协会 (CIM) 的市场营销专业文凭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值