blob: 758cee43faf196d24f5fdc250e90109031084a39 [file] [log] [blame]
Brian Silverman41cdd3e2019-01-19 19:48:58 -08001<?xml version="1.0"?>
2<!DOCTYPE
3module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
5<!--
6 Checkstyle configuration that checks the Google coding conventions from Google Java Style
7 that can be found at https://google.github.io/styleguide/javaguide.html.
8
9 Checkstyle is very configurable. Be sure to read the documentation at
10 http://checkstyle.sf.net (or in your downloaded distribution).
11
12 To completely disable a check, just comment it out or delete it from the file.
13
14 Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
15 -->
16<module name="Checker">
17 <property name="charset"
18 value="UTF-8" />
19 <property name="severity"
20 value="error" />
21 <module name="SuppressionFilter">
22 <property name="file"
23 value="${config_loc}/suppressions.xml" />
24 </module>
25 <property name="fileExtensions"
26 value="java, properties, xml" />
27 <!-- Checks for whitespace -->
28 <!-- See http://checkstyle.sf.net/config_whitespace.html -->
29 <module name="FileTabCharacter">
30 <property name="eachLine"
31 value="true" />
32 </module>
33 <module name="NewlineAtEndOfFile">
34 <property name="lineSeparator"
35 value="lf" />
36 </module>
37 <module name="SuppressWarningsFilter" />
38 <module name="TreeWalker">
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -080039 <module name="SuppressionCommentFilter">
40 <property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
41 <property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
42 <property name="checkFormat" value="$1"/>
43 </module>
Brian Silverman41cdd3e2019-01-19 19:48:58 -080044 <module name="SuppressWarningsHolder" />
45 <module name="OuterTypeFilename" />
46 <module name="IllegalTokenText">
47 <property name="tokens"
48 value="STRING_LITERAL, CHAR_LITERAL" />
49 <property name="format"
50 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)" />
51 <property name="message"
52 value="Avoid using corresponding octal or Unicode escape." />
53 </module>
James Kuszmaul4b81d302019-12-14 20:53:14 -080054 <module name="IllegalTokenText">
55 <property name="tokens"
56 value="NUM_INT,NUM_LONG"/>
57 <property name="format"
58 value="^0[^lx]"/>
59 <property name="ignoreCase"
60 value="true"/>
61 <property name="message"
62 value="Forbid leading zeros in an integer literal, other than zero and a hex literal." />
63 </module>
64 <module name="IllegalTokenText">
65 <property name="tokens"
66 value="NUM_DOUBLE,NUM_FLOAT"/>
67 <property name="format"
68 value="(^\.|\.$)"/>
69 <property name="ignoreCase"
70 value="true"/>
71 <property name="message"
72 value="Must use leading and trailing zero in floating point numbers." />
73 </module>
Brian Silverman41cdd3e2019-01-19 19:48:58 -080074 <module name="AvoidEscapedUnicodeCharacters">
75 <property name="allowEscapesForControlCharacters"
76 value="true" />
77 <property name="allowByTailComment"
78 value="true" />
79 <property name="allowNonPrintableEscapes"
80 value="true" />
81 </module>
82 <module name="LineLength">
83 <property name="max"
84 value="100" />
85 <property name="ignorePattern"
86 value="^package.*|^import.*|a href|href|http://|https://|ftp://" />
87 </module>
88 <module name="ImportOrder">
89 <property name="option"
90 value="bottom"/>
91 <property name="groups"
92 value="/^java\./,javax,com,org,/^edu\./,*,/^edu\.wpi\./,/^edu\.wpi\.first\.wpilibj\.examples\./"/>
93 <property name="separated"
94 value="true"/>
95 <property name="sortStaticImportsAlphabetically"
96 value="true"/>
97 </module>
98 <module name="AvoidStarImport" />
99 <module name="RedundantImport" />
100 <module name="UnusedImports" />
101 <module name="OneTopLevelClass" />
102 <module name="NoLineWrap" />
103 <module name="EmptyBlock">
104 <property name="option"
105 value="TEXT" />
106 <property name="tokens"
107 value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH" />
108 </module>
109 <module name="NeedBraces" />
110 <module name="LeftCurly" />
111 <module name="RightCurly" />
112 <module name="RightCurly">
113 <property name="option"
114 value="alone" />
115 <property name="tokens"
116 value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT" />
117 </module>
118 <module name="WhitespaceAround">
119 <property name="allowEmptyConstructors"
120 value="true" />
121 <property name="allowEmptyMethods"
122 value="true" />
123 <property name="allowEmptyTypes"
124 value="true" />
125 <property name="allowEmptyLoops"
126 value="true" />
127 <message key="ws.notFollowed"
128 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)" />
129 <message key="ws.notPreceded"
130 value="WhitespaceAround: ''{0}'' is not preceded with whitespace." />
131 </module>
132 <module name="WhitespaceAfter" />
133 <module name="OneStatementPerLine" />
134 <module name="MultipleVariableDeclarations" />
135 <module name="ArrayTypeStyle" />
136 <module name="MissingSwitchDefault" />
137 <module name="FallThrough" />
138 <module name="SimplifyBooleanExpression" />
139 <module name="SimplifyBooleanReturn" />
140 <module name="StringLiteralEquality" />
141 <module name="UnnecessaryParentheses" />
142 <module name="UpperEll" />
143 <module name="ModifierOrder" />
144 <module name="RedundantModifier" />
145 <module name="EmptyLineSeparator">
146 <property name="allowNoEmptyLineBetweenFields"
147 value="true" />
148 </module>
149 <module name="SeparatorWrap">
150 <property name="tokens"
151 value="DOT" />
152 <property name="option"
153 value="nl" />
154 </module>
155 <module name="SeparatorWrap">
156 <property name="tokens"
157 value="COMMA" />
158 <property name="option"
159 value="EOL" />
160 </module>
161 <module name="PackageName">
162 <property name="format"
163 value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
164 <message key="name.invalidPattern"
165 value="Package name ''{0}'' must match pattern ''{1}''." />
166 </module>
167 <module name="TypeName">
168 <message key="name.invalidPattern"
169 value="Type name ''{0}'' must match pattern ''{1}''." />
170 </module>
171 <module name="MemberName">
172 <property name="format"
173 value="^m_[a-z][a-z0-9][a-zA-Z0-9]*$" />
174 <message key="name.invalidPattern"
175 value="Member name ''{0}'' must match pattern ''{1}''." />
176 </module>
177 <module name="ParameterName">
178 <property name="format"
179 value="^[a-z][a-z0-9][a-zA-Z0-9]*$" />
180 <message key="name.invalidPattern"
181 value="Parameter name ''{0}'' must match pattern ''{1}''." />
182 </module>
183 <module name="CatchParameterName">
184 <property name="format"
185 value="^[a-z][a-z0-9][a-zA-Z0-9]*$" />
186 <message key="name.invalidPattern"
187 value="Catch parameter name ''{0}'' must match pattern ''{1}''." />
188 </module>
189 <module name="LocalVariableName">
190 <property name="tokens"
191 value="VARIABLE_DEF" />
192 <property name="format"
193 value="^[a-z][a-z0-9][a-zA-Z0-9]*$" />
194 <property name="allowOneCharVarInForLoop"
195 value="true" />
196 <message key="name.invalidPattern"
197 value="Local variable name ''{0}'' must match pattern ''{1}''." />
198 </module>
199 <module name="ClassTypeParameterName">
200 <property name="format"
201 value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
202 <message key="name.invalidPattern"
203 value="Class type name ''{0}'' must match pattern ''{1}''." />
204 </module>
205 <module name="MethodTypeParameterName">
206 <property name="format"
207 value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
208 <message key="name.invalidPattern"
209 value="Method type name ''{0}'' must match pattern ''{1}''." />
210 </module>
211 <module name="InterfaceTypeParameterName">
212 <property name="format"
213 value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
214 <message key="name.invalidPattern"
215 value="Interface type name ''{0}'' must match pattern ''{1}''." />
216 </module>
217 <module name="NoFinalizer" />
218 <module name="GenericWhitespace">
219 <message key="ws.followed"
220 value="GenericWhitespace ''{0}'' is followed by whitespace." />
221 <message key="ws.preceded"
222 value="GenericWhitespace ''{0}'' is preceded with whitespace." />
223 <message key="ws.illegalFollow"
224 value="GenericWhitespace ''{0}'' should followed by whitespace." />
225 <message key="ws.notPreceded"
226 value="GenericWhitespace ''{0}'' is not preceded with whitespace." />
227 </module>
228 <module name="Indentation">
229 <property name="basicOffset"
230 value="2" />
231 <property name="braceAdjustment"
232 value="0" />
233 <property name="caseIndent"
234 value="2" />
235 <property name="throwsIndent"
236 value="4" />
237 <property name="lineWrappingIndentation"
238 value="4" />
239 <property name="arrayInitIndent"
240 value="2" />
241 </module>
242 <module name="AbbreviationAsWordInName">
243 <property name="ignoreFinal"
244 value="false" />
245 <property name="allowedAbbreviationLength"
246 value="3" />
247 </module>
248 <module name="OverloadMethodsDeclarationOrder" />
249 <module name="VariableDeclarationUsageDistance" />
250 <module name="MethodParamPad" />
251 <module name="TypecastParenPad" />
252 <module name="OperatorWrap">
253 <property name="option"
254 value="NL" />
255 <property name="tokens"
256 value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR " />
257 </module>
258 <module name="AnnotationLocation">
259 <property name="tokens"
260 value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF" />
261 </module>
262 <module name="AnnotationLocation">
263 <property name="tokens"
264 value="VARIABLE_DEF" />
265 <property name="allowSamelineMultipleAnnotations"
266 value="true" />
267 </module>
268 <module name="MissingOverride" />
269 <module name="NonEmptyAtclauseDescription" />
270 <module name="JavadocTagContinuationIndentation" />
271 <module name="SummaryJavadoc">
272 <property name="forbiddenSummaryFragments"
273 value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )" />
274 </module>
275 <module name="JavadocParagraph" />
276 <module name="AtclauseOrder">
277 <property name="tagOrder"
278 value="@param, @return, @throws, @deprecated" />
279 <property name="target"
280 value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" />
281 </module>
282 <module name="JavadocMethod">
283 <property name="scope"
284 value="public" />
285 <property name="allowMissingParamTags"
286 value="true" />
287 <property name="allowMissingThrowsTags"
288 value="true" />
289 <property name="allowMissingReturnTag"
290 value="true" />
291 <property name="minLineCount"
292 value="2" />
293 <property name="allowedAnnotations"
294 value="Override, Test, Before, After, BeforeClass, AfterClass, Parameters" />
295 <property name="allowUndeclaredRTE"
296 value="true" />
297 <property name="allowThrowsTagsForSubclasses"
298 value="true" />
299 <property name="suppressLoadErrors"
300 value="true" />
301 </module>
302 <module name="MethodName">
303 <property name="format"
304 value="^[a-z][a-z0-9][a-zA-Z0-9_]*$" />
305 <message key="name.invalidPattern"
306 value="Method name ''{0}'' must match pattern ''{1}''." />
307 </module>
308 <module name="SingleLineJavadoc">
309 <property name="ignoreInlineTags"
310 value="false" />
311 </module>
312 <module name="EmptyCatchBlock">
313 <property name="exceptionVariableName"
314 value="expected" />
315 </module>
316 <module name="CommentsIndentation" />
317 </module>
318</module>