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