案例库 · 工程与运营 · 技术决策 · 1998–2004
MISRA C 将 C 编码规则转化为可检查的安全软件标准
MISRA C 的 1998 年规则子集使安全关键的 C 代码可检查;ISO 26262 和 AUTOSAR 现在引用它,静态分析器强制执行它。
MISRA Consortium
解法
随着汽车充满嵌入式软件,供应商需要一种方法保持 C 程序可靠。MISRA 项目始于 1990 年,MISRA C 的第一版出现在 1998 年:一套定义 C 安全子集的指南,最初针对汽车行业。
设计选择是可执行性。规则分为强制、必需或建议,并有文档化的偏差流程处理合理例外,因此合规声明是可审计的,而非空想。arXiv 调查将 MISRA C 描述为定义 C 语言子集的编码标准,最初针对汽车行业,但现在被所有开发安全或安保关键 C 软件的行业采用。
采用成为合同要求:ISO 26262(汽车功能安全标准)引用 MISRA C,AUTOSAR 要求 C 实现符合它;联合打击战斗机和 NASA 喷气推进实验室的编码标准基于早期版本。静态分析器将规则转化为自动检查。
生效的原因
- 定义的 C 子集消除了语言中最危险的角落
- 强制、必需和建议规则使合规可审计
- 静态分析器可以自动检查规则
- ISO 26262 和 AUTOSAR 引用它,使其成为合同要求
取得的成效有限的规则集使 C 代码可检查且安全聪明
可借鉴之处
当合规成为合同要求时,安全标准会传播:一个有限、可机械检查的规则集比模糊的最佳实践文章更容易执行。
后续进展
MISRA C:2012(2023 年修订)是当前版本,采用范围超出汽车行业,进入航空航天、医疗设备、电信、国防和铁路;每个主要静态分析供应商都提供 MISRA 检查。
资料来源
- MISRA C
- The MISRA C Coding Standard and its Role in the Development and Analysis of Safety- and Security-Critical Embedded Software
发现哪里写错了?告诉我们。