代码检查的错误列表

o1.数据引用错误
n变量使用前是否赋值或初始化?

  容易引起变量使用错误,特别是对于指针或引用变量。

  在java中要求变量在使用前必须初始化。

n数组下标的范围和类型

  是否存在下标越界错误,下表类型是否为整型。

n通过指针引用的内存单元是否存在(虚调用)?

  如在函数返回局部变量的指针或引用时会产生虚调用错误。

n被引用的变量或内存的属性是否与编译器预期的一致?

  如A类型的指针或引用是否指向的是非A类型对象。

o2.数据声明错误
n是否所有变量都已声明?

  绝大多数编程语言要求变量先定义后使用,可保证变量使用的安全性。

n默认的属性(默认值)是否正确? 
n变量的初始化是否正确?变量的初始化是否与其存储空间的类型一致?
n是否每个变量都有正确的长度、类型和存储类别?
n是否存在相似名称的变量?
o3.运算错误
n是否存在非算术变量之间的运算?
n是否存在混合模式的运算?( int与float类型)
n是否存在不同字长变量之间的运算?(int与long类型)
n目标变量大小是否小于所赋值的大小?(精度损失或越界错误)
n中间结果是否上溢或下溢?
n是否存在除0错误?
n操作符的优先顺序是否正确?
n整数除法是否正确?(精度问题,如2*(i/2)==i)

int x =1;

int y =2;

float z = 0;

z = x/y;

System.out.println ("z = " z);

OUTPUT:

z = 0

o

o4.比较错误
n是否有不同类型数据的比较运算?(如日期与数字)
n是否有混合模式或不同长度数据的比较运算?
n比较运算符是否正确?(如至多、至少,不小于)
n布尔表达式(与、或、非)是否正确?
n比较运算符是否与布尔表达式相混合?(如2<i<10对吗?)
n是否存在浮点数的比较?
n优先顺序是否正确?(例如if((a==2) &&(b==2) || (c==3))
n布尔表达式的计算方式(例如 if((x==0 && (y/x)>z))
n
o5.控制流程错误
n是否所有循环都能终止?(循环结束条件是否能满足以及递归的终止条件是否能满足。)
n是否存在由于入口条件不满足而跳过循环体?(do-while循环)
n是否存在仅差一个的循环错误?(如for(int i=0;i<=10;i++){})
n程序结构中括号是否匹配、if,else是否匹配、do,while是否匹配、try,catch是否匹配等。

for (i==x ; i<=z; i++) {

...

}

while (NOTFOUND) {

...

}


o6.接口错误
n形参和实参的数量是否相等?
n形参的属性是否与实参的属性相匹配?
n形参的属性是否与实参的顺序相匹配?
n形参的单位是否和实参匹配?(属逻辑错误)
n是否改变了某个仅作为输入值的形参?(C++中的const关键字)
n全局变量的定义是否一致?
o7.输入输出错误
n文件属性是否正确?
n打开文件的语句是否正确?
n缓冲区、内存大小是否足够来保留程序将读取的文件?
n文件在使用前是否打开?
n文件在使用后是否关闭了?
n文件结束条件是否本正确处理?
n是否处理了IO错误?
n打印或输出的文本信息中是否存在拼写或语法错误?即输出结果正确性。

o8.其他检查
n是否存在未引用过的变量?
n每个变量的属性和赋予的默认值是否一致?
n编译通过的程序是否存在“警告”或“提示”信息?
n程序或模块是否对输入的合法性进行了检查?(如第一章中三角形例)
n程序是否遗漏了某个功能?

o代码走查和代码检查类似,都是以小组为单位进行代码阅读,是一系列规程和错误检查技术的集合。二者的过程大致相同,不同之处在于
n规程稍微不同
o走查会议期间,每个测试用例都在人们脑中推演,即把测试的数据沿着程序的逻辑结构走一遍,记录程序的状态供监视,很多错误是在向程序员提问的过程中发现的。
o其他与代码检查相同的地方
n参与者所持的态度同样非常关键
n代码走查也会带来同样的附带作用















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章