MISRA全称是Motor Industry Software Reliability Association, 最早发布于1998年,现在最新的版本是MISRA 2012, 是评估软件质量常常参考的标准,各大软件评估工具,有的软件开发工具IDE也集成有MISRA,为了使软件更安全,MISRA组织花了大量时间和精力,MISRA标准的出版和推广是软件更加的安全和标准,尤其在汽车电子方面,MISRA规则似乎应用的很广。我们先来看看官方组织对MISRA的解释
MISRA规则有很多条,当然不是说你在设计的时候全部的规则都要遵守,MISRA允许可以背离有的原则,根据你的实际情况。MISRA所有的规则分为建议规则和强制规则,通常强制规则建议都遵守,那么有的人说了,这么多规则,我怎么记得住,没关系,不用死记硬背,在使用使用中慢慢熟悉,也可以在设计时候就打开MISRA检查,例如如果我们用IAR在设计代码的时候,可以打开MISRA规则校验,在工程项目上点右键选options->C/C++Compiler进行配置打开MISRA。
如果对MISRA完全没有一点概念,建议先浏览下MISRA的规则,选一两条来使能检查你的代码,如果一下全开的话,你的代码可能会检查出很多错误,你都傻了,例如可以先从简单的注释规则开始,例如MISRA的规则2.2和2.3规定
我们只使能这两条规则来跑一下原先没开MISRA能编译通过的工程
可以看到出现了很多违反规则被MISRA检查出来的错误,都是违反2.2注释规则
可以看到凡是用//进行注释的地方都报错,因为MISRA只允许用/* 开始注释,*/结束注释,且不允许注释嵌套。将注释改为/* */在编译,就会消除这个错误,
好了快快行动起来,从这个简单的点开始,使你的代码越来越靠近MISRA。