代码评审一般检查表
编号是否不适用BUG数
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
1
2
3
1
2
1
2
3
4
1
2
3
4
文件标识:[ ]-PR-CODE
检查日期文件编号、名称填写人对每一个布尔测试,正确条件是否被检查?比较操作符是否正确?布尔表达式是否通过内部否定操作进行了简化每个布尔表达式是否都正确?变量和属性是否可以用常量替换?属性是否可以用本地变量?所有的属性是否都有正确的访问限制符(private,protected,public)?是否有静态属性应该是非静态或vice-versa?方法名的描述方法是否与命名约定一致?每个方法的参数值在使用之前是否都作了检查?方法定义缺陷(FD)是否存在容易混淆的相似的变量和属性名?变量和属性是否书写正确?变量和属性是否被正确的初始化?非局部变量是否能用局部变量替换?所有的for循环的控制变量是否都在循环顶部被声明?是否有应该命名为常量的文字常量?对于每一个方法,它是否都返回了正确的值?每种方法是否都有正确的访问限制符(private, protected,public)?静态方法是否应该为非静态或vice-versa?在子类中是否有应该放到父类中的通用成员?变量,Auribute,和常量声明缺陷(VC)比较/关系缺陷(CR)计算/数值缺陷(CN)数据引用缺陷(DR)变量和常量的命名是否与约定保持一致?是否存在不同类型数据之间的混合计算?在计算中是否存在上溢或下溢的可能?关于数值计算的顺序和优先级的假设是否正确?是否用了括号来避免模糊不清?类的继承层次是否能被简化?类定义缺陷(CD)对于每一个数组引用,下标值是否在定义的范围内?对于对象和数组引用,是否组确定其值应为非空?问 题Java 代码审查检查表项目名称
每一个类是否都有正确的构造函数和析构函数?
5
6
1
2
3
4
5
6
7
8
9
10
11
1
2
3
1
2
1
2
3
1
2
3
4
5
6
7
8
1
2
3
1
2
对于每一个编译模块,它的代码量是否都不超过600行?
模块(方法,类)之间是否具有低偶合性?
每个模块(方法,类)自身是否具有高聚合性?
注释和代码是否保持一致?
注释对于理解代码是否有帮助?
代码中的注释是否充分?
代码中的注释是否过多?
代码布局格式和缩排标准是否前后一致?
对于每一个方法,它的代码量是否都不超过60行?
度量单位是否一致(如:公分 vs. 公尺)?
如果对象或数组被传递,它们是否改变?是否被调用方法正确改变?
每一个方法,类和文件是否都有适当的头注释?
每一个属性,变量和常量的声明是否都有注释?
每个类和方法的潜在行为是否都有用简易的语言进行解释?
方法和类的头注释是否和它们的功能保持一致?
输入对象的属性是否与使用的文件一致?
文件在被使用之后是否都被关闭?
文本中是否有拼写和语法上的错误?
所有的I/O异常处理的是否合理?
计算/数值缺陷(CN)
方法调用的参数的数量,顺序,类型和值是否与该方法声明一致?
循环和分支的嵌套是否过深?是否正确?
是否有if嵌套可以转换程switch嵌套?
空控制叙述是否都正确,并加上括号及批注?
所有的异常是否都得到了正确的处理
每一个方法在是否都结束?
文件在被使用之前是否都被打开?
输入输出缺陷(IO)
对于每一个循环:是否选用了最佳的循环结构?
所有的循环是否都能结束?
如果一个循环有多个出口,是否每个出口都有必要并且得到正确处理?
switch声明是否都有default条件?
是否所有的case-switch-break对应关系都已更正并加上批注?
是否named break叙述都跳到正确的地方?
比较操作是否存在不引人注意的副作用?
"&&"是否被不小心替换为''&"? ''||''是否被不小心替换为''|"?
流程控制缺陷(CF)
模块性缺陷 (MO)
布局和封包缺陷(LP)
注释缺陷(CM)
模块间接口缺陷
3
4
1
2
1
2
3
4
5
6
7
8
在循环内是否有不需要的测试?
短循环是否可以取消?
对同一个数据进行操作的两个循环是否可以合并成一个?
说 明:
其他
结论:
数组和对象不再使用之后,它们的引用是否被赋为空值?
是否有更好的数据结构和算法可以采用?
测试安排是否合理,使易于通过的且代价低廉的测试优先于代价较高
且通过频率较低的测试?
是否可以通过对数值进行一次计算并将结果保存来减少对它重新计算
带来的消耗?
每一个计算出并保存了的结果是否都被应用?
计算是否能被移到循环之外?
是否存在重复的代码,它的功能可以通过调用其它方法实现?
Java类库的使用是否适时适地?
数组是否足够大?
性能缺陷 (PE) [可选]
存储器使用缺陷(SU)
通过有条件通过不通过
备注
-CODE-CHECKLIST-YYYYMMDD
版本:V1.1
软件开发源代码评审审查清单模板
无效注释或代码是否已经删除?
√
源代码质量
所有函数的重要入参是否进行了 查所?有的变量是否都赋予初值?
有效
性
检
√ √
所有申请的资源是否都有释放?内存指针变
量释放后赋予了NULL值?
√
资源包括内存、广义文件、内核对象等。
线程(如果有)使用是否合理?
√
互斥锁(如果有)使用是否合理并不会出现 死锁?
重要功能调用是否判断了错误检查?并都错 误处理代码?
软件开发源代码审查内容清单
评审对象:
CCssIssueTokenCommonFunc
问题
是
总体
命名和排版是否遵照编码规范?
√
缺陷修改是否完全完成?
√
所有的代码是否风格保持一致?
√
注释
所有的注释是否是最新的?
√
所有的注释是清楚和正确?
√
所有异常处理代码是否都有注释?
√
每一功能目的是否都有注释?
√
是否按注释类型格式编写注释?
代码登记
文件名称 CssIssueTokenCommonFunc.h CssIssueTokenCommonFunc.cpp
评审次数 1
评审人
单
nFunc
否,指出问题所在 或解释理由
√
√
√ √ √ √ √ √
记
代码量(行)
代码量(K)
360
17.6
670
26
评审日期
评审结论 修改后重审
√
所有代码是否易懂?
√
循环嵌套和条件嵌套是否优化到最少?
√
存在无意义的代码?
逻辑
代码逻辑清楚,正确 业务逻辑正确
xx项目(软件)_日常管理_代码审查表(模板))
代码审查表
检查文件 审查代码行数 缺陷数 代码可读性
,评价标准为:优良中差。 评价标准为:优良中差。
代码正确性
代码提交பைடு நூலகம்志
备注
代码审查表
周期:20XX/XX/XX-20XX6/XX/XX 项目名称:XX项目 日期 20XX/XX/XX 20XX/XX/XX 20XX/XX/XX 20XX/XX/XX 20XX/XX/XX 工程师 张三 张三 张三 张三 张三 审查人员 李四 李四 李四 李四 李四 功能模块
备注: 1. 代码可读性:代码注释、文件名称(文件名或包名,作用描述),评价标准为:优良中差。 2. 代码正确性:是否符合设计、符合情景、合理、执行是否有误,评价标准为:优良中差。 3. 代码提交日志:编写提交信息日志,评价标准为:优良中差。 4. 缺陷数为注意事项中检查结果为“否”的数量
数据库设计评审检查表模板
检查项
表结构设计是否合理?(大小,包含内容)
不适 用
优秀
是否定义了技术与工作的标准?
是否有业务逻辑要在数据库中实现?实现是否合理?
该项工作的计划与实际成本是否合理? 该项工作的计划与实际进度是否合理?
合 格
不合 格
备注
数据库设计评审检查表 序号
1 2 3 4 5 6 7 8 9 10 11 12 13 建议: 数据库空间划分是否合理? 表间关系是否表示清晰? 是否存在冗余字段? 用户分配是否合理? 表名,字段名命名是否合理? 各字段数据类型设计是否合理? 是否需要使用SEQUENCE,PROCEDURE,TRIGGER,FUNCTION?使用是否合理? 代码表设计是否合理?是否标识清晰,简单易用?
Java代码规范检查表范本
78
编写代码前,先编写注释(可以认为是伪代码),先想后写。
推荐
79
使代码水平方向保持在一屏之内。
推荐
80
不要硬编码无意义的数字值,用常量代替。
推荐
81
不要硬编码字符串,使用常量代替。
推荐
82
避免使用出错代码作为返回值,尽量使用异常处理。
推荐
83
经常使用接口(interface)。
推荐
84
当需要构建一个长字符串时,用StringBuffer代替String。
强制
41
使用get / set对类属性进行访问,这是Java社区的核心编码规范。
强制
42
使用is前缀表示一个布尔变量和方法。
强制
43
在查询方法中应使用find作为前缀。
推荐
44
使用initialize做为对象初始化的方法前缀,也可以简写为init。
推荐
45
对于对象集合,变量名称应使用复数。
强制
46
对于抽象类,应该使用Abstract前缀,对于非抽象基类,可以使用Base前缀。
强制
64
使用@deprecated废弃方法,不要删掉它。
推荐
65
使用行末注释对深Байду номын сангаас嵌套代码进行注释。
推荐
66
所有变量都应该进行初始化。
强制
67
变量在使用前应进行合法性检查。
强制
68
静态变量和方法的使用应保证线程安全。
强制
69
所有异常应该被正确的处理,不应简单的吞掉异常或打印ex.printStackTrace()。应该将异常记入日志或者包装后向上层抛出。对于表现层页面,不应该出现程序异常,应该在捕获到异常后进行友好的提示。
源代码检查记录表
源代码检查记录表质量体系作业文件文件编号:______ 版本:______ 生效日期:______ 页码:______源代码检查记录表项目名称:________承建单位:________监理部门:________1.代码功能描述:2.代码质量检查:a。
是否符合《信息项目建设单位信息系统软件开发规范》文件命名规范符合□ 不符合,描述:________包命名规范:□ 符合□ 不符合,描述:________类和接口规范:□ 符合□ 不符合,描述:________变量命名规范:□ 符合□ 不符合,描述:________方法命名规范:□ 符合□ 不符合,描述:________编码规范:□ 符合□ 不符合,描述:________注释规范:□ 符合□ 不符合,描述:________SQL规范:□ 符合□ 不符合,描述:________b。
代码运行效率功能符合度:代码运行出错次数:响应时间:3.检查结论:专业监理工程师签字:________日期:________XXX日期:________这份文件是源代码检查记录表,用于记录软件开发过程中的代码质量检查情况。
其中,第一部分为代码功能描述,第二部分包括了代码质量检查和代码运行效率检查两个方面。
在代码质量检查中,我们要检查代码是否符合《信息项目建设单位信息系统软件开发规范》文件的命名规范,并描述其符合情况。
具体来说,我们需要检查包命名规范、类和接口规范、变量命名规范、方法命名规范、编码规范、注释规范和SQL规范等方面。
在代码运行效率检查中,我们需要记录功能符合度、代码运行出错次数和响应时间等指标。
最后,我们需要由专业监理工程师签字并记录日期。
软件设计与开发评审检查表
是否执行输入、输出、接口和结果的错误检查?
是否对所有错误情况都发出故意义的信息?
对特殊情况返回的代码是否和已规定的全局定义的返回代码相匹配?
是否考虑到意外事件?
易测性
是否可以对每个单元进行测试、演示、分析或检查来说明它们是满足需求的?
该套系统是否能用增量型的方法来集成和测试?
可追溯性
是否各部分的设计都能追溯到需求说明书的需求?
是否所有的设计决策都能追溯到本来拟定的权衡因素?
所继承设计的已知风险是否已拟定和分析?
具体设计检查表
Y: 是 TBD: 不拟定 N: 不是 NA:不合用
检查项
Y/TBD/N/NA
清楚性
所有单元或过程的目的是否都已文档化?
一致性
数据元素的命名和使用在整个单元和单元接口之间是否一致?
所有接口的设计是否互相一致并且和更高级别文档一致?
对的性
是否解决所有条件 (大于、等于、小于零、switch/case)? 是否存在解决“case not found”的条件?
是否对的地规定了分支(逻辑没有颠倒)?
数据使用
是否所有声明的数据都被实际使用到?
Y: 是 TBD: 不拟定 N: 不是 NA:不合用
备注
检查项
Y/TBD/N/NA
清楚性
系统的目的是否已定义?
是否对关键术语和缩略语进行定义和描述?
所使用的术语是否和用户/客户使用的一致?
需求的描述是否清楚, 不模糊?
是否有对整套系统进行功能概述?
是否已具体说明了软件环境 (共存的软件) 和硬件环境 (特定的配置)?
软件项目代码检查表
66
印。应该将异常记入日志或者包装后向上层抛出。对于 表现层页面,不应该出现程序异常,应该在捕获到异常
强制
后进行友好的提示。
67
对于静态方法,应该使用类名去使用,不应该用实例去 引用,主要是为了体现更多的语义。
强制
68
对一些基本数据类型和不太可能通过继承进行扩展的 类,应声明为readonly,提高效率。
强制
3
书写规范
修改源代码时,应尽量保持与所修改系统的编码风格保 持一致。
强制
4
命名规范 所有命名空间名称必须使用ESSE前缀。
强制
5
应该使用VS2005默认格式规范。
强制
6
一个C#源文件.cs应该只包含一个类,内嵌类和匿名类除 外。把所有枚举变量集中定义到同一个源文件中。
强制
7
命名空间的引用应该按照相关性进行分组。
28
进行外部访问。如果成员函数仅为自己和派生类使用, 强制
使用protected,如果仅仅为类本身访问,使用private。
29
命Байду номын сангаас空间应该使用Pascal命名方式,不要出现下划线等 符号,名词用有意义的缩写或者英文单词。
强制
30
所有类命名使用Pascal表示方式,使用名词组合。
强制
31
接口命名使用字母 “I” 加上 Pascal 形式的表示方式。
强制
15
循环变量应靠近循环体初始化。
强制
版本号:2 修订号:0
C#代码规范 缺陷描述
第1页 共6页
16
避免长的布尔表达式,应该换成多个更容易理解的表达 式。
强制
17
代码缩进,应该使用4个空格为一个单位进行缩进。
PPQA检查表-编码阶段活动和工作产品检查表
项目名称
项目ID
检查人
检查日期
序号
检查内容
检查结果
情况描述
01
编码是否满足规定的《编码规则》
是[ ]否[ ]
抽查结构、注释比例、goto语句、嵌套层次
02
编码实现的功能都进行了单元测试,
是[ ]否[ ]
04
单元测试完成后有正确、清楚的书面测试记录、报告
是[ ]否[ ]
05
单元测试符合《测试规范》的要求
是[ ]否[ ]
06
白盒测试时通过被测单元的全部原码。
是[ ]否[ ]
07
白盒测试时被测单元覆盖60%以上的路径。
是[ ]否[ ]
08
按照测试计划的要求执行了所有单元测试的测试用例。
是[ ]否[ ]
09
是否对测试的问题,在修改后进行再次测试
是[ ]否[ ]
10
当测试发现的问题不属于编码时,是否将测试结果报告相关人员
是[ ]否[ ]
11
编码提交前,经过授权人的批准
是[ ]否[ ]
12
编码的变更,符合《变更控制规程》
是[ ]否[ ]
13
对照《项目的生命周期模型》要求,确定需要进行里程碑评审
是[ ]否[ ]
14
在里程碑点,进行了里程碑评审。
是[ ]否[ ]
15
对里程碑评审中的问题,制定纠正措施,并跟踪直到关闭。
是[ ]否[ ]
16
里程碑评审时,计划的相关人员都参与了评审活动。
是[ ]否[ ]
17
保持《需求跟踪矩阵》中编码与设计和需求的一致性。
是[ ]否[ ]
代码检视checklist
描述 执行代码中不能出现中文 传入的参数一般需要做合法性校验 有返回值的函数一般需要做校验 变量未实例化就使用 业务异常处理与实际业务是否相符 模块之间需要的参数不符合业务需求或者参数不匹配 不允许空的语句块 比对转换模块的指令是否与机器人指令文档的要求符合 是否对全部指令进行转换 查看代码实现业务是否与实际业务相符 查看代码中日志消息等描述是否准确 查找无效方法,删除没有使用的方法 注释是否符合规范要求 查看代码中的变量,类等命名是否符合规范要求 查看代码中是否可以优化的部分,以简单优化为主 一般要求整个系统中,同一意义的变量命名唯一或者类似检查代码对正常业务是否已实现 检查代码对异常业务是否有处理 检查服务端接口与客户端接口是否一致,实现的业务 是否对应 所使用的参数或对象未做判断是否为空
编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
问题 中文问题 传入参数未校验 函数返回值未校验 变量未作实例化 业务异常处理错误 模块间参数不匹配 空的else,catch语句 指令转换模块是否转换符合要求 指令转换模块是否完整 业务是否符合要求 代码中消息输出是否准确 查找代码中的无效方法 查看注释是否规范 代码中命名是否符合规范 检查代码中是否可以优化 检查代码中同一意义的变量命名是否统一 检视代码是否实现了正常业务 检视代码是否对异常业务的处理 检视服务端与客户端接口与业务是否统一 空指针异常
C#代码规范检查表范本
XXXX企业有限公司-软件系统研发系列 1 C#代码规范检查表
项目名称 项目编号 检查人 检查日期 被检查人 检查内容 检查依据 检查类别 检查规模 检查耗时 规范编号 检查类别 检查项 级别 缺陷数量 缺陷描述
1 所有命名空间、类、接口、方法、属性、变量、参数均使用英文单词或易理解的缩写进行命名。 强制 2 对命名空间、类、接口、方法以及变量进行命名时,尽量使用贴近问题域的表意丰富的名称。 强制 3 修改源代码时,应尽量保持与所修改系统的编码风格保持一致。 强制 4 所有命名空间名称必须使用ESSE前缀。 强制 5 应该使用VS2005默认格式规范。 强制
6 一个C#源文件.cs应该只包含一个类,内嵌类和匿名类除外。把所有枚举变量集中定义到同一个源文件中。 强制 7 命名空间的引用应该按照相关性进行分组。 强制 8 类和接口中元素的布局顺序。 强制 XXXX企业有限公司-软件系统研发系列 2 9 变量声明,采用 camel 表示法,不要在一行声明多个变量。 强制
10 方法修饰关键字定义顺序。 强制 11 保证明确的类型转换,不要默认进行隐式类型转换。 强制 12 数组指示符紧跟类型变量。 强制
13 一个变量要代表独立的意思,不要在其生命周期赋予它不同的概念。 强制 14 仅仅循环控制变量才能出现在for()循环中。 强制 15 循环变量应靠近循环体初始化。 强制
16 避免长的布尔表达式,应该换成多个更容易理解的表达式。 强制 17 代码缩进,应该使用4个空格为一个单位进行缩进。 强制 18 条件语句的主要形式,即使单条语句,也要使用括号括起来。 强制 19 空循环体也要使用完整的{}块。 强制 20 switch语句的使用格式。 强制
21 try-catch使用格式。 强制
22 空格的使用。 强制 23 空格的使用。 强制 24 逻辑上紧密相关的代码块应该用一个空行分开。 强制 25 为了保证可读性,变量名应该左对齐。 推荐 26 提高代码可读性的排版。 推荐 XXXX企业有限公司-软件系统研发系列 3 27 三元条件运算符。 强制
