2 <!DOCTYPE module PUBLIC
3 "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
4 "https://checkstyle.org/dtds/configuration_1_3.dtd">
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
10 Checkstyle is very configurable. Be sure to read the documentation at
11 http://checkstyle.sf.net (or in your downloaded distribution).
13 To completely disable a check, just comment it out or delete it from the file.
15 Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
18 <module name = "Checker">
19 <property name="charset" value="UTF-8"/>
21 <property name="severity" value="warning"/>
23 <property name="fileExtensions" value="java, properties, xml"/>
24 <!-- Excludes all 'module-info.java' files -->
25 <!-- See https://checkstyle.org/config_filefilters.html -->
26 <module name="BeforeExecutionExclusionFileFilter">
27 <property name="fileNamePattern" value="module\-info\.java$"/>
29 <!-- Checks for whitespace -->
30 <!-- See http://checkstyle.sf.net/config_whitespace.html -->
31 <module name="FileTabCharacter">
32 <property name="eachLine" value="true"/>
35 <module name="LineLength">
36 <property name="fileExtensions" value="java"/>
37 <property name="max" value="120"/>
38 <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
41 <module name="TreeWalker">
42 <module name="OuterTypeFilename"/>
43 <module name="IllegalTokenText">
44 <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
45 <property name="format"
46 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)"/>
47 <property name="message"
48 value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
50 <module name="AvoidEscapedUnicodeCharacters">
51 <property name="allowEscapesForControlCharacters" value="true"/>
52 <property name="allowByTailComment" value="true"/>
53 <property name="allowNonPrintableEscapes" value="true"/>
55 <module name="AvoidStarImport"/>
56 <module name="OneTopLevelClass"/>
57 <module name="NoLineWrap"/>
58 <module name="EmptyBlock">
59 <property name="option" value="TEXT"/>
60 <property name="tokens"
61 value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
63 <module name="NeedBraces"/>
64 <module name="LeftCurly"/>
65 <module name="RightCurly">
66 <property name="id" value="RightCurlySame"/>
67 <property name="tokens"
68 value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE,
71 <module name="RightCurly">
72 <property name="id" value="RightCurlyAlone"/>
73 <property name="option" value="alone"/>
74 <property name="tokens"
75 value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT,
78 <module name="WhitespaceAround">
79 <property name="allowEmptyConstructors" value="true"/>
80 <property name="allowEmptyLambdas" value="true"/>
81 <property name="allowEmptyMethods" value="true"/>
82 <property name="allowEmptyTypes" value="true"/>
83 <property name="allowEmptyLoops" value="true"/>
84 <message key="ws.notFollowed"
85 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)"/>
86 <message key="ws.notPreceded"
87 value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
89 <module name="OneStatementPerLine"/>
90 <module name="MultipleVariableDeclarations"/>
91 <module name="ArrayTypeStyle"/>
92 <module name="MissingSwitchDefault"/>
93 <module name="FallThrough"/>
94 <module name="UpperEll"/>
95 <module name="ModifierOrder"/>
96 <module name="EmptyLineSeparator">
97 <property name="allowNoEmptyLineBetweenFields" value="true"/>
99 <module name="SeparatorWrap">
100 <property name="id" value="SeparatorWrapDot"/>
101 <property name="tokens" value="DOT"/>
102 <property name="option" value="nl"/>
104 <module name="SeparatorWrap">
105 <property name="id" value="SeparatorWrapComma"/>
106 <property name="tokens" value="COMMA"/>
107 <property name="option" value="EOL"/>
109 <module name="SeparatorWrap">
110 <!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/258 -->
111 <property name="id" value="SeparatorWrapEllipsis"/>
112 <property name="tokens" value="ELLIPSIS"/>
113 <property name="option" value="EOL"/>
115 <module name="SeparatorWrap">
116 <!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/259 -->
117 <property name="id" value="SeparatorWrapArrayDeclarator"/>
118 <property name="tokens" value="ARRAY_DECLARATOR"/>
119 <property name="option" value="EOL"/>
121 <module name="SeparatorWrap">
122 <property name="id" value="SeparatorWrapMethodRef"/>
123 <property name="tokens" value="METHOD_REF"/>
124 <property name="option" value="nl"/>
126 <module name="PackageName">
127 <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
128 <message key="name.invalidPattern"
129 value="Package name ''{0}'' must match pattern ''{1}''."/>
131 <module name="TypeName">
132 <message key="name.invalidPattern"
133 value="Type name ''{0}'' must match pattern ''{1}''."/>
135 <module name="MemberName">
136 <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
137 <message key="name.invalidPattern"
138 value="Member name ''{0}'' must match pattern ''{1}''."/>
140 <module name="ParameterName">
141 <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
142 <message key="name.invalidPattern"
143 value="Parameter name ''{0}'' must match pattern ''{1}''."/>
145 <module name="LambdaParameterName">
146 <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
147 <message key="name.invalidPattern"
148 value="Lambda parameter name ''{0}'' must match pattern ''{1}''."/>
150 <module name="CatchParameterName">
151 <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
152 <message key="name.invalidPattern"
153 value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
155 <module name="LocalVariableName">
156 <property name="tokens" value="VARIABLE_DEF"/>
157 <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
158 <message key="name.invalidPattern"
159 value="Local variable name ''{0}'' must match pattern ''{1}''."/>
161 <module name="ClassTypeParameterName">
162 <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
163 <message key="name.invalidPattern"
164 value="Class type name ''{0}'' must match pattern ''{1}''."/>
166 <module name="MethodTypeParameterName">
167 <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
168 <message key="name.invalidPattern"
169 value="Method type name ''{0}'' must match pattern ''{1}''."/>
171 <module name="InterfaceTypeParameterName">
172 <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
173 <message key="name.invalidPattern"
174 value="Interface type name ''{0}'' must match pattern ''{1}''."/>
176 <module name="NoFinalizer"/>
177 <module name="GenericWhitespace">
178 <message key="ws.followed"
179 value="GenericWhitespace ''{0}'' is followed by whitespace."/>
180 <message key="ws.preceded"
181 value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
182 <message key="ws.illegalFollow"
183 value="GenericWhitespace ''{0}'' should followed by whitespace."/>
184 <message key="ws.notPreceded"
185 value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
187 <module name="Indentation">
188 <property name="basicOffset" value="4"/>
189 <property name="braceAdjustment" value="0"/>
190 <property name="caseIndent" value="4"/>
191 <property name="throwsIndent" value="4"/>
192 <property name="lineWrappingIndentation" value="4"/>
193 <property name="arrayInitIndent" value="4"/>
195 <module name="AbbreviationAsWordInName">
196 <property name="ignoreFinal" value="false"/>
197 <property name="allowedAbbreviationLength" value="1"/>
199 <module name="OverloadMethodsDeclarationOrder"/>
200 <module name="VariableDeclarationUsageDistance"/>
201 <module name="CustomImportOrder">
202 <property name="sortImportsInGroupAlphabetically" value="true"/>
203 <property name="separateLineBetweenGroups" value="true"/>
204 <property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
206 <module name="MethodParamPad"/>
207 <module name="NoWhitespaceBefore">
208 <property name="tokens"
209 value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
210 <property name="allowLineBreaks" value="true"/>
212 <module name="ParenPad"/>
213 <module name="OperatorWrap">
214 <property name="option" value="NL"/>
215 <property name="tokens"
216 value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR,
217 LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF "/>
219 <module name="AnnotationLocation">
220 <property name="id" value="AnnotationLocationMostCases"/>
221 <property name="tokens"
222 value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
224 <module name="AnnotationLocation">
225 <property name="id" value="AnnotationLocationVariables"/>
226 <property name="tokens" value="VARIABLE_DEF"/>
227 <property name="allowSamelineMultipleAnnotations" value="true"/>
229 <module name="NonEmptyAtclauseDescription"/>
230 <module name="InvalidJavadocPosition"/>
231 <module name="JavadocTagContinuationIndentation"/>
232 <module name="SummaryJavadoc">
233 <property name="forbiddenSummaryFragments"
234 value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
236 <module name="JavadocParagraph"/>
237 <module name="AtclauseOrder">
238 <property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
239 <property name="target"
240 value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
242 <module name="JavadocMethod">
243 <property name="scope" value="public"/>
244 <property name="allowMissingParamTags" value="true"/>
245 <property name="allowMissingThrowsTags" value="true"/>
246 <property name="allowMissingReturnTag" value="true"/>
247 <property name="allowedAnnotations" value="Override, Test"/>
248 <property name="allowThrowsTagsForSubclasses" value="true"/>
250 <module name="MissingJavadocMethod">
251 <property name="scope" value="public"/>
252 <property name="minLineCount" value="2"/>
253 <property name="allowedAnnotations" value="Override, Test"/>
255 <module name="MethodName">
256 <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
257 <message key="name.invalidPattern"
258 value="Method name ''{0}'' must match pattern ''{1}''."/>
260 <module name="SingleLineJavadoc">
261 <property name="ignoreInlineTags" value="false"/>
263 <module name="EmptyCatchBlock">
264 <property name="exceptionVariableName" value="expected"/>
266 <module name="CommentsIndentation"/>