1
+ <?xml version =" 1.0" ?>
2
+ <!DOCTYPE module PUBLIC
3
+ "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
4
+ "https://checkstyle.org/dtds/configuration_1_3.dtd">
5
+
6
+ <!--
7
+ Checkstyle configuration that checks the Google coding conventions from Google Java Style
8
+ that can be found at https://google.github.io/styleguide/javaguide.html.
9
+ Checkstyle is very configurable. Be sure to read the documentation at
10
+ http://checkstyle.sf.net (or in your downloaded distribution).
11
+ To completely disable a check, just comment it out or delete it from the file.
12
+ Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
13
+ -->
14
+
15
+ <module name = " Checker" >
16
+ <property name =" charset" value =" UTF-8" />
17
+
18
+ <!-- This needs to be updated to error once all files pass style check -->
19
+ <property name =" severity" value =" warning" />
20
+
21
+
22
+ <property name =" fileExtensions" value =" java, properties, xml" />
23
+ <!-- Checks for whitespace -->
24
+ <!-- See http://checkstyle.sf.net/config_whitespace.html -->
25
+ <module name =" FileTabCharacter" >
26
+ <property name =" eachLine" value =" true" />
27
+ </module >
28
+ <module name =" Header" >
29
+ <property name =" headerFile" value =" config/java.header" /> <!-- this file will contain the copyright notice -->
30
+ <property name =" fileExtensions" value =" java" />
31
+ </module >
32
+ <module name =" TreeWalker" >
33
+ <module name =" OuterTypeFilename" />
34
+ <module name =" IllegalTokenText" >
35
+ <property name =" tokens" value =" STRING_LITERAL, CHAR_LITERAL" />
36
+ <property name =" format"
37
+ value =" \\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)" />
38
+ <property name =" message"
39
+ value =" Consider using special escape sequence instead of octal value or Unicode escaped value." />
40
+ </module >
41
+ <module name =" AvoidEscapedUnicodeCharacters" >
42
+ <property name =" allowEscapesForControlCharacters" value =" true" />
43
+ <property name =" allowByTailComment" value =" true" />
44
+ <property name =" allowNonPrintableEscapes" value =" true" />
45
+ </module >
46
+ <module name =" LineLength" >
47
+ <property name =" max" value =" 120" />
48
+ <property name =" ignorePattern" value =" ^package.*|^import.*|a href|href|http://|https://|ftp://" />
49
+ </module >
50
+ <module name =" AvoidStarImport" >
51
+ <property name =" excludes" value =" org.junit" />
52
+ <property name =" allowStaticMemberImports" value =" true" />
53
+ </module >
54
+ <module name =" AvoidStaticImport" >
55
+ <property name =" excludes" value =" org.junit.Assert.*,org.mockito.Mockito.*" />
56
+ </module >
57
+ <module name =" RedundantImport" />
58
+ <module name =" OneTopLevelClass" />
59
+ <module name =" NoLineWrap" />
60
+ <module name =" EmptyBlock" >
61
+ <property name =" option" value =" TEXT" />
62
+ <property name =" tokens"
63
+ value =" LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH" />
64
+ </module >
65
+ <module name =" NeedBraces" />
66
+ <module name =" LeftCurly" />
67
+ <module name =" RightCurly" >
68
+ <property name =" id" value =" RightCurlySame" />
69
+ <property name =" tokens"
70
+ value =" LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE,
71
+ LITERAL_DO" />
72
+ </module >
73
+ <module name =" RightCurly" >
74
+ <property name =" id" value =" RightCurlyAlone" />
75
+ <property name =" option" value =" alone" />
76
+ <property name =" tokens"
77
+ value =" CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT,
78
+ INSTANCE_INIT" />
79
+ </module >
80
+ <module name =" WhitespaceAround" >
81
+ <property name =" allowEmptyConstructors" value =" true" />
82
+ <property name =" allowEmptyMethods" value =" true" />
83
+ <property name =" allowEmptyTypes" value =" true" />
84
+ <property name =" allowEmptyLoops" value =" true" />
85
+ <message key =" ws.notFollowed"
86
+ value =" WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)" />
87
+ <message key =" ws.notPreceded"
88
+ value =" WhitespaceAround: ''{0}'' is not preceded with whitespace." />
89
+ </module >
90
+ <module name =" OneStatementPerLine" />
91
+ <module name =" MultipleVariableDeclarations" />
92
+ <module name =" ArrayTypeStyle" />
93
+ <!-- <!-\- This rule conflicts with Error Prone's exhaustiveness checking. -\-> -->
94
+ <!-- <module name="MissingSwitchDefault"/> -->
95
+ <module name =" FallThrough" />
96
+ <module name =" UpperEll" />
97
+ <module name =" ModifierOrder" />
98
+ <module name =" EmptyLineSeparator" >
99
+ <property name =" allowNoEmptyLineBetweenFields" value =" true" />
100
+ </module >
101
+ <module name =" SeparatorWrap" >
102
+ <property name =" id" value =" SeparatorWrapDot" />
103
+ <property name =" tokens" value =" DOT" />
104
+ <property name =" option" value =" nl" />
105
+ </module >
106
+ <module name =" SeparatorWrap" >
107
+ <property name =" id" value =" SeparatorWrapComma" />
108
+ <property name =" tokens" value =" COMMA" />
109
+ <property name =" option" value =" EOL" />
110
+ </module >
111
+ <module name =" SeparatorWrap" >
112
+ <!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/258 -->
113
+ <property name =" id" value =" SeparatorWrapEllipsis" />
114
+ <property name =" tokens" value =" ELLIPSIS" />
115
+ <property name =" option" value =" EOL" />
116
+ </module >
117
+ <module name =" SeparatorWrap" >
118
+ <!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/259 -->
119
+ <property name =" id" value =" SeparatorWrapArrayDeclarator" />
120
+ <property name =" tokens" value =" ARRAY_DECLARATOR" />
121
+ <property name =" option" value =" EOL" />
122
+ </module >
123
+ <module name =" SeparatorWrap" >
124
+ <property name =" id" value =" SeparatorWrapMethodRef" />
125
+ <property name =" tokens" value =" METHOD_REF" />
126
+ <property name =" option" value =" nl" />
127
+ </module >
128
+ <module name =" PackageName" >
129
+ <property name =" format" value =" ^[a-z]+(\.[a-z][a-z0-9]*)*$" />
130
+ <message key =" name.invalidPattern"
131
+ value =" Package name ''{0}'' must match pattern ''{1}''." />
132
+ </module >
133
+ <module name =" TypeName" >
134
+ <message key =" name.invalidPattern"
135
+ value =" Type name ''{0}'' must match pattern ''{1}''." />
136
+ </module >
137
+ <module name =" MemberName" >
138
+ <property name =" format" value =" ^[a-z][a-z0-9][a-zA-Z0-9]*$" />
139
+ <message key =" name.invalidPattern"
140
+ value =" Member name ''{0}'' must match pattern ''{1}''." />
141
+ </module >
142
+ <module name =" ParameterName" >
143
+ <property name =" format" value =" ^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" />
144
+ <message key =" name.invalidPattern"
145
+ value =" Parameter name ''{0}'' must match pattern ''{1}''." />
146
+ </module >
147
+ <module name =" LambdaParameterName" >
148
+ <property name =" format" value =" ^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" />
149
+ <message key =" name.invalidPattern"
150
+ value =" Lambda parameter name ''{0}'' must match pattern ''{1}''." />
151
+ </module >
152
+ <module name =" CatchParameterName" >
153
+ <property name =" format" value =" ^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" />
154
+ <message key =" name.invalidPattern"
155
+ value =" Catch parameter name ''{0}'' must match pattern ''{1}''." />
156
+ </module >
157
+ <module name =" LocalVariableName" >
158
+ <property name =" tokens" value =" VARIABLE_DEF" />
159
+ <property name =" format" value =" ^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" />
160
+ <message key =" name.invalidPattern"
161
+ value =" Local variable name ''{0}'' must match pattern ''{1}''." />
162
+ </module >
163
+ <module name =" ClassTypeParameterName" >
164
+ <property name =" format" value =" (^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
165
+ <message key =" name.invalidPattern"
166
+ value =" Class type name ''{0}'' must match pattern ''{1}''." />
167
+ </module >
168
+ <module name =" MethodTypeParameterName" >
169
+ <property name =" format" value =" (^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
170
+ <message key =" name.invalidPattern"
171
+ value =" Method type name ''{0}'' must match pattern ''{1}''." />
172
+ </module >
173
+ <module name =" InterfaceTypeParameterName" >
174
+ <property name =" format" value =" (^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
175
+ <message key =" name.invalidPattern"
176
+ value =" Interface type name ''{0}'' must match pattern ''{1}''." />
177
+ </module >
178
+ <module name =" NoFinalizer" />
179
+ <module name =" GenericWhitespace" >
180
+ <message key =" ws.followed"
181
+ value =" GenericWhitespace ''{0}'' is followed by whitespace." />
182
+ <message key =" ws.preceded"
183
+ value =" GenericWhitespace ''{0}'' is preceded with whitespace." />
184
+ <message key =" ws.illegalFollow"
185
+ value =" GenericWhitespace ''{0}'' should followed by whitespace." />
186
+ <message key =" ws.notPreceded"
187
+ value =" GenericWhitespace ''{0}'' is not preceded with whitespace." />
188
+ </module >
189
+ <!-- <!-\- Checkstyle indentation rules conflict with google-java-format: -\-> -->
190
+ <!-- <module name="Indentation"> -->
191
+ <!-- <property name="basicOffset" value="2"/> -->
192
+ <!-- <property name="braceAdjustment" value="0"/> -->
193
+ <!-- <property name="caseIndent" value="2"/> -->
194
+ <!-- <property name="throwsIndent" value="4"/> -->
195
+ <!-- <property name="lineWrappingIndentation" value="4"/> -->
196
+ <!-- <property name="arrayInitIndent" value="2"/> -->
197
+ <!-- </module> -->
198
+ <module name =" AbbreviationAsWordInName" >
199
+ <property name =" ignoreFinal" value =" false" />
200
+ <property name =" allowedAbbreviationLength" value =" 1" />
201
+ </module >
202
+ <module name =" OverloadMethodsDeclarationOrder" />
203
+ <!-- <!-\- Many unit tests define all variables at the start of the method. -\-> -->
204
+ <!-- <module name="VariableDeclarationUsageDistance"/> -->
205
+ <module name =" CustomImportOrder" >
206
+ <property name =" sortImportsInGroupAlphabetically" value =" true" />
207
+ <property name =" separateLineBetweenGroups" value =" true" />
208
+ <property name =" customImportOrderRules" value =" STANDARD_JAVA_PACKAGE###THIRD_PARTY_PACKAGE###STATIC" />
209
+ </module >
210
+ <module name =" MethodParamPad" />
211
+ <module name =" NoWhitespaceBefore" >
212
+ <property name =" tokens"
213
+ value =" COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF" />
214
+ <property name =" allowLineBreaks" value =" true" />
215
+ </module >
216
+ <module name =" ParenPad" />
217
+ <module name =" OperatorWrap" >
218
+ <property name =" option" value =" NL" />
219
+ <property name =" tokens"
220
+ value =" BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR,
221
+ LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF " />
222
+ </module >
223
+ <module name =" AnnotationLocation" >
224
+ <property name =" id" value =" AnnotationLocationMostCases" />
225
+ <property name =" tokens"
226
+ value =" CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF" />
227
+ </module >
228
+ <module name =" AnnotationLocation" >
229
+ <property name =" id" value =" AnnotationLocationVariables" />
230
+ <property name =" tokens" value =" VARIABLE_DEF" />
231
+ <property name =" allowSamelineMultipleAnnotations" value =" true" />
232
+ </module >
233
+ <module name =" NonEmptyAtclauseDescription" />
234
+ <module name =" JavadocTagContinuationIndentation" />
235
+ <module name =" SummaryJavadoc" >
236
+ <property name =" forbiddenSummaryFragments"
237
+ value =" ^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )" />
238
+ </module >
239
+ <module name =" JavadocParagraph" />
240
+ <module name =" AtclauseOrder" >
241
+ <property name =" tagOrder" value =" @param, @return, @throws, @deprecated" />
242
+ <property name =" target"
243
+ value =" CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" />
244
+ </module >
245
+ <module name =" HiddenField" /><!-- warn when fields are being masked -->
246
+ <module name =" MagicNumber" /><!-- don't use magic numbers -->
247
+ <module name =" JavadocMethod" >
248
+ <property name =" scope" value =" public" />
249
+ <property name =" allowMissingParamTags" value =" true" />
250
+ <property name =" allowMissingThrowsTags" value =" true" />
251
+ <property name =" allowMissingReturnTag" value =" true" />
252
+ <property name =" minLineCount" value =" 2" />
253
+ <!-- <!-\- Too restrictive for tests -\-> -->
254
+ <!-- <property name="allowedAnnotations" value="Override, Test"/ -->
255
+ <property name =" allowedAnnotations"
256
+ value =" Override, Test, Before, After, BeforeClass, AfterClass, Setup,
257
+ TearDown" />
258
+ <property name =" allowThrowsTagsForSubclasses" value =" true" />
259
+ </module >
260
+ <module name =" MethodName" >
261
+ <property name =" format" value =" ^[a-z][a-z0-9][a-zA-Z0-9_]*$" />
262
+ <message key =" name.invalidPattern"
263
+ value =" Method name ''{0}'' must match pattern ''{1}''." />
264
+ </module >
265
+ <module name =" SingleLineJavadoc" >
266
+ <!-- <!-\- Wrong interpretation of the style guide; -\-> -->
267
+ <!-- <property name="ignoreInlineTags" value="false"/ -->
268
+ </module >
269
+ <module name =" EmptyCatchBlock" >
270
+ <property name =" exceptionVariableName" value =" expected" />
271
+ </module >
272
+ <module name =" CommentsIndentation" />
273
+ <module name =" SuppressWarningsHolder" />
274
+ <module name =" SuppressionCommentFilter" />
275
+ </module >
276
+ <module name =" SuppressWarningsFilter" />
277
+ </module >
0 commit comments