MISRA现在更好,更容易实现与Polyspace工具

MISRA标准编码规则的最新版本是MISRA C:2012,在MISRA C:2004的基础上,MISRA C:2004在嵌入式系统的软件社区中被广泛采用。

简而言之,MISRA编码规则定义了C语言的一个子集,它对嵌入式系统编程是可靠的。遵循该标准最初是由认证需求驱动的,但是现在该标准已经被广泛接受,因为它有助于降低开发复杂软件时的责任和风险。

MISRA C:2004指南是基于当时流行的C编程语言的C90版本。但是,自2004年标准发布以来,已经发生了很多变化。我们现在有了新的C99和C11版本,它们用新的特性扩展了C语言。

MISRA C:2004标准甚至禁止了C90版本的一些有用特性,这些特性使开发人员能够编写更简单、更有效的代码。虽然这有助于防止不可靠或不安全的编程结构,但它往往过于严格。

MISRA C:2004 Rule 17.4就是一个很好的例子,这是一个必需的规则,它将数组索引限制为指针算术的唯一形式。这就意味着使用了算术指针++- -操作人员违反了标准。新的MISRA C:2012标准将其变成了一个咨询规则,并放宽了规则,允许使用++- -运营商在指针。

MISRA C:2004规则17.4限制指针算法为数组索引。
MISRA C:2012删除了指针算术的限制,并且没有违反编码规则。

因此,MISRA C:2012年通过以下措施解决了其中一些关键问题:

  • 金宝app支持C99的新版本和C90的新版本
  • 为所有编码规则提供详细的基本原理
  • 更正2004版本中的问题
  • 将2004标准中的某些规则转变为指令,这些规则不是静态强制执行的(使自动化静态分析工具更容易检查遵从性)

新标准还将某些规则归类为不可判定的,因为许多静态分析工具在分析数据流时存在不足,导致大量的误报和误报。

Polyspace®静态分析工具在这方面是独一无二的,它利用正式的方法来提供详尽的控制流和数据流分析,以帮助遵守所有静态强制执行的规则。2004年和2012年版本的MISRA标准都有内置支持金宝app在Polyspace工具中,以及自动生成代码的子集(MISRA AC AGC)和定义标准的自定义子集的能力。

提示:MISRA C:2012附录1也已在MISRA网站上提供,其中包含规则映射,以帮助用户从2004年版本迁移到2012年版本。它提供了MISRA C:2004和MISRA C:2012之间的双向规则映射。