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 Rule 17.4,这是一个必须的规则,它限制数组索引作为指针算术的唯一形式。这意味着使用指针进行算术运算++- -操作人员违反了标准。新的MISRA C:2012标准将其转变为一项咨询规则,并放宽了该规则,允许使用++- -运营商在指针。

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

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

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

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

多空间®静力分析在这方面,工具是独一无二的,它利用形式化方法提供对控制流和数据流的详尽分析,以帮助遵守所有静态可执行的规则。2004年和2012年版本的MISRA标准内置支架万博1manbetx在Polyspace工具中,以及自动生成代码的子集(MISRA AC AGC)和定义标准自定义子集的能力。如果您有兴趣了解有关此主题的更多信息以及Polyspace工具如何帮助遵守MISRA,您可以联系作者.

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