1
+ <?xml version =" 1.0" ?>
2
+ <!DOCTYPE module PUBLIC
3
+ "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4
+ "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
5
+
6
+ <!--
7
+ This Checkstyle configuration is based on Checkstyle Google Java Style
8
+ https://raw.githubusercontent.com/checkstyle/checkstyle/master/google_checks.xml
9
+
10
+ - basic indentation is 4 (see Indentation)
11
+ - maximum line width is 120 (see LineLength, LeftCurly)
12
+ - package statement can have the licence without an empty line separator (see EmptyLineSeparator)
13
+ - no paragraph tag is enforced in javadocs (no JavaDocParagraph)
14
+ - different import order (see CustomImportOrder)
15
+ - changed parameter regex to allow for "aVariable" style
16
+ - added check for constans in FOO_BAR notation
17
+ - added checks for class and interface docblocks
18
+ - changed ordering for imports to match intellij defaults
19
+
20
+ Source is a Checkstyle configuration that checks the Google coding conventions from:
21
+
22
+ - Google Java Style
23
+ https://google-styleguide.googlecode.com/svn-history/r130/trunk/javaguide.html
24
+
25
+ Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
26
+
27
+ Checkstyle is very configurable. Be sure to read the documentation at
28
+ http://checkstyle.sf.net (or in your downloaded distribution).
29
+
30
+ Most Checks are configurable, be sure to consult the documentation.
31
+
32
+ To completely disable a check, just comment it out or delete it from the file.
33
+
34
+
35
+ -->
36
+
37
+ <module name = " Checker" >
38
+ <property name =" charset" value =" UTF-8" />
39
+
40
+ <property name =" severity" value =" warning" />
41
+
42
+ <!-- Checks for whitespace -->
43
+ <!-- See http://checkstyle.sf.net/config_whitespace.html -->
44
+ <module name =" FileTabCharacter" >
45
+ <property name =" eachLine" value =" true" />
46
+ </module >
47
+
48
+ <module name =" TreeWalker" >
49
+ <property name =" tabWidth" value =" 4" />
50
+ <module name =" OuterTypeFilename" />
51
+ <module name =" IllegalTokenText" >
52
+ <property name =" tokens" value =" STRING_LITERAL, CHAR_LITERAL" />
53
+ <property name =" format" value =" \\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)" />
54
+ <property name =" message" value =" Avoid using corresponding octal or Unicode escape." />
55
+ </module >
56
+ <module name =" AvoidEscapedUnicodeCharacters" >
57
+ <property name =" allowEscapesForControlCharacters" value =" true" />
58
+ <property name =" allowByTailComment" value =" true" />
59
+ <property name =" allowNonPrintableEscapes" value =" true" />
60
+ </module >
61
+ <module name =" LineLength" >
62
+ <property name =" max" value =" 120" />
63
+ <property name =" ignorePattern" value =" ^package.*|^import.*|a href|href|http://|https://|ftp://" />
64
+ </module >
65
+ <module name =" AvoidStarImport" />
66
+ <module name =" OneTopLevelClass" />
67
+ <module name =" NoLineWrap" />
68
+ <module name =" EmptyBlock" >
69
+ <property name =" option" value =" TEXT" />
70
+ <property name =" tokens" value =" LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH" />
71
+ </module >
72
+ <module name =" NeedBraces" />
73
+ <module name =" LeftCurly" >
74
+ <property name =" maxLineLength" value =" 120" />
75
+ </module >
76
+ <module name =" RightCurly" />
77
+ <module name =" RightCurly" >
78
+ <property name =" option" value =" alone" />
79
+ <property name =" tokens" value =" CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT" />
80
+ </module >
81
+ <module name =" WhitespaceAround" >
82
+ <property name =" allowEmptyConstructors" value =" true" />
83
+ <property name =" allowEmptyMethods" value =" true" />
84
+ <property name =" allowEmptyTypes" value =" true" />
85
+ <property name =" allowEmptyLoops" value =" true" />
86
+ <message key =" ws.notFollowed"
87
+ value =" WhitespaceAround: ''{0}'' is not followed by whitespace." />
88
+ <message key =" ws.notPreceded"
89
+ value =" WhitespaceAround: ''{0}'' is not preceded with whitespace." />
90
+ </module >
91
+ <module name =" OneStatementPerLine" />
92
+ <module name =" MultipleVariableDeclarations" />
93
+ <module name =" ArrayTypeStyle" />
94
+ <module name =" MissingSwitchDefault" />
95
+ <module name =" FallThrough" />
96
+ <module name =" UpperEll" />
97
+ <module name =" ModifierOrder" />
98
+ <module name =" EmptyLineSeparator" >
99
+ <property name =" tokens" value =" IMPORT, CLASS_DEF, ENUM_DEF, INTERFACE_DEF, CTOR_DEF, METHOD_DEF, STATIC_INIT, INSTANCE_INIT, VARIABLE_DEF" />
100
+ <property name =" allowNoEmptyLineBetweenFields" value =" true" />
101
+ </module >
102
+ <module name =" SeparatorWrap" >
103
+ <property name =" tokens" value =" DOT" />
104
+ <property name =" option" value =" nl" />
105
+ </module >
106
+ <module name =" SeparatorWrap" >
107
+ <property name =" tokens" value =" COMMA" />
108
+ <property name =" option" value =" EOL" />
109
+ </module >
110
+ <module name =" PackageName" >
111
+ <property name =" format" value =" ^[a-z]+(\.[a-z][a-z0-9]*)*$" />
112
+ <message key =" name.invalidPattern"
113
+ value =" Package name ''{0}'' must match pattern ''{1}''." />
114
+ </module >
115
+ <module name =" TypeName" >
116
+ <message key =" name.invalidPattern"
117
+ value =" Type name ''{0}'' must match pattern ''{1}''." />
118
+ </module >
119
+ <module name =" ConstantName" >
120
+ <property name =" format" value =" ^[A-Z0-9_]*$" />
121
+ <message key =" name.invalidPattern"
122
+ value =" Member name ''{0}'' must match pattern ''{1}''." />
123
+ </module >
124
+ <module name =" MemberName" >
125
+ <property name =" format" value =" ^[a-z][a-zA-Z0-9]*$" />
126
+ <message key =" name.invalidPattern"
127
+ value =" Member name ''{0}'' must match pattern ''{1}''." />
128
+ </module >
129
+ <module name =" ParameterName" >
130
+ <property name =" format" value =" ^[a-z][a-zA-Z0-9]*$" />
131
+ <message key =" name.invalidPattern"
132
+ value =" Parameter name ''{0}'' must match pattern ''{1}''." />
133
+ </module >
134
+ <module name =" LocalVariableName" >
135
+ <property name =" tokens" value =" VARIABLE_DEF" />
136
+ <property name =" format" value =" ^[a-z][a-zA-Z0-9]*$" />
137
+ <property name =" allowOneCharVarInForLoop" value =" true" />
138
+ <message key =" name.invalidPattern"
139
+ value =" Local variable name ''{0}'' must match pattern ''{1}''." />
140
+ </module >
141
+ <module name =" ClassTypeParameterName" >
142
+ <property name =" format" value =" (^[A-Z0-9]+$)" />
143
+ <message key =" name.invalidPattern"
144
+ value =" Class type name ''{0}'' must match pattern ''{1}''." />
145
+ </module >
146
+ <module name =" MethodTypeParameterName" >
147
+ <property name =" format" value =" (^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
148
+ <message key =" name.invalidPattern"
149
+ value =" Method type name ''{0}'' must match pattern ''{1}''." />
150
+ </module >
151
+ <module name =" NoFinalizer" />
152
+ <module name =" GenericWhitespace" >
153
+ <message key =" ws.followed"
154
+ value =" GenericWhitespace ''{0}'' is followed by whitespace." />
155
+ <message key =" ws.preceded"
156
+ value =" GenericWhitespace ''{0}'' is preceded with whitespace." />
157
+ <message key =" ws.illegalFollow"
158
+ value =" GenericWhitespace ''{0}'' should followed by whitespace." />
159
+ <message key =" ws.notPreceded"
160
+ value =" GenericWhitespace ''{0}'' is not preceded with whitespace." />
161
+ </module >
162
+ <module name =" Indentation" >
163
+ <property name =" basicOffset" value =" 4" />
164
+ <property name =" lineWrappingIndentation" value =" 4" />
165
+ </module >
166
+ <module name =" AbbreviationAsWordInName" >
167
+ <property name =" ignoreFinal" value =" false" />
168
+ <property name =" allowedAbbreviationLength" value =" 3" />
169
+ </module >
170
+ <module name =" OverloadMethodsDeclarationOrder" />
171
+ <module name =" VariableDeclarationUsageDistance" />
172
+ <module name =" CustomImportOrder" >
173
+ <property name =" thirdPartyPackageRegExp" value =" .*" />
174
+ <property name =" standardPackageRegExp" value =" ^java|javax" />
175
+ <!-- <property name="sortImportsInGroupAlphabetically" value="true"/>-->
176
+ <property name =" customImportOrderRules" value =" THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE###STATIC" />
177
+ </module >
178
+ <module name =" MethodParamPad" />
179
+ <module name =" OperatorWrap" >
180
+ <property name =" option" value =" NL" />
181
+ <property name =" tokens" value =" BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR " />
182
+ </module >
183
+ <module name =" AnnotationLocation" >
184
+ <property name =" tokens" value =" CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF" />
185
+ </module >
186
+ <module name =" AnnotationLocation" >
187
+ <property name =" tokens" value =" VARIABLE_DEF" />
188
+ <property name =" allowSamelineMultipleAnnotations" value =" true" />
189
+ </module >
190
+ <module name =" NonEmptyAtclauseDescription" />
191
+ <module name =" JavadocTagContinuationIndentation" />
192
+ <module name =" SummaryJavadocCheck" >
193
+ <property name =" forbiddenSummaryFragments" value =" ^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )" />
194
+ </module >
195
+ <module name =" AtclauseOrder" >
196
+ <property name =" tagOrder" value =" @param, @return, @throws, @deprecated" />
197
+ <property name =" target" value =" CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" />
198
+ </module >
199
+ <module name =" JavadocType" >
200
+ <property name =" authorFormat" value =" ^[A-Za-z\s]+$" />
201
+ <property name =" allowUnknownTags" value =" true" />
202
+ </module >
203
+ <module name =" JavadocMethod" >
204
+ <property name =" scope" value =" public" />
205
+ <property name =" allowMissingParamTags" value =" true" />
206
+ <property name =" allowMissingThrowsTags" value =" true" />
207
+ <property name =" allowMissingReturnTag" value =" true" />
208
+ <property name =" minLineCount" value =" 2" />
209
+ <property name =" allowedAnnotations" value =" Override, Test" />
210
+ <property name =" allowThrowsTagsForSubclasses" value =" true" />
211
+ </module >
212
+ <module name =" MethodName" >
213
+ <property name =" format" value =" ^[a-z][a-z0-9][a-zA-Z0-9_]*$" />
214
+ <message key =" name.invalidPattern"
215
+ value =" Method name ''{0}'' must match pattern ''{1}''." />
216
+ </module >
217
+ <module name =" SingleLineJavadoc" />
218
+ </module >
219
+ </module >
0 commit comments