C代码评审检查列表

检查功能项

检查项描述

是否可以自动化检查

内存管理

1.指针在定义的时候必须初始化,如果未分配内存则置为NULL

2.指针指向的内存被释放时,指针必须置为NULL

3.在栈上禁止分配大块内存,应分配在堆上

4.内存是否进行了越界检查

5.进行访问数组时是否进行了越界检查

6.内存释放的参数中是否有nSize参数(非必须)

错误处理

1.错误码是否进行了处理,或者传递给上层函数处理

2.对正常情况不应该出现的错误码必须记日志

3.是否对错误路径进行跟踪处理

4.对传入函数的有效指针是否用assert进行检测

传入参数检查

1.函数传入指针其指向的内存在函数内未修改,应加const

2.函数参数传入的字符串或者常数,应在钱加const

跨平台代码检查

1.平台相关的数据类型是否写入了文件

2.禁止向一个文件直接读写一个结构

3.禁止利用和平台相关的函数

线程管理

1.会被多线程调用的代码是否线程安全

2.锁的设计是否高效并保证不会死锁

代码风格

1.是否出现神秘数字

2.代码注释是否符合doxygen语法

3.变量命名是否采取匈牙利命名法

4.宏定义是否采取了大写字母,宏的输入在计算时是否加括号

5.相关联的关键字和“{“和”}”要么处于同一行,要么处于同一列

6.在做函数返回值或者是字符比较时,需要把数字或者宏定义放在前面

7.未在实现它的c文件外被调用的函数,禁止将该函数的申明放在头文件中

8.变量是否为null判断,为了避免出错,建议"null==变量"

9.无重复代码,如果有重复代码,是否合并成一个函数

10.全局变量是否采用g_方式,比如g_szFileName表示全局的文件名

11.函数命名是否采取了小写字母+下划线+小写字母方式,比如open_file();

12.对于复杂函数是否采取分割的策略

13.变量在使用时是否赋初值,内存在使用时是否被初始化

代码注释

1.是否为函数(方法)添加了标准的注释

2.对于判断语句(超过10行),要说明判断的条件和程序的走向

3.对于循环语句(超过20行,如while,do while,for),要说明循环继续和终止的条件

4.对全局变量以及结构体、联合体进行注释,说明数据共享的含义

测试用例

1.逻辑上是否完全覆盖

2.边界值和典型值是否测试

3.测试数据是否具有代表性


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值