-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy pathcheckstyle.xml
More file actions
429 lines (349 loc) · 17.2 KB
/
checkstyle.xml
File metadata and controls
429 lines (349 loc) · 17.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
<?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">
<!--
Checkstyle-Configuration: Android Style
Description: https://source.android.com/source/code-style.html
Modified for Okta.
Changed the rule for OIDCConfig to allow abbreviation.
Changed the rule for member name that must start with 'm'
See suppression.xml for individual files that skipped style checks.
-->
<module name="Checker">
<!-- 100 char per line max, unless unavoidable -->
<module name="LineLength">
<property name="max" value="100"/>
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
</module>
<module name="SuppressionFilter">
<property name="file" value="${config_loc}/suppression.xml"/>
</module>
<module name="TreeWalker">
<property name="fileExtensions" value="java, properties, xml"/>
<!-- Default severity is error -->
<property name="severity" value="warning"/>
<!--#################################################################-->
<!--################ NAMING CHECKS ##################################-->
<!--#################################################################-->
<!-- Require package names to be all lower-case -->
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
<message key="name.invalidPattern"
value="Package name ''{0}'' must be lower-case."/>
</module>
<!-- Require standard type names -->
<module name="TypeName">
<message key="name.invalidPattern"
value="Type name ''{0}'' must begin with a capital letter."/>
</module>
<!--
Type parameters must either be a single upper-case character, or must begin
with an upper-case character and end with "T" (e.g. DataT).
-->
<module name="ClassTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]+[T]$)"/>
<message key="name.invalidPattern"
value="Class type parameter ''{0}'' must either be a single upper-case character, or begin with an upper-case character and end with 'T'."/>
</module>
<!-- Non-public, non-static members must start with lowercase -->
<module name="MemberName">
<property name="format" value="^[a-zA-Z0-9_]*$"/>
<property name="applyToPublic" value="false"/>
<message key="name.invalidPattern"
value="Member name ''{0}'' must be at least two characters long."/>
</module>
<!--
Require method names to be at least two characters long, and start with a
lower case letter.
-->
<module name="MethodName">
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
<message key="name.invalidPattern"
value="Method name ''{0}'' must be at least two characters long."/>
</module>
<!--
Type parameters must either be a single upper-case character, or must begin
with an upper-case character and end with "T" (e.g. DataT).
-->
<module name="MethodTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]+[T]$)"/>
<message key="name.invalidPattern"
value="Method type parameter ''{0}'' must either be a single upper-case character or begin with an upper-case character and end with 'T'."/>
</module>
<!-- Require parameter names to be at least two characters long -->
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern"
value="Parameter name ''{0}'' must be at least two characters long."/>
</module>
<!--
Require local variables to be at least two characters long,
unless they are counters on a for loop.
-->
<module name="LocalVariableName">
<property name="tokens" value="VARIABLE_DEF"/>
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
<property name="allowOneCharVarInForLoop" value="true"/>
<message key="name.invalidPattern"
value="Local variable name ''{0}'' must be at least two characters long."/>
</module>
<!-- Require that constants be capitalized. -->
<module name="ConstantName"/>
<module name="LocalFinalVariableName"/>
<!--
Require that static, non-public, non-final variable names be prefixed
with "s".
-->
<module name="StaticVariableName">
<property name="format" value="^s[A-Z][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern"
value="Static variable name ''{0}'' must be prefixed with s and be at least two characters long."/>
</module>
<!-- Capitalized abbreviations are forbidden (e.g. URL, XML, HTTP)-->
<module name="AbbreviationAsWordInName">
<property name="ignoreFinal" value="false"/>
<property name="allowedAbbreviationLength" value="1"/>
</module>
<!-- Forbid unnecessary escaping. -->
<module name="IllegalTokenText">
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
<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)"/>
<property name="message" value="Avoid using corresponding octal or Unicode escape."/>
</module>
<!-- Forbid unnecessary unicode escapes -->
<module name="AvoidEscapedUnicodeCharacters">
<property name="allowEscapesForControlCharacters" value="true"/>
<property name="allowByTailComment" value="true"/>
<property name="allowNonPrintableEscapes" value="true"/>
</module>
<!-- Require array notation on type (e.g. int[] x, not int x[]) -->
<module name="ArrayTypeStyle"/>
<!--###################################################-->
<!--################ IMPORTS ##########################-->
<!--###################################################-->
<!-- Star imports are forbidden. -->
<module name="AvoidStarImport"/>
<!-- Forbid imports from sun.* -->
<module name="IllegalImport"/>
<!-- Forbid redudant imports (e.g. import java.lang.String;) -->
<module name="RedundantImport"/>
<!-- Forbid unused imports -->
<module name="UnusedImports"/>
<!-- Forbid redundant modifiers -->
<module name="RedundantModifier"/>
<!--##############################################################-->
<!--################ STRUCTURAL / WRAPPING CHECKS ################-->
<!--##############################################################-->
<!-- Require One top-level class per file -->
<module name="OneTopLevelClass"/>
<!-- Line-wrapping in import statements is forbidden. -->
<module name="NoLineWrap"/>
<!-- Empty catch blocks are forbidden. -->
<module name="EmptyCatchBlock">
<property name="exceptionVariableName" value="expected|ignore"/>
</module>
<!-- Require braces for all code blocks -->
<module name="NeedBraces"/>
<!-- Require One statement per line (e.g. no "a = b; c = d;") -->
<module name="OneStatementPerLine"/>
<!-- Multiple variable declarations on one line is forbidden. -->
<module name="MultipleVariableDeclarations"/>
<!-- Require switch statements to have default clause -->
<module name="MissingSwitchDefault"/>
<!--
Case fall-through in switch statements is forbidden, except where an
explicit "// fall-through" comment exists.
-->
<module name="FallThrough">
<property name="reliefPattern" value="fall-through"/>
</module>
<!-- Require empty lines between definitions -->
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
</module>
<!-- Wrap only permitted before dot, e.g.
fluentInterface.doX()
.doY()
.doZ();
-->
<module name="SeparatorWrap">
<property name="tokens" value="DOT"/>
<property name="option" value="nl"/>
</module>
<!-- Wrap only permitted after comma, e.g.
doThings(withA,
withB,
withC);
-->
<module name="SeparatorWrap">
<property name="tokens" value="COMMA"/>
<property name="option" value="EOL"/>
</module>
<!--
Require that annotations on type, method and constructor definitions be on
a separate line.
-->
<module name="AnnotationLocation">
<property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
</module>
<!--
Variable declarations may have annotations on the same line.
-->
<module name="AnnotationLocation">
<property name="tokens" value="VARIABLE_DEF"/>
<property name="allowSamelineMultipleAnnotations" value="true"/>
</module>
<!-- Forbid empty statements -->
<module name="EmptyStatement"/>
<!--#################################################################-->
<!--################ WHITESPACE / LINE LENGTH CHECKS ################-->
<!--#################################################################-->
<!-- Forbid whitespace after prefix unary operators and accessors -->
<module name="NoWhitespaceAfter">
<property name="tokens" value="BNOT,DEC,DOT,INC,LNOT,UNARY_MINUS,UNARY_PLUS"/>
</module>
<!--
Forbid whitespace before comma, semi-colon, and postfix unary operators
-->
<module name="NoWhitespaceBefore"/>
<!-- Require whitespace around common tokens (=, if, etc.) -->
<module name="WhitespaceAround">
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyMethods" value="true"/>
<property name="allowEmptyTypes" value="true"/>
<property name="allowEmptyLoops" value="true"/>
<message key="ws.notFollowed"
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)"/>
<message key="ws.notPreceded"
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
</module>
<!-- Require standard whitespace around type parameters -->
<module name="GenericWhitespace">
<message key="ws.followed"
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
<message key="ws.preceded"
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
<message key="ws.illegalFollow"
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
<message key="ws.notPreceded"
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
</module>
<!-- Require Android standard indentation. -->
<module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="4"/>
<property name="throwsIndent" value="8"/>
<property name="lineWrappingIndentation" value="8"/>
<property name="arrayInitIndent" value="4"/>
</module>
<!--
Require that comments be placed at the same level of indentation as
surrounding code.
-->
<module name="CommentsIndentation"/>
<!--#################################################################-->
<!--################ MISC. LANGUAGE CHECKS ##########################-->
<!--#################################################################-->
<!-- File name must correspond to contained class -->
<module name="OuterTypeFilename"/>
<!--
Long constants must be suffixed with L:
"The suffix L is preferred, because the letter l (ell) is often hard to
distinguish from the digit 1 (one)."
http://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.1
-->
<module name="UpperEll"/>
<!--
Require modifier order consistent with recommends in JLS:
http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html
-->
<module name="ModifierOrder"/>
<!-- Finalizers are forbidden. -->
<module name="NoFinalizer"/>
<!-- overloaded methods must be grouped together -->
<module name="OverloadMethodsDeclarationOrder"/>
<!-- Require variables to be declared close to where they are used -->
<module name="VariableDeclarationUsageDistance"/>
<!-- Require that equals() and hashCode() are overridden together -->
<module name="EqualsHashCode"/>
<!-- Forbid shadowing fields or variables -->
<module name="HiddenField">
<!-- exception: constructor parameters -->
<property name="ignoreConstructorParameter" value="true"/>
<!-- exception: setter method parameters -->
<property name="ignoreSetter" value="true"/>
</module>
<!--
Forbid assignments in expressions, with the exception of loop conditions
-->
<module name="InnerAssignment"/>
<!-- Require @Override on overridden methods -->
<module name="MissingOverride"/>
<!-- Forbid arbitrarily nested blocks -->
<module name="AvoidNestedBlocks"/>
<!-- Forbid the use of arbitrary numeric literals -->
<module name="MagicNumber"/>
<!-- Require boolean expressions to be simplifed -->
<module name="SimplifyBooleanExpression"/>
<!-- Require boolean returns to be simplified -->
<module name="SimplifyBooleanReturn"/>
<!-- Forbid interfaces with no methods -->
<module name="InterfaceIsType"/>
<!--#################################################################-->
<!--################ JAVADOC CHECKS #################################-->
<!--#################################################################-->
<!-- Require Javadoc for all protected and public methods -->
<module name="JavadocMethod">
<property name="validateThrows" value="true"/>
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
</module>
<!-- Require Javadoc for all protected and public classes -->
<module name="JavadocType">
<property name="scope" value="public"/>
</module>
<!-- Ensure proper Javadoc style for protected and public elements -->
<module name="JavadocStyle">
<property name="scope" value="protected"/>
<property name="checkHtml" value="false"/>
</module>
<!-- Summary lines for Javadoc should have good style -->
<module name="SummaryJavadoc">
<property name="forbiddenSummaryFragments"
value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )|^Created by"/>
</module>
<!-- Javadoc blocks should fit in a single line -->
<module name="SingleLineJavadoc"/>
<!-- Require Javadoc to have proper paragraph tags -->
<module name="JavadocParagraph"/>
<!-- At-clauses in Javadoc should not be empty -->
<module name="NonEmptyAtclauseDescription"/>
</module>
<!--################################################-->
<!--################ Non-AST checks ################-->
<!--################################################-->
<!-- Ensure the copyright header appears in every java source file -->
<module name="RegexpHeader">
<property name="headerFile" value="${checkstyle.java.header}"/>
<property name="fileExtensions" value="java"/>
<message key="header.mismatch"
value="Expecting the file to start with a Copyright notice"/>
<message key="header.missing"
value="Expecting the file to start with a Copyright notice"/>
</module>
<!-- Report every line containing a tab character" -->
<module name="FileTabCharacter">
<property name="eachLine" value="true"/>
</module>
<!-- Forbid trailing whitespace -->
<module name="RegexpSingleline">
<property name="format" value="\s+$"/>
<property name="message" value="Line has trailing whitespace."/>
</module>
<!-- Require Javadoc for all packages -->
<module name="JavadocPackage"/>
<!-- Require a new line at the end of all files -->
<module name="NewlineAtEndOfFile"/>
</module>