您的位置:首页 > 编程语言 > Java开发

转!!Java代码规范、格式化和checkstyle检查配置文档

2017-01-06 15:30 447 查看
为便于规范各位开发人员代码、提高代码质量,研发中心需要启动代码评审机制。为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模板。
Java代码规范、格式化和checkstyle检查配置文档下载地址:http://www.blogjava.net/Files/amigoxie/Java代码规范、格式化和checkstyle检查配置文档.rar

1、配置统一的编码模板

1.1 配置编码模板

在Eclipse或MyEclipse中点击Window -> Preferences菜单,点击左侧的“Java”->“Code Style”->“Code Templates”,界面如下图所示:
package cn.amigo.eip.common;
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.2//EN"
"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<module name="Checker">
<property name="severity" value="warning"/>
<module name="StrictDuplicateCode">
<property name="charset" value="utf-8" />
</module>

<module name="TreeWalker">
<!-- javadoc的检查 -->
<!-- 检查所有的interface和class -->
<module name="JavadocType" />

<!-- 命名方面的检查 -->
<!-- 局部的final变量,包括catch中的参数的检查 -->
<module name="LocalFinalVariableName" />
<!-- 局部的非final型的变量,包括catch中的参数的检查 -->
<module name="LocalVariableName" />
<!-- 包名的检查(只允许小写字母) -->
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
</module>
<!-- 仅仅是static型的变量(不包括static final型)的检查 -->
<module name="StaticVariableName" />
<!-- 类型(Class或Interface)名的检查 -->
<module name="TypeName" />
<!-- 非static型变量的检查 -->
<module name="MemberName" />
<!-- 方法名的检查 -->
<module name="MethodName" />
<!-- 方法的参数名 -->
<module name="ParameterName " />
<!-- 常量名的检查 -->
<module name="ConstantName" />
<!-- 没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 -->
<module name="UnusedImports" />

<!-- 长度方面的检查 -->
<!-- 文件长度不超过1500行 -->
<module name="FileLength">
<property name="max" value="1500" />
</module>
<!-- 每行不超过150个字-->
<module name="LineLength">
<property name="max" value="150" />
</module>
<!-- 方法不超过150行 -->
<module name="MethodLength">
<property name="tokens" value="METHOD_DEF" />
<property name="max" value="150" />
</module>
<!-- 方法的参数个数不超过5个。 并且不对构造方法进行检查-->
<module name="ParameterNumber">
<property name="max" value="5" />
<property name="tokens" value="METHOD_DEF" />
</module>

<!-- 空格检查 -->
<!-- 允许方法名后紧跟左边圆括号"(" -->
<module name="MethodParamPad" />
<!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 -->
<module name="TypecastParenPad" />

<!-- 关键字 -->
<!--
每个关键字都有正确的出现顺序。比如 public static final XXX 是对一个常量的声明。如果使用 static
public final 就是错误的
-->
<module name="ModifierOrder" />
<!-- 多余的关键字 -->
<module name="RedundantModifier" />

<!-- 对区域的检查 -->
<!-- 不能出现空白区域 -->
<module name="EmptyBlock" />
<!-- 所有区域都要使用大括号 -->
<module name="NeedBraces" />
<!-- 多余的括号 -->
<module name="AvoidNestedBlocks">
<property name="allowInSwitchCase" value="true" />
</module>

<!-- 编码方面的检查 -->
<!-- 不许出现空语句 -->
<module name="EmptyStatement" />
<!-- 不允许魔法数 -->
<module name="MagicNumber">
<property name="tokens" value="NUM_DOUBLE, NUM_INT" />
</module>
<!-- 多余的throw -->
<module name="RedundantThrows" />
<!-- String的比较不能用!= 和 == -->
<module name="StringLiteralEquality" />
<!-- if最多嵌套3层 -->
<module name="NestedIfDepth">
<property name="max" value="3" />
</module>
<!-- try最多被嵌套2层 -->
<module name="NestedTryDepth">
<property name="max" value="2" />
</module>
<!-- clone方法必须调用了super.clone() -->
<module name="SuperClone" />
<!-- finalize 必须调用了super.finalize() -->
<module name="SuperFinalize" />
<!-- 不能catch java.lang.Exception -->
<module name="IllegalCatch">
<property name="illegalClassNames" value="java.lang.Exception" />
</module>
<!-- 确保一个类有package声明 -->
<module name="PackageDeclaration" />
<!-- 一个方法中最多有3个return -->
<module name="ReturnCount">
<property name="max" value="3" />
<property name="format" value="^$" />
</module>
<!--
根据 Sun 编码规范, class 或 interface 中的顺序如下: 1.class 声明。首先是 public,
然后是protected , 然后是 package level (不包括access modifier ) 最后是private .
(多个class放在一个java文件中的情况) 2.变量声明。 首先是 public, 然后是protected然后是 package
level (不包括access modifier ) 最后是private . (多个class放在一个java文件中的情况)
3.构造函数 4.方法
-->
<module name="DeclarationOrder" />
<!-- 同一行不能有多个声明 -->
<module name="MultipleVariableDeclarations" />
<!-- 不必要的圆括号 -->
<module name="UnnecessaryParentheses" />

<!-- 杂项 -->
<!-- 禁止使用System.out.println -->
<module name="GenericIllegalRegexp">
<property name="format" value="System\.out\.println" />
<property name="ignoreComments" value="true" />
</module>
<!-- 检查并确保所有的常量中的L都是大写的。因为小写的字母l跟数字1太象了 -->
<module name="UpperEll" />
<!-- 检查数组类型的定义是String[] args,而不是String args[] -->
<module name="ArrayTypeStyle" />
<!-- 检查java代码的缩进 默认配置:基本缩进 4个空格,新行的大括号:0。新行的case 4个空格 -->
<module name="Indentation" />
</module>
</module>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: