JAVA代码审查检查表

合集下载

代码走查检查表

代码走查检查表
4
整个代码体系结构组合合理,分层清晰,代码之间功能划分明确
5
所有的接口模块化,尽量减少接口之间的耦合度,修改时尽量不影响其他代码模块
6
代码体系构架对空间和速度都已经进行考虑
7
数据库操作、IO操作等是否正确关闭资源。并且必须在try -catch-finally 的finally中关闭。
8
一个业务如果进行多次数据库更新、添加、删除是否正确添加事务。
代码走查检查表
评审日期:年 月 日
评审对象
作者
评审人
评审工作量
序号
检查项
评审意见
走查前准备
1
得到一份解释代码的最新的设计文档,作为代码走查的参考
2
代码都已提交 ,版本统一
程序结构组织
1
所有代码的结构清晰,具有良好的结构外观和整齐
2
所有的模块(函数和外部接口)定义清晰,模块分解清楚
3
所有的功能需求都明显的覆盖
1
类、方法、判断条件、循环、主要变量是否添加注释。
2
类名、方法名、变量名的命名是否规范。
3
有返回值的方法是否正确返回。Return语句应定义在方法结尾处。
4
源代码能够自我解释,每个人看到代码就能很快理解
5
解释不过于简单,解释说明代码功能,准确描述代码意义6所有的假Fra bibliotek和限制进行注解
7
长的控制体结束,进行注解
新增
all
孟洋涛、郑海焘
郑博
1.1
2012-5-28
根据各项目组评审出问题进行修改
all
孟洋涛
郑博
14
递归局限于一个函数
15
对接口的调用必须要有判断传入的参数不能为空和传入的参数正确。

代码审查单

代码审查单


要步骤?
是否违背了继承和组合的规则?
(1)若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而言都
有意义,则允许B继承A的功能和属性。

(2)若在逻辑上A是B的“一部分” (a part of),则不允许B从A派生,
而是要用A和其它东西组合出B。
每一个域在每一次使用前正确地初始化了吗? 是否忘记为数组和动态内存赋初值?(防止将未被初始化的内存作为右值使 用)
对屏幕输出操作,是否到达了最快的刷新速度?效率是否为最佳?需部分 刷新区域的地方是否进行了全部刷新?

有无可优化的程序块、函数或子程序等?

算法是否可以优化?

注释比例达到25%以上吗?

标号和子程序名符合代码的意义吗?

是否使用了GOTO语句?

是否使用了非通用的函数库?对于非标准的库是否提供了源程序?

测试和转移检 查
每个转移目标正确并至少执行一次吗?

三种情况(大于0,小于0,等于0)是否已全部测试?边界值是否进行了 测试?

循环语句是否有正常跳出循环的条件吗?是否会出现死循环?break和conti nue语句使用正确吗?

逻辑是否被最佳地编码?

提供的是一般的错误处理还是异常的例程?

性能检查
头文件是否使用了ifndef/define/endif预处理块?
程序结构和模块功能定义清楚吗?
编程风格检查 是否遵循该语言的指令编写格式?
注释的行数不少于代码总行数的1/5吗?
注释说明和代码功能一致吗?
错误处理分支信息表达清楚吗?
每一个模块单元的圈复杂度都小于10吗?

Java代码规范检查表范本

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()。应该将异常记入日志或者包装后向上层抛出。对于表现层页面,不应该出现程序异常,应该在捕获到异常后进行友好的提示。

代码检查表

代码检查表
初始化与存储类相一致
4
不存在相似的变量名
5Байду номын сангаас
6
7
8
9
10
控制流程检查
#
检查项
评审结果
是否适用
注释
1
每个循环都能正确终止
2
每个程序都按流程终止
3
不存在由于入口条件不满足而跳过循环体
4
可能的循环越界正确
5
不存在“仅差一个”的迭代错误
6
DO/END语句匹配
7
8
输入/输出检查
#
检查项
评审
结果
是否适用
注释
1
文件属性正确
4
是否有输入信息的合法性检查
5
没有遗漏某个功能
6
7
注:
也可针对实际情况对某语言进行评审(C、C++、Java…)
结果统计:是个;否个
2
OPEN语句正确
3
I/O语句符合格式规范
4
缓冲大小与记录大小相匹配
5
文件在使用前是否打开
6
文件在使用后是否关闭
7
文件结束条件是否被正确处理
8
是否处理了I/O错误
9
10
程序接口检查
#
检查项
评审
结果
是否适用
注释
1
形参的数量是否等于实参的数量
2
形参的属性是否与实参的属性相匹配
3
形参的量纲是否与实参的量纲相匹配
#
检查项
评审
结果
是否适用
注释
1
不存在非算术变量间的运算
2
不存在混合模式的运算
3

代码评审标准与结果

代码评审标准与结果
6
注释对于理解代码是否有帮助
7
代码中的注释是否充分
8
代码中的注释是否过多
布局/封装缺陷
1
代码布局风格和缩排标准是否前后一致并体现其逻辑结构
2
代码中是否存在已被注释且不再使用的代码
3
复杂程序是否合理地分解成多个子程序
4
每个方法的代码量是否都不超过60行
5
方法或类之间是否具有低耦合性
6
方法或类之间是否具有高内聚性
2
比较运算符是否正确
3
布尔表达式是否通过内部否定操作进行了简化
4
每个布尔表达式是否都正确
5
比较操作是否存在不引人注意的副作用
6
是否存在“&&”替换为“&”或“||”替换为“|”的情况
7
代码中是否避免了对浮点型数值的相等比较操作
流程控制缺陷
1
每个循环是否选用了最佳循环结构
2
所有的循环结束条件是否明显
3
6
注释对于理解代码是否有帮助
7
代码中的注释是否充分
8
代码中的注释是否过多
布局/封装缺陷
1
代码布局风格和缩排标准是否前后一致并体现其逻辑结构
2
代码中是否存在已被注释且不再使用的代码
3
复杂程序是否合理地分解成多个子程序
4
每个方法的代码量是否都不超过60行
5
方法或类之间是否具有低耦合性
6
方法或类之间是否具有高内聚性
7
是否存在重复代码且它的功能可以通过调用其他方法实现
8
方法参数数量是否控制在5个以内
性能/算法缺陷
1
是否存在更好的数据结构和算法可以采用

代码评审表模板

代码评审表模板

代码评审表模板代码码码码清;Code Checklist,版本,1.0码品/码目码名,称宅急送码品/码目名,称公共版本,号 1.0被码码人码字, 码码容,内___ ______码码人码字 ,___________ 码码日期, _ ____码明,码码清被码码码名模码名称码品名称码码码常码是否程序是否明地注码了其码码功能确注码格式是否正确程序码元是否承码一码码担码码程序是否合理地分解码子程序程序中接口定码是否明晰异常码理是否符合码范包名、码名命名是否符合码范方法名命名是否符合码范码量/常量是否相码系列码量是否码一集中明~自定码据码型码量是否码行了必要而充分的描述声数码量是否按相码码范码行了命名;有意码的命名、据码型的分等,数区码量是否按其命名含码承了码一的使用目的~必要码是否定码了码外码量担清晰码量引用是否正码码确常量是否使用getter/setter方法码码是否码用良好定码的枚码码型替代了码码的字符码码或布码码量使用UFBoolean是否使用UFBoolean构数构造函码行造码理可码String码是否未使用StringBuffer是否码先使用Java码准码提供的容器;ArrayList、HashSet、HashMap、LinkList,码理码序来码、集合、码码码合堆码码列构数码码的使用码景是否正数确码于public尽慎量码使用不同作用域码量名量不要相同称尽算法是否数构据码是否合理、精码算法是否可以立码码~是否据码和其他算法隔独与数离是否量避免了嵌套的用尽运码码码码是否码行了必要而充分的注码控制是否代码码行路是否径清晰Switch码句是否有缺省分支控制码码码码度是否合理~是否码行了必要而充分的注码每循码是否码码行了码一而明的功能个体确与数将数达常比码需要常放在比码表式的前面布局是否代码是否良好格式化能码其码码码并体构码码是否程序是否可码、可码展健并壮具码码码码是否已可能的“码藏”体尽是否码先使用接口而不是抽象码或具码体方法是否在参数5个内以方法用慎public修码符码于不需要子码重码的码量使用来尽final码象作用域是否码大效率是否尽内量不要在循码出码码程码用每码码码作码程码用次是否小于个数3次码程码用据码码是否有不必要的冗余据数数SQL是否Sql码句小写引用字符使用码引号码禁使用select * 形式的码句~必码指出具字段体码禁使用insert into table values;,~,~,,~必码指出具要码码的字段体避免码含的码型码码;不同据码型字段相加,数子码码前后必码加上括号避免在where使用’1=1’,’1=2’码码表方式作码部分件达条禁止使用码码禁止使用XX in () or XX in ()(in中的元素不码超码个数500)禁止使用or超码500个禁止使用not in~建码使用not exist禁止在一条sql码句中使用3码以上的嵌套如果有多表码接码~码码有主之分~量一表取从尽从个数Where子句码码件~索引列或码码码码最多的件码码放在前面条条字符串码接必码使用“||”Case when码句中只能出码=、>=、<=以及is null运算符左码接法必码码”写outer”码码字Sql中函是否在指定范码数内Join与on必码码格匹配码码码清码码描述码码修改日期修改日期码码人码字。

代码评审检查表

代码评审检查表

流程控制缺陷(CF) 流程控制缺陷(CF)
10 所有的异常是否都得到了正确的处理 11 每一个方法在是否都结束? 输入输出缺陷(IO) 输入输出缺陷(IO) 1 2 3 1 2 1 2 3 1 2 3 4 5 6 7 8 1 2 3 1 2 文件在被使用之前是否都被打开? 输入对象的属性是否与使用的文件一致? 文件在被使用之后是否都被关闭? 文本中是否有拼写和语法上的错误? 所有的I/O异常处理的是否合理? 方法调用的参数的数量,顺序,类型和值是否与该方法声明一致? 度量单位是否一致(如:公分 vs. 公尺)? 如果对象或数组被传递,它们是否改变?是否被调用方法正确改变? 每一个方法,类和文件是否都有适当的头注释? 每一个属性,变量和常量的声明是否都有注释? 每个类和方法的潜在行为是否都有用简易的语言进行解释? 方法和类的头注释是否和它们的功能保持一致? 注释和代码是否保持一致? 注释对于理解代码是否有帮助? 代码中的注释是否充分? 代码中的注释是否过多? 代码布局格式和缩排标准是否前后一致? 对于每一个方法,它的代码量是否都不超过60行? 对于每一个编译模块,它的代码量是否都不超过600行? 模块(方法,类)之间是否具有低偶合性? 每个模块(方法,类)自身是否具有高聚合性?
存储器使用缺陷(SU) 存储器使用缺陷(SU)
PE) [可选 可选] 性能缺陷 (PE) [可选]
其他 结论: 结论: 说 明: 明:
通过
有条件通过
不通过
CODE-CHECKLIST-YYYYMMDD
备注
版本:V1.1
检查日期 填写人 是 否 不适用 BUG数
属性是否可以用本地变量? 10 所有的属性是否都有正确的访问限制符 (private,protected,public)? 11 是否有静态属性应该是非静态或vice-versa? 方法定义缺陷(FD) 方法定义缺陷(FD) 1 2 3 4 5 1 2 3 1 2 1 2 3 4 1 2 3 4 方法名的描述方法是否与命名约定一致? 每个方法的参数值在使用之前是否都作了检查? 对于每一个方法,它是否都返回了正确的值? 每种方法是否都有正确的访问限制符(private, protected, public)? 静态方法是否应该为非静态或vice-versa? 每一个类是否都有正确的构造函数和析构函数? 在子类中是否有应该放到父类中的通用成员? 类的继承层次是否能被简化? 对于每一个数组引用,下标值是否在定义的范围内? 对于对象和数组引用,是否组确定其值应为非空? 是否存在不同类型数据之间的混合计算? 在计算中是否存在上溢或下溢的可能? 关于数值计算的顺序和优先级的假设是否正确? 是否用了括号来避免模糊不清? 对每一个布尔测试,正确条件是否被检查? 比较操作符是否正确? 布尔表达式是否通过内部否定操作进行了简化 每个布尔表达式是否都正确?

java代码检查表(很好的公司在用)

java代码检查表(很好的公司在用)
3.14.7不恰当的static变量
4.
代码优化
4.1同步方法的使用是否必要?同步代码块是否已粒度最小化?
4.2在不影响可读性和易维护性的前提下,对象是否可重复利用?如StringBuffer可以通过setLength(0)重复利用,无需每次重复创建新实例。
4.3是否有这样的代码:new String(””)?
2.2嵌套内部类是否超过2层?
2.3所有方法是抽象的且所有成员变量是静态常量的抽象类是否声明成了接口?
2.4当类所有的方法和属性都是静态的时,是否定义了缺省的私有构造方法?
2.5没有使用任何实例类成员(包括方法和成员变量)的方法是否被声明为静态的?
2.6异常发生时是否均恰当的记录了错误日志?是否存在使用System.out.println而不是日志模块记录日志的情况发生?
3.8克隆方法中是否调用了父克隆方法?克隆方法中是否避免了调用构造函数?
3.9使用ObjectStream后是否调用了reset()方法以避免内存泄漏?
3.10条件、循环中的判断边界值是否恰当?
3.11程序块的break、return、throw是否恰当?
3.12charAt()、数组下标、parseInt之类可能抛运行时异常的方法是否需要事先判断或事后catch?如需要,处理是否恰当?
代码走查检查表
项目名称:模块名称:版本号:
检查时间:检查员:
#
检查项
是/否
注释
1.
命名、注释及风格
1.1文件、类/接口、静态变量、成员变量、方法及关键代码是否都有格式良好、简明扼要、的注释?注释是否是对设计思路的说明而不仅仅是代码行为的描述?是否存在过时的注释或废代码注释?
1.2文件中各种段落布局是否合理、是否用恰当的空行分隔?代码的断行、对齐、缩进、空行是否恰当?
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
是[ ]否[ ]免[ ]
16
3.7折行是否恰当
是[ ]否[ ]免[ ]
17
4.1包含复合语ቤተ መጻሕፍቲ ባይዱ的{}是否成对出现并符合规范
是[ ]否[ ]免[ ]
18
4.2是否给单个的循环、条件语句也加了{}
是[ ]否[ ]免[ ]
19
4.3if/if-else/if-else if-else/do-while/switch-case语句的格式是否符合规范
是[ ]否[ ]免[ ]
30
5.5对数组的访问是否是安全的(合法的index取值为[0, MAX_SIZE-1])
是[ ]否[ ]免[ ]
31
5.6是否确认没有同名变量局部重复定义问题
是[ ]否[ ]免[ ]
32
5.7程序中是否只使用了简单的表达式
是[ ]否[ ]免[ ]
33
5.8是否已经用()使操作符优先级明确化
JAVA软件代码审查表(CHECKLIST)
执行情况
说明
1
1.1命名规则是否与所采用的规范保持一致
是[ ]否[ ]免[ ]
2
1.2是否遵循了最小长度最多信息原则
是[ ]否[ ]免[ ]
3
1.3has/can/is前缀的函数是否返回布尔型
是[ ]否[ ]免[ ]
4
2.1注释是否较清晰且必要
是[ ]否[ ]免[ ]
是[ ]否[ ]免[ ]
53
6.11是否确认在对Map对象使用迭代遍历过程中没有做增减元素操作
是[ ]否[ ]免[ ]
54
6.12线程处理函数循环内部是否有异常捕获处理,防止线程抛出异常而退出
是[ ]否[ ]免[ ]
55
6.13原子操作代码异常中断,使用的相关外部变量是否恢复先前状态
是[ ]否[ ]免[ ]
24
4.8单个函数不超过规定行数
是[ ]否[ ]免[ ]
25
4.9缩进层数是否不超过规定
是[ ]否[ ]免[ ]
26
5.1是否已经消除了所有警告
是[ ]否[ ]免[ ]
27
5.2常数变量是否声明为final
是[ ]否[ ]免[ ]
28
5.3对象使用前是否进行了检查
是[ ]否[ ]免[ ]
29
5.4局部对象变量使用后是否被复位为NULL
49
6.7关键代码是否做了捕获异常处理
是[ ]否[ ]免[ ]
50
6.8是否确保函数返回CORBA对象的任何一个属性都不能为null
是[ ]否[ ]免[ ]
51
6.9是否对方法返回值对象做了null检查,该返回值定义时是否被初始化
是[ ]否[ ]免[ ]
52
6.10是否对同步对象的遍历访问做了代码同步
是[ ]否[ ]免[ ]
34
5.9所有判断是否都使用了(常量==变量)的形式
是[ ]否[ ]免[ ]
35
5.10是否消除了流程悬挂
是[ ]否[ ]免[ ]
36
5.11是否每个if-else if-else语句都有最后一个else以确保处理了全集
是[ ]否[ ]免[ ]
37
5.12是否每个switch-case语句都有最后一个default以确保处理了全集
56
6.14函数对错误的处理是恰当的
是[ ]否[ ]免[ ]
57
7.1实现代码中是否消除了直接常量(用于计数起点的简单常数例外)
是[ ]否[ ]免[ ]
58
7.2是否消除了导致结构模糊的连续赋值(如a= (b=d+c ))
是[ ]否[ ]免[ ]
59
7.3是否每个return前都要有日志记录
是[ ]否[ ]免[ ]
是[ ]否[ ]免[ ]
38
5.13for循环是否都使用了包含下限不包含上限的形式(k=0; k<MAX)
是[ ]否[ ]免[ ]
39
5.14XML标记书写是否完整,字符串的拼写是否正确
是[ ]否[ ]免[ ]
40
5.15对于流操作代码的异常捕获是否有finally操作以关闭流对象
是[ ]否[ ]免[ ]
60
7.4是否有冗余判断语句(如:if (b) return true; else return false;)
是[ ]否[ ]免[ ]
61
7.5是否把方法中的重复代码抽象成私有函数
是[ ]否[ ]免[ ]
5
2.2复杂的分支流程是否已经被注释
是[ ]否[ ]免[ ]
6
2.3距离较远的}是否已经被注释
是[ ]否[ ]免[ ]
7
2.4非通用变量是否全部被注释
是[ ]否[ ]免[ ]
8
2.5函数是否已经有文档注释
是[ ]否[ ]免[ ]
9
2.6特殊用法是否被注释
是[ ]否[ ]免[ ]
10
3.1每行是否只声明了一个变量(特别是那些可能出错的类型)
45
6.3是否对有异常抛出的方法都执行了try...catch保护
是[ ]否[ ]免[ ]
46
6.4是否函数的所有分支都有返回值
是[ ]否[ ]免[ ]
47
6.5int的返回值是否合理(负值为失败,非负值成功)
是[ ]否[ ]免[ ]
48
6.6对于反复进行了int返回值判断是否定义了函数来处理
是[ ]否[ ]免[ ]
是[ ]否[ ]免[ ]
11
3.2变量是否已经在定义的同时初始化
是[ ]否[ ]免[ ]
12
3.3类属性是否都执行了初始化
是[ ]否[ ]免[ ]
13
3.4代码段落是否被合适地以空行分隔
是[ ]否[ ]免[ ]
14
3.5是否合理地使用了空格使程序更清晰
是[ ]否[ ]免[ ]
15
3.6代码行长度是否在要求之内
是[ ]否[ ]免[ ]
20
4.4单个变量是否只做单个用途
是[ ]否[ ]免[ ]
21
4.5单行是否只有单个功能(不要使用;进行多行合并)
是[ ]否[ ]免[ ]
22
4.6单个函数是否执行了单个功能并与其命名相符
是[ ]否[ ]免[ ]
23
4.7操作符++和--操作符的应用是否复合规范
是[ ]否[ ]免[ ]
41
5.16退出代码段时是否对临时对象做了释放处理
是[ ]否[ ]免[ ]
42
5.17对浮点数值的相等判断是否是恰当的(严禁使用==直接判断)
是[ ]否[ ]免[ ]
43
6.1入口对象是否都被进行了判断不为空
是[ ]否[ ]免[ ]
44
6.2入口数据的合法范围是否都被进行了判断(尤其是数组)
是[ ]否[ ]免[ ]
相关文档
最新文档