Misra现在更好,更容易使用PolySpace工具实现

Ram Cherukuri, Gary Ryu著

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

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

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

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

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

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

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

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

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

Polyspace®静态分析工具在这方面是独一无二的,它利用正式的方法来提供控制流和数据流的详尽分析,以帮助遵守所有静态强制规则。MISRA标准的2004版和2012版都有内置支持金宝app在Polyspace工具中,以及自动生成代码的子集(MISRA AC AGC)和定义标准的自定义子集的能力。如果您有兴趣了解关于这个主题的更多信息,以及Polyspace工具如何帮助遵守MISRA,您可以这样做联系作者

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