多语言展示
当前在线:1787今日阅读:103今日分享:49

MISRA C: 2004 软件静态测试(代码审查)规范

MISRA C: 2004网络上的资料较多,这里只整理了代码审查过程中的一种实践。MISRA C:2012的内容请参考其它系列经验。0MISRA C:2012 Dir­-1.1 1011 1031解析
工具/原料

MISRA C: 2004

背离的规则
1

2.2(强制) 源代码应该使用 /*…*/ 类型的注释 背离原因:在代码中大量使用了//类型的注释,S15项目选择背离,将作为后续开发的注释规范

2

5.5(建议) 具有静态存储期的对象或函数标识符不能重用背离原因:大量重用了i、j、temp这样的变量名,将作为后续软件开发建议性的命名规范(详细见变量命名规则)

3

5.7 (建议) 不能重用标识符名字背离原因:同5.5

4

6.3(建议) 应该使用指示了大小和符号的typedef以代替基本类型 背离原因:目前使用CodeWorriorIDE标准类型,以达到在不同版本开发环境的类型替代的统一

5

8.9(强制) 具有外部链接的标识符应该具有准确的外部定义 背离原因:实际已遵循本条规则,然而understand软件不识别条件编译的类型预定义

6

1. 14.7 (强制) 一个函数在其结尾应该有单一的退出点背离原因:本条规则主要针对有多个退出点的的函数,采取了背离方式。后续尝试降低函数的复杂度,可以作为一个可检查和实现的方法。

7

18.4 (强制) 不要使用联合背离原因:MISRA-C-: 2004规则描述,在使用CAN格式对变量进行封装处理不算背离规则END

编程规范修改举例
1

2.1(强制) 汇编语言应该被封装并隔离

2

5.4(强制) 标签tag名称必须是唯一的标识符

3

6.4(强制) 位域只能被定义为unsigned int或singed int类型

4

14.1 (强制) 不能有不可到达unreachable的代码

5

14.10 (强制) 所有的if ... else if结构应该由else子句结束

推荐信息