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

MISRA标准编码规则的最新版本是MISRA C:2012,它继承了MISRA C:2004,该版本已在嵌入式系统的软件社区中广泛采用。世界杯预选赛小组名单

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

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

甚至C90版本中一些帮助开发人员编写更简单、更高效代码的有用特性也被MISRA C:2004标准所禁止。尽管这有助于防止不可靠或不安全的编程结构,但它往往限制过多。

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

MISRA C:2004规则17.4限制指针算术用于数组索引。
MISRA C:2004规则17.4限制指针算术用于数组索引。
MISRA C:2012消除了对指针算术的限制,没有违反编码规则。
MISRA C:2012消除了对指针算术的限制,没有违反编码规则。

因此MISRA C:2012通过以下方式解决了一些关键问题:

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

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

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

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

Baidu
map