静态代码测试 | MISRA是什么?如何使用它来改进嵌入式编码?
来源:Perforce 作者:龙智 发布时间:2022-10-14
一开始,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合规性
作者简介:
理查德·贝莱尔斯(Richard Bellairs)
产品营销经理,Perforce
理查德·贝莱尔斯拥有超过20年的跨行业工作经验。在90年代和21世纪初,他在制造、国防、测试和测量行业担任电子和软件工程职位,之后转向产品管理和产品营销。现在,他支持Perforce市场领先的代码质量管理解决方案。理查德拥有谢菲尔德大学的电子工程学士学位和英国特许营销协会 (CIM) 的市场营销专业文凭。
文章来源:https://bit.ly/3S283KP