1. 完整性检查(Completeness)
代码是否完全实现了设计文档中提出的功能需求;
代码是否已按照设计文档进行了集成和Debug;
代码是否已创建了需要的数据库,包括正确的初始化数据;
代码中是否存在任何没有定义或没有引用到的变量、常数或数据类型。
2. 一致性检查(Consistency)
代码的逻辑是否符合设计文档;
代码中使用的格式、符号、结构等风格是否保持一致。
3. 正确性检查(Correctness)
代码是否符合制定的标准;
所有的变量都被正确定义和使用;
所有的注释都是准确的;
所有的程序调用都使用了正确的参数个数。
4. 可修改性检查(Modifiability)
代码涉及到的常量是否易于修改(如使用配置、定义为类常量、使用专门的常量类等);
代码中是否包含了交叉说明或数据字典,以描述程序是如何对变量和常量进行访问的;
代码是否只有一个出口和一个入口(严重的异常处理除外)。
5. 可预测性检查(Predictability)
代码所用的开发语言是否具有定义良好的语法和语义;
是否代码避免了依赖于开发语言缺省提供的功能;
代码是否无意中陷入了死循环;
代码是否是否避免了无穷递归。
6. 健壮性检查(Robustness)
代码是否采取措施避免运行时错误(如数组边界溢出、被零除、值越界、堆栈溢出等)。
7. 结构性检查(Structuredness)
程序的每个功能是否都作为一个可辩识的代码块存在;
循环是否只有一个入口。
8. 可追溯性检查(Traceability)
代码是否对每个程序进行了唯一标识
是否有一个交叉引用的框架可以用来在代码和开发文档之间相互对应;
代码是否包括一个修订历史记录,记录中对代码的修改和原因都有记录;
是否所有的安全功能都有标识。
9. 可理解性检查(Understandability)
注释是否足够清晰的描述每个子程序;
是否使用到不明确或不必要的复杂代码,它们是否被清楚的注释;
使用一些统一的格式化技巧(如缩进、空白等)用来增强代码的清晰度;
是否在定义命名规则时采用了便于记忆,反映类型等方法;
每个变量都定义了合法的取值范围;
代码中的算法是否符合开发文档中描述的数学模型。
10.可验证性检查(Verifiability)
代码中的实现技术是否便于测试。
11.日志输出检查
对于长时间运行的代码,是否在开始、结束时加入了日志,复杂的和关键的地方是否加入了log.debug。
12.硬编码检查
在java文件里是不允许有硬编码的,硬编码要避免使用,如果使用,也要放到配置文件里,而不能放在java文件里。