计算机科学

首页 > 计算机科学

MISRA C

2018-08-29 18:05:12     所属分类:计算机标准

MISRA C是由汽车产业软件可靠性协会英语Motor Industry Software Reliability Association(MISRA)提出的C语言开发标准。其目的是在增进嵌入式系统的安全性及可移植性。针对C++语言也有对应的标准MISRA C++。

MISRA C一开始主要是针对汽车产业[1] ,不过其他产业也逐渐开始使用MISRA C:包括航太、电信、国防、医疗设备、铁路等领域中都已有厂商使用MISRA C。[2][3]

MISRA C的第一版《Guidelines for the use of the C language in vehicle based software》是在1998年发行,一般称为MISRA-C:1998.[4]。MISRA-C:1998有127项规则,规则从1号编号到127号,其中有93项是强制要求,其余的34项是推荐使用的规则。

在2004年时发行了第二版的MISRA C的第一版《Guidelines for the use of the C language in critical systems》(或称作MISRA-C:2004),其中有许多重要建议事项的变更,其规则也重新编号。MISRA-C:2004有141项规则,其中121项是强制要求,其余的20项是推荐使用的规则。规则分为21类,从“开发环境”到“运行期错误”[5]

目录

  • 1 规则举例
  • 2 工具
  • 3 相关条目
  • 4 参考资料
  • 5 外部链接

规则举例

MISRA C的一些规则是针对运算符的限制,例如MISRA-C:2004的规则12.10为“不要使用逗号运算符”,也可以用其他方式达到一样的效果。

动态分配内存功能是C语言的一大特色,可以在运行期依实际需求用malloc分配内存,在不使用此内存时再用free归还,但许多问题也和未正确处理动态分配内存功能有关,例如MISRA-C:2004的规则20.4为“不能使用动态堆的内存分配”,限制malloc、free等程序的使用。

工具

有许多工具声称可以检查代码和MISRA规则相容性,不过MISRA没有相关认证的程序[6]。相关工具可以帮助使用者评估和比较检查的结果,也会提供一些可符合MISRA-C规定的指南。

大部分的规定可以用支援静态代码分析的工具检查,有些规定需要用支援动态代码分析的工具检查。

以下是一些可以配合MISRA C规则进行检查的工具:
  • Coverity英语Coverity[7]
  • GrammaTech英语GrammaTech
  • Klocwork英语Klocwork[8]
  • LDRA英语Liverpool Data Research Associates[9]
  • Parasoft英语Parasoft[10]
  • PC-Lint英语PC-Lint[11]
  • Polyspace[12]
  • QA-C英语QA-C[13]
  • Understand (软件)英语Understand (software)
以下是一些可以配合MISRA C规则进行检查的编译器:
  • Green Hills软件英语Green Hills Software[14]
  • IAR系统英语IAR Systems[15]

相关条目

  • 代码风格

参考资料

  1. ^ 确保嵌入式系统的网路安全性. 电子工程专辑. 2006-04-28 [2012-04-24] (中文). 
  2. ^ http://www.cosmicsoftware.com/misra.php
  3. ^ http://www.ldra.com/misrac.asp
  4. ^ A brief history of MISRA C
  5. ^ http://eetimes.com/discussion/beginner-s-corner/4023981/Introduction-to-MISRA-C Introduction-to-MISRA-C
  6. ^ faqs
  7. ^ The 5 Steps
  8. ^ MISRA Coding Standards
  9. ^ LDRA工具套件的MISRA-C: 2004验证 Archive.is的存档,存档日期2012-09-04
  10. ^ MISRA Compliance
  11. ^ PC-Lint
  12. ^ PolySpace announces MISRA compliance checker
  13. ^ QA·C
  14. ^ MISRA C Support
  15. ^ MISRA C. [2012-04-24]. (原始内容存档于2012-04-27). 

外部链接

  • MISRA 网站

上一篇:主机控制界面
下一篇:OPC UA
相关推荐