代码静态测试 | 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) 的市场营销专业文凭。
如需进一步了解静态测试工具 Helix QAC 是如何帮助您遵从 MISRA 标准,请联系Perforce中国授权合作伙伴——龙智:
官网:www.shdsd.com
电话:400-666-7732
邮箱:marketing@shdsd.com
评论