-
数据引用错误
- 是否有变量使用前未赋值或初始化
- 下标值是否越界(上越界,下越界)
- 是否有非整数下标
- 是否有虚调用(悬挂指针,没有内存空间)
- 当使用别名时,属性是否正确
- 记录和结构的属性是否匹配(存储形式)
- 是否计算位串地址,是否传递位串参数(字节边界)
- 基础存储属性是否正确
- 跨过程的结构定义是否匹配(多过程,多子程序使用中)
- 索引或下标是否有“仅差一个”的错误
- 继承需求是否满足
-
运算错误
- 是否有非运算变量间的运算(数组,字符串)
- 是否有混合模式的运算(类型不同)
- 是否存在不同字长变量间的运算
- 目标变量大小是否小于赋值大小(空间不足)
- 中间结果是否上溢或下溢
- 是否除零
- 是否存在二进制不精确度(3.14*100=314?)
- 变量值是否超过有意义范围
- 操作符优先顺序是否正确
- 整数除法是否正确((n/2)*2 = n ?, n为偶数成立,n为奇数不成立)
-
数据声明错误
- 是否所有变量已声明
- 默认属性是否正确理解
- 数组和字符串初始化是否正确
- 变量是否赋予正确长度,类型,存储类型
- 初始化是否与存储类一致
- 是否有相似变量名(num与nums)
-
输入输出错误
- 文件属性是否正确
- OPEN语句是否正确
- I/O语句是否规范
- 缓冲大小与记录大小是否匹配
- 文件在使用前是否打开
- 文件在使用后是否关闭
- 文件结束条件是否正确处理
- 是否处理I/O错误
- 输出结果中是否有文字或语法错误
-
控制流程错误
- 是否有多条分支路径
- 是否每个循环都终止
- 是否每个程序都终止
- 是否存在由于入口条件不满足而跳过循环的情况
- 可能的循环越界是否正确
- 是否存在“仅差一个”迭代错误(除(i=0; i<n; i++)外的都有嫌疑)
-
比较错误
- 是否存在不同类型变量比较(string与指针,日期与数字)
- 是否有混合模式比较
- 比较运算符是否正确(“至多”、“至少”、“大于”、“不小于”、“等于”)
- 布尔表达式是否正确(&&、||、!)
- 比较运算符和布尔表达式是否混合(10<x<20→(0/1) < 20)
- 是否存在二进制小数比较
- 操作符优先顺序是否正确
- 编译器是否对布尔表达式计算方式正确(if(x==0 && (y/x)>z),注意有些与两边都计算,出现除零)
-
接口错误
- 形参与实参数量是否匹配
- 形参与实参属性是否匹配
- 形参与实参量纲是否匹配
- 形参与实参个数是否匹配
- 形参与实参顺序是否匹配
- 全局变量定义在模块中是否一致
- 常数是否以实参形式传递
-
其它检查
- 交叉应用列表中是否有未引用过的变量
- 是否有“警告”和“提示”信息(处理之)
- 是否对输入的合法性进行了检查
- 是否遗漏了功能