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

2025-05-12 00:30:42

MISRA C: 2004网络上的资料较多,这里只整理了代码审查过程中的一种实践。MISRA C:2012的内容请参考其它系列经验。

工具/原料

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格式对变量进行封装处理不算背离规则

编程规范修改举例

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

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

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

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

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

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

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

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

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

MISRA C: 2004 软件静态测试(代码审查)规范
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢