(非原创)checkStyle配置说明、范例和结果分析
1<?xml version="1.0"?>
2<!DOCTYPE module PUBLIC
3 "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
4 "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
5
6<!--
7
8 Checkstyle configuration that checks the sun coding conventions from:
9
10 - the Java Language Specification at
11 http://java.sun.com/docs/books/jls/second_edition/html/index.html
12
13 - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
14
15 - the Javadoc guidelines at
16 http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
17
18 - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
19
20 - some best practices
21
22 Checkstyle is very configurable. Be sure to read the documentation at
23 http://checkstyle.sf.net (or in your downloaded distribution).
24
25 Most Checks are configurable, be sure to consult the documentation.
26
27 To completely disable a check, just comment it out or delete it from the file.
28
29 Finally, it is worth reading the documentation.
30
31-->
32
33<module name="Checker">
34 <!--
35 重复代码的检查,超过8行就认为重复,UTF-8格式 本检查一定要放在"TreeWalker"节点前,否则在
36 Checkclipse中会无法使用。(在ant下可以)
37 -->
38 <module name="StrictDuplicateCode">
39 <property name="min" value="8" />
40 <property name="charset" value="UTF-8" />
41 </module>
42 <module name="TreeWalker">
43 <!-- javadoc的检查 -->
44 <!-- 检查所有的interface和class -->
45 <module name="JavadocType" />
46 <!-- 检查所有方法的javadoc,可以不声明RuntimeException -->
47 <module name="JavadocMethod">
48 <property name="allowUndeclaredRTE" value="true" />
49 </module>
50 <!-- 检查某个变量的javadoc -->
51 <module name="JavadocVariable" />
52 <!-- 命名方面的检查,它们都使用了Sun官方定的规则。 -->
53 <!-- 类名(class 或interface) 的检查 -->
54 <module name="TypeName" />
55 <!-- 变量的检查 -->
56 <module name="MemberName" />
57 <!-- 方法名的检查 -->
58 <module name="MethodName" />
59 <!-- 方法的参数名 -->
60 <module name="ParameterName " />
61 <!-- 常量名的检查 -->
62 <module name="ConstantName" />
63 <!-- 长度方面的检查 -->
64 <!-- 文件长度不超过1500行 -->
65 <module name="FileLength">
66 <property name="max" value="1500" />
67 </module>
68 <!-- 每行不超过120个字-->
69 <module name="LineLength">
70 <property name="max" value="120" />
71 </module>
72 <!-- 方法不超过30行 -->
73 <module name="MethodLength">
74 <property name="tokens" value="METHOD_DEF" />
75 <property name="max" value="30" />
76 </module>
77 <!-- 方法的参数个数不超过3个。 -->
78 <module name="ParameterNumber">
79 <property name="max" value="3" />
80 </module>
81 <!-- 多余的关键字 -->
82 <module name="RedundantModifier" />
83 <!-- 对区域的检查 -->
84 <!-- 不能出现空白区域 -->
85 <module name="EmptyBlock" />
86 <!-- 所有区域都要使用大括号。 -->
87 <module name="NeedBraces" />
88 <!-- 多余的括号 -->
89 <module name="AvoidNestedBlocks">
90 <property name="allowInSwitchCase" value="true" />
91 </module>
92 <!-- 编码方面的检查 -->
93 <!-- 不许出现空语句 -->
94 <module name="EmptyStatement" />
95 <!-- 每个类都实现了equals()和hashCode() -->
96 <module name="EqualsHashCode" />
97 <!-- 不许使用switch -->
98 <module name="IllegalToken">
99 <property name="tokens" value="LITERAL_SWITCH" />
100 </module>
101 <!-- 不许内部赋值 -->
102 <module name="InnerAssignment" />
103 <!-- 绝对不能容忍魔法数 -->
104 <module name="MagicNumber" />
105 <!-- 循环控制变量不能被修改 -->
106 <module name="ModifiedControlVariable" />
107 <!-- 多余的throw -->
108 <module name="RedundantThrows" />
109 <!-- 不许使用未被简化的条件表达式 -->
110 <module name="SimplifyBooleanExpression" />
111 <!-- 不许使用未被简化的布尔返回值 -->
112 <module name="SimplifyBooleanReturn" />
113 <!-- String的比较不能用!= 和 == -->
114 <module name="StringLiteralEquality" />
115 <!-- if最多嵌套3层 -->
116 <module name="NestedIfDepth">
117 <property name="max" value="3" />
118 </module>
119 <!-- try最多被嵌套1层 -->
120 <module name="NestedTryDepth" />
121 <!-- clone方法必须调用了super.clone() -->
122 <module name="SuperClone" />
123 <!-- finalize 必须调用了super.finalize() -->
124 <module name="SuperFinalize" />
125 <!-- 不能catch java.lang.Exception -->
126 <module name="IllegalCatch">
127 <property name="illegalClassNames" value="java.lang.Exception" />
128 </module>
129 <!-- JUnitTestCase 的核心方法存在。 -->
130 <module name="JUnitTestCase" />
131 <!-- 一个方法中最多有3个return -->
132 <module name="ReturnCount">
133 <property name="max" value="3" />
134 </module>
135 <!-- 不许对方法的参数赋值 -->
136 <module name="ParameterAssignment" />
137 <!-- 不许有同样内容的String -->
138 <module name="MultipleStringLiterals" />
139 <!-- 同一行不能有多个声明 -->
140 <module name="MultipleVariableDeclarations" />
141 <!-- 各种量度 -->
142 <!-- 布尔表达式的复杂度,不超过3 -->
143 <module name="BooleanExpressionComplexity" />
144 <!-- 类数据的抽象耦合,不超过7 -->
145 <module name="ClassDataAbstractionCoupling" />
146 <!-- 类的分散复杂度,不超过20 -->
147 <module name="ClassFanOutComplexity" />
148 <!-- 函数的分支复杂度,不超过10 -->
149 <module name="CyclomaticComplexity" />
150 <!-- NPath复杂度,不超过200 -->
151 <module name="NPathComplexity" />
152 <!-- 杂项 -->
153 <!-- 禁止使用System.out.println -->
154 <module name="GenericIllegalRegexp">
155 <property name="format" value="System\.out\.println" />
156 <property name="ignoreComments" value="true" />
157 </module>