您好,欢迎访问三七文档
编号是否不适用BUG数123456789101212312123456781234567检查日期填写人项目名称文件编号、名称是否验证了导入的数据或输入的参数的正确性和完整性?所有的输出变量是否都被赋值?在每个声明中数据是否被正确操作?问题分配的内存空间是否都被释放?对于外部设备接入是否有超时设计或错误陷阱?在操作文件时是否判断了文件存在与否?索引,指针和下标是否经过了数组,记录或文件的边界测试在循环中的声明是否能放到循环之外?代码中的循环是否避免了对索引变量进行操作或依靠索引变量来退出循环?结构文档变量算法操作是否有过于复杂的模块需要重新构造或拆分成多个程序?代码是否已被用易于维护的注释方式清晰充分的文档化?所有被赋值的变量赋值类型是否一致或有类型转换?是否有冗余或无用的变量?防御性编程代码是否正确完整的实现了设计?代码是否符合相关的编码标准?代码结构是否适当,风格和格式是否保持一致?代码是否避免了对浮点型数值的相等比较操作?被除数是否做了零值测试和噪音测试?循环结束的条件是否明显并且总是可以达到?索引或下标在循环开始前被正确初始化?所有的循环,分支和逻辑构造是否完整,正确并且欠套适当?在IF-ELSEIF链中,最一般的状况是否最先被考虑到?所有可能的状况,包含ELSE语句或DEFAULT语句是否都被覆盖到IF--ELSEIF或CASE块中?每种状况是否都有缺省值?文件标识:[]-PR-CODE-CHECKLIST-YYYYMMDD数字和字符串常量是否用符号代替?循环和分支注释是否与代码协调一致?所有变量的命名是否清晰,一致并且有意义?代码评审检查表代码中是否有没有被调用的或无用的程序,或没有被执行的代码?代码中是否还有多余的桩程序或测试代码?是否存在能被调用外部复用组件或库函数替代的代码?有没有能被压缩成简单程序的程序块或重复的代码?存储空间是否被有效利用?编号是否不适用BUG数检查日期填写人项目名称文件编号、名称问题文件标识:[]-PR-CODE-CHECKLIST-YYYYMMDD代码评审检查表8结论:说明:在程序结束的时候所有的文件和设备是否都保持了正确的状态?其他通过有条件通过不通过备注结构文档变量算法操作防御性编程文件标识:[]-PR-CODE-CHECKLIST-YYYYMMDD循环和分支代码评审检查表备注文件标识:[]-PR-CODE-CHECKLIST-YYYYMMDD代码评审检查表版本:V1.1结论:编号是否不适用BUG数123456781234567123456123计算和数字缺陷(CN)123456对于每个函数,是否返回了正确的返回值?函数定义缺陷(FD)函数名称是否与命名约定保持一致?对于每个函数的所有参数,参数传递机制(值传递或引用传递)是否适合?变量是否书写正确?函数的参数是否被适当的定义为常值?函数的每个参数在使用之前是否被检查?C++代码评审检查表项目名称变量和常量的命名是否与约定保持一致?是否存在容易混淆的相似的变量名?检查日期文件编号、名称填写人文件标识:[]-PR-CODE-CHECKLIST-YYYYMMDD问题是否有文字常量应该被命名为常量?是否有需要定义为常量的宏?是否有需要定义为常量的变量?变量是否被正确的初始化?非局部变量是否能用局部变量替换?变量和常量声明缺陷(VC)默认的arguments能否用来代替重载?函数和操作符重载能否避免?每个类是否都有正确的构造函数和析构函数?每一个公共基类是否都有虚析构函数?每个在构造函数中分配空间的类是否都有复制构造函数?类定义缺陷(CD)对于每个类中的所有成员:是否能访问限制权限更高的成员?每个继承的类是否都有基类中的公共的成员?类的继承层级能否被简化?对每个数组引用:每个下标的值是否都在定义的范围内?数据引用缺陷(DR)对于每一个指针引用,是否应用了正确的Indirection级别?对于通过指针的引用,当前的引用空间是否被分配给适当的数据?是否存在混合数据类型的计算?在计算中是否会出现上溢或下溢?对于有多个操作符的表达式,关于计算顺序的假设和过程是否正确?是否有采用括号来避免模糊不清?==是否被误用为=对已每一个布尔变量的测试:正确的条件是否被检查?789101112131412345678123123412312345678是不是存在两个类型不一致的变量的比较?比较操作符是否正确?每个布尔表达式是否正确?比较操作是否存在不引人注意的副作用?在调用函数时,参数的数量,顺序类型和值是否和被调用函数的声明一致?度量单位是否一致(如:公分vs.公尺)?引用和值参数使用是否正确?如果参数通过引用传递,参数的值是否会变?是否被函数正确的改变?每一个函数,类和文件是否都有适当的头注释?每一个变量和常量的声明是否都有注释?每个类和函数的潜在行为是否都有用简易的语言进行解释?注释缺陷(CM)函数和类的头注释是否和它们的功能保持一致?注释和代码是否保持一致?注释对于理解代码是否有帮助?代码中的注释是否充分?代码中的注释是否过多?代码布局格式和缩排标准是否前后一致?布局和封包缺陷(LP)测试安排是否合理,使易于通过的且代价低廉的测试优先于代价较高且通过频率较低的测试?性能缺陷(PE)[可选]对于每一个函数,它的代码量是否都不超过60行?对于每一个编译模块,它的代码量是否都不超过600行?模块(函数,类)之间是否具有低偶合性?模块性缺陷(MO)每个模块(函数,类)自身是否具有高聚合性?是否存在重复的代码,它的功能可以通过调用其它函数实现?短循环是否可以取消?对同一个数据进行操作的两个循环是否可以合并成一个?库函数和预先定义的类使用是否在适时适地?静态分配内存是否足够?存储器使用缺陷(SU)计算是否能被移到循环之外?在循环内是否有不需要的测试?动态分配内存是否足够?动态分配的内存是否都被释放?释放的时间是否正确?对每个malloc是否都有free操作?对每个new是否都有delete操作?是否有更好的数据结构和算法可以采用?是否可以通过对数值进行一次计算并将结果保存来减少对它重新计算带来的消耗?每一个计算出并保存了的结果是否都被应用?910使用频率高的变量是否被声明为register型?较短并且要经常调用的函数是否被声明为inline型?说明:其他结论:通过有条件通过不通过备注函数定义缺陷(FD)C++代码评审检查表文件标识:[]-PR-CODE-CHECKLIST-YYYYMMDD变量和常量声明缺陷(VC)类定义缺陷(CD)数据引用缺陷(DR)注释缺陷(CM)布局和封包缺陷(LP)性能缺陷(PE)[可选]模块性缺陷(MO)存储器使用缺陷(SU)版本:V1.1结论:编号是否不适用BUG数1234567891011123451231212341234问题Java代码审查检查表项目名称每一个类是否都有正确的构造函数和析构函数?是否存在不同类型数据之间的混合计算?在计算中是否存在上溢或下溢的可能?关于数值计算的顺序和优先级的假设是否正确?是否用了括号来避免模糊不清?类的继承层次是否能被简化?类定义缺陷(CD)对于每一个数组引用,下标值是否在定义的范围内?对于对象和数组引用,是否组确定其值应为非空?对于每一个方法,它是否都返回了正确的值?每种方法是否都有正确的访问限制符(private,protected,public)?静态方法是否应该为非静态或vice-versa?在子类中是否有应该放到父类中的通用成员?变量,Auribute,和常量声明缺陷(VC)比较/关系缺陷(CR)计算/数值缺陷(CN)数据引用缺陷(DR)变量和常量的命名是否与约定保持一致?是否存在容易混淆的相似的变量和属性名?变量和属性是否书写正确?变量和属性是否被正确的初始化?非局部变量是否能用局部变量替换?所有的for循环的控制变量是否都在循环顶部被声明?是否有应该命名为常量的文字常量?变量和属性是否可以用常量替换?属性是否可以用本地变量?所有的属性是否都有正确的访问限制符(private,protected,public)?是否有静态属性应该是非静态或vice-versa?方法名的描述方法是否与命名约定一致?每个方法的参数值在使用之前是否都作了检查?方法定义缺陷(FD)对每一个布尔测试,正确条件是否被检查?比较操作符是否正确?布尔表达式是否通过内部否定操作进行了简化每个布尔表达式是否都正确?文件标识:[]-PR-CODE-CHECKLIST-YYYYMMDD检查日期文件编号、名称填写人561234567891011123121231234567812312模块性缺陷(MO)布局和封包缺陷(LP)注释缺陷(CM)模块间接口缺陷流程控制缺陷(CF)比较操作是否存在不引人注意的副作用?&&是否被不小心替换为''&?''||''是否被不小心替换为''|?对于每一个循环:是否选用了最佳的循环结构?所有的循环是否都能结束?如果一个循环有多个出口,是否每个出口都有必要并且得到正确处理?switch声明是否都有default条件?是否所有的case-switch-break对应关系都已更正并加上批注?是否namedbreak叙述都跳到正确的地方?循环和分支的嵌套是否过深?是否正确?是否有if嵌套可以转换程switch嵌套?空控制叙述是否都正确,并加上括号及批注?所有的异常是否都得到了正确的处理每一个方法在是否都结束?文件在被使用之前是否都被打开?输入输出缺陷(IO)输入对象的属性是否与使用的文件一致?文件在被使用之后是否都被关闭?文本中是否有拼写和语法上的错误?所有的I/O异常处理的是否合理?计算/数值缺陷(CN)方法调用的参数的数量,顺序,类型和值是否与该方法声明一致?度量单位是否一致(如:公分vs.公尺)?如果对象或数组被传递,它们是否改变?是否被调用方法正确改变?每一个方法,类和文件是否都有适当的头注释?每一个属性,变量和常量的声明是否都有注释?每个类和方法的潜在行为是否都有用简易的语言进行解释?方法和类的头注释是否和它们的功能保持一致?注释和代码是否保持一致?注释对于理解代码是否有帮助?代码中的注释是否充分?代码中的注释是否过多?代码布局格式和缩排标准是否前后一致?对于每一个方法,它的代码量是否都不超过60行?对于每一个编译模块,它的代码量是否都不超过600行?模块(方法,类)之间是否具有低偶合性?每个模块(方法,类)自身是否具有高聚合性?341212345678性能缺陷(PE)[可选]存储器使用缺陷(SU)是否存在重复的代码,它的功能可以通过调用其它方法实现?Java类库的使用是否适时适地?数组是否足够大?数组和对象不再使用之后,它们的引用是否被赋为空值?是否有更好的数据结构和算法可以采用?测试安排是否合理,使易于通过的且代价低廉的测试优先于代价较高且通过频率较低的测试?是否可以通过对数值进行一次计算并将结果保存来减少对它重新计算带来的消耗?每一个计算出并保存了的结果是否都被应用?计算是否能被移到循环之外?在循环内是否有不需要的测试?短循环是否可以取消?对同一个数据进行操作的两个循环是否可以合并成一个?说明:其他结论:通过有条件通过不通过备注Java代码审查检查表类定义缺陷(CD)变量,Auribute,和常量声明缺陷(VC)比较/关系缺陷(CR)计算/数值缺陷(CN)数据引用缺陷(DR)方法定义缺陷(FD)文件标识:[]-PR-CODE-CHECKLIST-YYYYMMDD模块性缺陷(MO)布局和封包缺陷(LP)注释缺陷(CM)模块间接口缺陷流程控制缺陷(CF)输入输出缺陷(IO)计算/数值缺陷(CN)版本:V1.1性能缺陷(PE)[可选]存储器使用缺陷(SU)结论:
本文标题:代码评审检查表
链接地址:https://www.777doc.com/doc-4139465 .html