写点什么

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

  • 2022-10-17
    上海
  • 本文字数:2509 字

    阅读完需:约 1 分钟

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


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


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


阅读本文,您将了解到嵌入式编码的两种关键语言,以及如何通过 MISRA 来改进嵌入式编码。龙智作为 DevSecOps 研发安全运营一体化解决方案供应商、Perforce 授权合作伙伴,持续关注静态测试领域动态与发展,为您提供功能安全和标准合规领先的静态代码分析器,并带来最新洞察与最佳实践参考。联系我们,立即了解 C/C ++语言最佳静态代码分析器Helix QAC如何帮您实现自动化应用 MISRA 规则。


嵌入式编码为安装在大型设备上的系统提供动力,比如汽车、飞机或医疗设备等,这些系统被设计来执行特定的专用功能。


每个专用功能都通过嵌入式编码实现的。这段代码必须是可靠且无错误的,因为任何漏洞都可能对嵌入式系统的安全性造成毁灭性后果。因此,应用编码标准(如 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 规则覆盖率。真正的问题被识别并修复。并且误报更少。


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


3. 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。


作者简介:



理查德·贝莱尔斯(Richard Bellairs)

产品营销经理,Perforce


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


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


如需进一步了解静态测试工具 Helix QAC 是如何帮助您遵从 MISRA 标准,请联系Perforce中国授权合作伙伴——龙智

官网:www.shdsd.com

电话:400-666-7732

邮箱:marketing@shdsd.com

用户头像

还未添加个人签名 2021-05-18 加入

分享DevSecOps解决方案最新动态,帮助您学习与使用Atlassian, Perforce, Whitesource, Cloudbees及龙智自研产品,实现软件研发的高度协同与自动化,提高交付效率与质量,并确保开发过程可追溯、可度量。

评论

发布
暂无评论
代码静态测试 | MISRA是什么?如何使用它来改进嵌入式编码?_c_龙智—DevSecOps解决方案_InfoQ写作社区