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

作者:Ram Cherukuri, Gary Ryu

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:2012消除了对指针运算的限制,并且没有违反编码规则。

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

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

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

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

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