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 Rule 17.4将指针算术限制为数组索引。
MISRA C:2004 Rule 17.4将指针算术限制为数组索引。
MISRA C:2012取消了对指针算术的限制,并且没有违反编码规则。
MISRA C:2012取消了对指针算术的限制,并且没有违反编码规则。

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

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

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

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

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