一个完整的checkstyle规范

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
  <!--
  This configuration file was written by the eclipse-cs plugin configuration editor
  -->
  <!--
  Checkstyle-Configuration: TTPod Checks
  Description:
  Slightly modified version of TTPod Checks that better matches the default code formatter setting of Eclipse.
  -->
  <module name="Checker">
  <property name="severity" value="warning"/>
   
  <!-- 文件长度不超过2000行,default2000行 -->
  <module name="FileLength"/>
   
  <module name="TreeWalker">
   
  <!-- 检查所有的interface和class,允许未知的标签-->
  <module name="JavadocType">
  <property name="allowUnknownTags" value="true"/>
  <message key="javadoc.missing" value="类注释:缺少Javadoc注释。"/>
  </module>
   
  <!-- 检查所有方法的javadoc,可以不声明RuntimeException -->
  <module name="JavadocMethod">
  <property name="allowUndeclaredRTE" value="true"/>
  <!--允许get set 方法没有注释-->
  <property name="allowMissingPropertyJavadoc" value="true"/>
  <message key="javadoc.missing" value="方法注释:缺少Javadoc注释。"/>
  </module>
   
  <!-- 检查某个变量的javadoc -->
  <module name="JavadocVariable">
  <message key="javadoc.missing" value="变量注释:缺少Javadoc注释。"/>
  </module>
   
  <!--注解设置-->
  <module name="AnnotationUseStyle">
  <!--注解的参数样式 忽略-->
  <property name="elementStyle" value="ignore"/>
  <!--是否在数组元素后尾随逗号 忽略 -->
  <property name="trailingArrayComma" value="ignore"/>
  <!--检查是否保留结束括号 忽略 -->
  <property name="closingParens" value="ignore"/>
  </module>
   
  <!-- 命名规范 -->
  <!-- 类的命名,匹配规则默认:(^[A-Z][a-zA-Z0-9]*$),必须以大写字母开始 -->
  <module name="TypeName">
  <property name="tokens" value="CLASS_DEF"/>
  </module>
   
  <!-- 接口命名,匹配规则:(^I[A-Z][a-zA-Z0-9]*$),必须以大写I开始 -->
  <module name="TypeName">
  <property name="format" value="^I[A-Z][a-zA-Z0-9]*$"/>
  <property name="tokens" value="INTERFACE_DEF"/>
  </module>
   
  <!-- 变量的检查 匹配规则默认^[a-z][a-zA-Z0-9]*$ 范围: 非static型变量 命名为小写-->
  <module name="MemberName"/>
  <!-- 方法名的检查 匹配规则默认^[a-z][a-zA-Z0-9]*$ 范围:方法名 命名为小写-->
  <module name="MethodName"/>
  <!-- 方法的参数名 匹配规则默认^[a-z][a-zA-Z0-9]*$ 范围:方法中的参数名 命名为小写-->
  <module name="ParameterName "/>
  <!-- 常量名的检查 匹配规则默认^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$ 范围:常量(static , final 字段) 命名为大写-->
  <module name="ConstantName"/>
   
   
  <!-- 包名的检测,必须以com.ttpod.工程名命名,且必须全小写,$\{projectname\} -->
  <module name="PackageName">
  <property name="format" value="com\.ttpod\.[a-z]+(\.[a-z][a-z0-9]+)*$"/>
  </module>
   
  <!-- 限制导入.*包的检查,允许导入java.io.*,java.net.*,java.lang.Math.*,其它不允许 -->
  <module name="AvoidStarImport">
  <property name="excludes" value="java.io,java.net,java.lang.Math"/>
  <!-- 实例;import java.util.*;.-->
  <property name="allowClassImports" value="false"/>
  <!-- 实例 ;import static org.junit.Assert.*;-->
  <property name="allowStaticMemberImports" value="true"/>
  </module>
   
  <!-- 限制导入多余的包,例如java.lang.String -->
  <module name="RedundantImport"/>
   
  <!-- 限制导入未使用过的类 -->
  <module name="UnusedImports"/>
   
  <!--代码规范-->
  <!-- 每行不超过150个字,默认80-->
  <module name="LineLength">
  <property name="max" value="150"/>
  </module>
   
  <!-- 即制方法和构造函数行数不超过多少行,默认160行(不包括空行) -->
  <module name="MethodLength">
  <property name="countEmpty" value="false"/>
  <property name="tokens" value="METHOD_DEF,CTOR_DEF"/>
  <property name="max" value="160"/>
  </module>
   
  <!-- 不能出现大块空白区域 -->
  <module name="GenericWhitespace"/>
   
  <!-- 检查是否有未初始化的循环变量 -->
  <module name="EmptyForInitializerPad"/>
   
  <!-- 不许出现空语句 int a = 0; //正常 ; // 这里就是一个空的语句 -->
  <module name="EmptyStatement"/>
   
  <!-- 不能容忍魔法数,范围 double,int 忽略0,1 -->
  <module name="MagicNumber">
  <property name="tokens" value="NUM_DOUBLE, NUM_FLOAT"/>
  <property name="ignoreNumbers" value="0,1"/>
  <property name="ignoreAnnotation" value="true"/>
  </module>
   
  <!-- String的比较不能用!= 和 == -->
  <module name="StringLiteralEquality"/>
   
  <!-- 限制for循环最多嵌套3层 -->
  <module name="NestedForDepth">
  <property name="max" value="3"/>
  </module>
   
  <!-- if最多嵌套5层 -->
  <module name="NestedIfDepth">
  <property name="max" value="5"/>
  </module>
   
  <!-- 确保声明被初始化,例:对象是null,数字和字符是0
  <module name="ExplicitInitialization"/> -->
   
  <!-- 同一行不能有多个声明 -->
  <module name="MultipleVariableDeclarations"/>
   
  <!-- TODO的检查,表示不要出现todo未办事项目-->
  <module name="TodoComment">
  <property name="format" value="TODO\W+"/>
  </module>
   
  <!-- 检查未被注释的main方法,排除以Main结尾命名的类 -->
  <module name="UncommentedMain">
  <property name="excludedClasses" value=".*Main$"/>
  </module>
   
  <!-- 检查数组声明风格 只能为java 例如: String[] args -->
  <module name="ArrayTypeStyle"/>
   
  <!-- 检查左侧大括号 左侧大括号必须放在前一行代码的行尾 -->
  <module name="LeftCurly">
  <property name="severity" value="warning"/>
  <message key="line.previous" value="左侧大括号必须放在前一行代码的行尾,不计入到80个字符内"/>
  </module>
   
  <!-- 对关键字else、try和catch的右侧大括号放置位置进行检查 -->
  <module name="RightCurly">
  <property name="severity" value="warning"/>
  <!--与下一语句放在同一行 -->
  <property name="option" value="same"/>
  </module>
   
  <!-- 禁止使用System.out.println -->
  <module name="Regexp">
  <property name="format" value="System\.out\.println"/>
  <property name="illegalPattern" value="true"/>
  </module>
   
   
  <!--避免 null.equals("sss")情况-->
  <module name="EqualsAvoidNull"/>
   
  <!-- 异常抛出数量定义 -->
  <module name="ThrowsCount">
  <metadata name="net.sf.eclipsecs.core.comment" value="最大异常抛出个数"/>
  <property name="max" value="3"/>
  </module>
   
  <!-- 参数个数定义 最多三个-->
  <module name="ParameterNumber">
  <property name="max" value="7"/>
  </module>
   
  <!-- return个数 3个-->
  <module name="ReturnCount">
  <property name="max" value="3"/>
  </module>
   
  <!--try catch 异常处理数量 3-->
  <module name="NestedTryDepth ">
  <property name="max" value="3"/>
  </module>
   
  </module>
  </module>

猜你喜欢

转载自wang-jia-sina-com.iteye.com/blog/1887600