分享

代码审查检查表

 知行合一5000W 2023-07-18 发布于湖北

代码检查走查单,获取方式:评论区留言。

代码审查检查表
代码审查检查表

代码走查检查单

项目名称

XXXX项目

系统模块

一阶段代码走查

责任人

填写人

走查日期

2022/1/12

走查用时

1h

编号

问 题

结果

问题数量

备注

结构性问题

1

代码是否正确完整的实现了设计?

2

代码是否符合相关的编码标准?

3

代码结构是否适当,风格和格式是否保持一致?

3

对应的问题已经修改并提交GIT

4

代码中是否有没有被调用的或无用的程序,或没有被执行的代码?

5

代码中是否还有多余的桩程序或测试代码?

6

是否存在能被调用外部复用组件或库函数替代的代码?

7

有没有能被压缩成简单程序的程序块或重复的代码?

8

存储空间是否被有效利用?

9

数字和字符串常量是否用符号代替?

10

是否有过于复杂的模块需要重新构造或拆分成多个程序?

文档问题

1

代码是否已被用易于维护的注释方式清晰充分的文档化?

2

注释是否与代码协调一致?

变量问题

1

所有变量的命名是否清晰,一致并且有意义?

2

所有被赋值的变量赋值类型是否一致或有类型转换?

3

是否有冗余或无用的变量?

2

对应的问题已经修改并提交GIT

算法操作问题

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

在程序结束的时候所有的文件和设备是否都保持了正确的状态?

(请确保每个检查项全部检查,保证100%覆盖)

5

代码审查检查表

项目名称

XXX项目

系统模块

一阶段代码走查

责任人

填写人

走查日期

2022/1/12

走查用时

1h

编号

问 题

结果

问题数量

备注

变量,Auribute,和常量声明缺陷(VC)

1

变量和常量的命名是否与约定保持一致?

2

是否存在容易混淆的相似的变量和属性名?

1

对应的问题已经修改并提交GIT

3

变量和属性是否书写正确?

4

变量和属性是否被正确的初始化?

5

非局部变量是否能用局部变量替换?

6

所有的for循环的控制变量是否都在循环顶部被声明?

7

是否有应该命名为常量的文字常量?

8

变量和属性是否可以用常量替换?

9

属性是否可以用本地变量?

10

所有的属性是否都有正确的访问限制符(private,protected,public)?

11

是否有静态属性应该是非静态或vice-versa?

方法定义缺陷(FD)

1

方法名的描述方法是否与命名约定一致?

2

每个方法的参数值在使用之前是否都作了检查?

2

对应的问题已经修改并提交GIT

3

对于每一个方法,它是否都返回了正确的值?

4

每种方法是否都有正确的访问限制符(private, protected, public)?

5

静态方法是否应该为非静态或vice-versa?

类定义缺陷(CD)

1

每一个类是否都有正确的构造函数和析构函数?

2

在子类中是否有应该放到父类中的通用成员?

3

类的继承层次是否能被简化?

数据引用缺陷(DR)

1

对于每一个数组引用,下标值是否在定义的范围内?

1

对应的问题已经修改并提交GIT

2

对于对象和数组引用,是否组确定其值应为非空?

计算/数值缺陷(CN)

1

是否存在不同类型数据之间的混合计算?

2

在计算中是否存在上溢或下溢的可能?

3

关于数值计算的顺序和优先级的假设是否正确?

4

是否用了括号来避免模糊不清?

比较/关系缺陷(CR)

1

对每一个布尔测试,正确条件是否被检查?

2

比较操作符是否正确?

3

布尔表达式是否通过内部否定操作进行了简化

4

每个布尔表达式是否都正确?

5

比较操作是否存在不引人注意的副作用?

6

'&&'是否被不小心替换为''&'? ''||''是否被不小心替换为''|'?

流程控制缺陷(CF)

1

对于每一个循环:是否选用了最佳的循环结构?

2

所有的循环是否都能结束?

3

如果一个循环有多个出口,是否每个出口都有必要并且得到正确处理?

4

switch声明是否都有default条件?

5

是否所有的case-switch-break对应关系都已更正并加上批注?

6

是否named break叙述都跳到正确的地方?

7

循环和分支的嵌套是否过深?是否正确?

8

是否有if嵌套可以转换程switch嵌套?

9

空控制叙述是否都正确,并加上括号及批注?

10

所有的异常是否都得到了正确的处理

11

每一个方法在是否都结束?

输入输出缺陷(IO)

1

文件在被使用之前是否都被打开?

2

输入对象的属性是否与使用的文件一致?

3

文件在被使用之后是否都被关闭?

计算/数值缺陷(CN)

1

文本中是否有拼写和语法上的错误?

2

所有的I/O异常处理的是否合理?

模块间接口缺陷

1

方法调用的参数的数量,顺序,类型和值是否与该方法声明一致?

2

度量单位是否一致(如:公分 vs. 公尺)?

不适用

3

如果对象或数组被传递,它们是否改变?是否被调用方法正确改变?

不适用

注释缺陷(CM)

1

每一个方法,类和文件是否都有适当的头注释?

不适用

2

每一个属性,变量和常量的声明是否都有注释?

3

每个类和方法的潜在行为是否都有用简易的语言进行解释?

4

方法和类的头注释是否和它们的功能保持一致?

5

注释和代码是否保持一致?

6

注释对于理解代码是否有帮助?

7

代码中的注释是否充分?

8

代码中的注释是否过多?

布局和封包缺陷(LP)

1

代码布局格式和缩排标准是否前后一致?

2

对于每一个方法,它的代码量是否都不超过60行?

3

对于每一个编译模块,它的代码量是否都不超过600行?

模块性缺陷 (MO)

1

模块(方法,类)之间是否具有低偶合性?

2

每个模块(方法,类)自身是否具有高聚合性?

3

是否存在重复的代码,它的功能可以通过调用其它方法实现?

4

Java类库的使用是否适时适地?

存储器使用缺陷(SU)

1

数组是否足够大?

2

数组和对象不再使用之后,它们的引用是否被赋为空值?

性能缺陷 (PE) [可选]

1

是否有更好的数据结构和算法可以采用?

2

测试安排是否合理,使易于通过的且代价低廉的测试优先于代价较高且通过频率较低的测试?

3

是否可以通过对数值进行一次计算并将结果保存来减少对它重新计算带来的消耗?

4

每一个计算出并保存了的结果是否都被应用?

5

计算是否能被移到循环之外?

6

在循环内是否有不需要的测试?

7

短循环是否可以取消?

不适用

8

对同一个数据进行操作的两个循环是否可以合并成一个?

(请确保每个检查项全部检查,保证100%覆盖)

4

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多