blob: 7bc388efbf1a663e573b00a2adab97e906ae4789 [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>
54 <module name="AvoidEscapedUnicodeCharacters">
55 <property name="allowEscapesForControlCharacters"
56 value="true" />
57 <property name="allowByTailComment"
58 value="true" />
59 <property name="allowNonPrintableEscapes"
60 value="true" />
61 </module>
62 <module name="LineLength">
63 <property name="max"
64 value="100" />
65 <property name="ignorePattern"
66 value="^package.*|^import.*|a href|href|http://|https://|ftp://" />
67 </module>
68 <module name="ImportOrder">
69 <property name="option"
70 value="bottom"/>
71 <property name="groups"
72 value="/^java\./,javax,com,org,/^edu\./,*,/^edu\.wpi\./,/^edu\.wpi\.first\.wpilibj\.examples\./"/>
73 <property name="separated"
74 value="true"/>
75 <property name="sortStaticImportsAlphabetically"
76 value="true"/>
77 </module>
78 <module name="AvoidStarImport" />
79 <module name="RedundantImport" />
80 <module name="UnusedImports" />
81 <module name="OneTopLevelClass" />
82 <module name="NoLineWrap" />
83 <module name="EmptyBlock">
84 <property name="option"
85 value="TEXT" />
86 <property name="tokens"
87 value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH" />
88 </module>
89 <module name="NeedBraces" />
90 <module name="LeftCurly" />
91 <module name="RightCurly" />
92 <module name="RightCurly">
93 <property name="option"
94 value="alone" />
95 <property name="tokens"
96 value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT" />
97 </module>
98 <module name="WhitespaceAround">
99 <property name="allowEmptyConstructors"
100 value="true" />
101 <property name="allowEmptyMethods"
102 value="true" />
103 <property name="allowEmptyTypes"
104 value="true" />
105 <property name="allowEmptyLoops"
106 value="true" />
107 <message key="ws.notFollowed"
108 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)" />
109 <message key="ws.notPreceded"
110 value="WhitespaceAround: ''{0}'' is not preceded with whitespace." />
111 </module>
112 <module name="WhitespaceAfter" />
113 <module name="OneStatementPerLine" />
114 <module name="MultipleVariableDeclarations" />
115 <module name="ArrayTypeStyle" />
116 <module name="MissingSwitchDefault" />
117 <module name="FallThrough" />
118 <module name="SimplifyBooleanExpression" />
119 <module name="SimplifyBooleanReturn" />
120 <module name="StringLiteralEquality" />
121 <module name="UnnecessaryParentheses" />
122 <module name="UpperEll" />
123 <module name="ModifierOrder" />
124 <module name="RedundantModifier" />
125 <module name="EmptyLineSeparator">
126 <property name="allowNoEmptyLineBetweenFields"
127 value="true" />
128 </module>
129 <module name="SeparatorWrap">
130 <property name="tokens"
131 value="DOT" />
132 <property name="option"
133 value="nl" />
134 </module>
135 <module name="SeparatorWrap">
136 <property name="tokens"
137 value="COMMA" />
138 <property name="option"
139 value="EOL" />
140 </module>
141 <module name="PackageName">
142 <property name="format"
143 value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
144 <message key="name.invalidPattern"
145 value="Package name ''{0}'' must match pattern ''{1}''." />
146 </module>
147 <module name="TypeName">
148 <message key="name.invalidPattern"
149 value="Type name ''{0}'' must match pattern ''{1}''." />
150 </module>
151 <module name="MemberName">
152 <property name="format"
153 value="^m_[a-z][a-z0-9][a-zA-Z0-9]*$" />
154 <message key="name.invalidPattern"
155 value="Member name ''{0}'' must match pattern ''{1}''." />
156 </module>
157 <module name="ParameterName">
158 <property name="format"
159 value="^[a-z][a-z0-9][a-zA-Z0-9]*$" />
160 <message key="name.invalidPattern"
161 value="Parameter name ''{0}'' must match pattern ''{1}''." />
162 </module>
163 <module name="CatchParameterName">
164 <property name="format"
165 value="^[a-z][a-z0-9][a-zA-Z0-9]*$" />
166 <message key="name.invalidPattern"
167 value="Catch parameter name ''{0}'' must match pattern ''{1}''." />
168 </module>
169 <module name="LocalVariableName">
170 <property name="tokens"
171 value="VARIABLE_DEF" />
172 <property name="format"
173 value="^[a-z][a-z0-9][a-zA-Z0-9]*$" />
174 <property name="allowOneCharVarInForLoop"
175 value="true" />
176 <message key="name.invalidPattern"
177 value="Local variable name ''{0}'' must match pattern ''{1}''." />
178 </module>
179 <module name="ClassTypeParameterName">
180 <property name="format"
181 value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
182 <message key="name.invalidPattern"
183 value="Class type name ''{0}'' must match pattern ''{1}''." />
184 </module>
185 <module name="MethodTypeParameterName">
186 <property name="format"
187 value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
188 <message key="name.invalidPattern"
189 value="Method type name ''{0}'' must match pattern ''{1}''." />
190 </module>
191 <module name="InterfaceTypeParameterName">
192 <property name="format"
193 value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
194 <message key="name.invalidPattern"
195 value="Interface type name ''{0}'' must match pattern ''{1}''." />
196 </module>
197 <module name="NoFinalizer" />
198 <module name="GenericWhitespace">
199 <message key="ws.followed"
200 value="GenericWhitespace ''{0}'' is followed by whitespace." />
201 <message key="ws.preceded"
202 value="GenericWhitespace ''{0}'' is preceded with whitespace." />
203 <message key="ws.illegalFollow"
204 value="GenericWhitespace ''{0}'' should followed by whitespace." />
205 <message key="ws.notPreceded"
206 value="GenericWhitespace ''{0}'' is not preceded with whitespace." />
207 </module>
208 <module name="Indentation">
209 <property name="basicOffset"
210 value="2" />
211 <property name="braceAdjustment"
212 value="0" />
213 <property name="caseIndent"
214 value="2" />
215 <property name="throwsIndent"
216 value="4" />
217 <property name="lineWrappingIndentation"
218 value="4" />
219 <property name="arrayInitIndent"
220 value="2" />
221 </module>
222 <module name="AbbreviationAsWordInName">
223 <property name="ignoreFinal"
224 value="false" />
225 <property name="allowedAbbreviationLength"
226 value="3" />
227 </module>
228 <module name="OverloadMethodsDeclarationOrder" />
229 <module name="VariableDeclarationUsageDistance" />
230 <module name="MethodParamPad" />
231 <module name="TypecastParenPad" />
232 <module name="OperatorWrap">
233 <property name="option"
234 value="NL" />
235 <property name="tokens"
236 value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR " />
237 </module>
238 <module name="AnnotationLocation">
239 <property name="tokens"
240 value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF" />
241 </module>
242 <module name="AnnotationLocation">
243 <property name="tokens"
244 value="VARIABLE_DEF" />
245 <property name="allowSamelineMultipleAnnotations"
246 value="true" />
247 </module>
248 <module name="MissingOverride" />
249 <module name="NonEmptyAtclauseDescription" />
250 <module name="JavadocTagContinuationIndentation" />
251 <module name="SummaryJavadoc">
252 <property name="forbiddenSummaryFragments"
253 value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )" />
254 </module>
255 <module name="JavadocParagraph" />
256 <module name="AtclauseOrder">
257 <property name="tagOrder"
258 value="@param, @return, @throws, @deprecated" />
259 <property name="target"
260 value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" />
261 </module>
262 <module name="JavadocMethod">
263 <property name="scope"
264 value="public" />
265 <property name="allowMissingParamTags"
266 value="true" />
267 <property name="allowMissingThrowsTags"
268 value="true" />
269 <property name="allowMissingReturnTag"
270 value="true" />
271 <property name="minLineCount"
272 value="2" />
273 <property name="allowedAnnotations"
274 value="Override, Test, Before, After, BeforeClass, AfterClass, Parameters" />
275 <property name="allowUndeclaredRTE"
276 value="true" />
277 <property name="allowThrowsTagsForSubclasses"
278 value="true" />
279 <property name="suppressLoadErrors"
280 value="true" />
281 </module>
282 <module name="MethodName">
283 <property name="format"
284 value="^[a-z][a-z0-9][a-zA-Z0-9_]*$" />
285 <message key="name.invalidPattern"
286 value="Method name ''{0}'' must match pattern ''{1}''." />
287 </module>
288 <module name="SingleLineJavadoc">
289 <property name="ignoreInlineTags"
290 value="false" />
291 </module>
292 <module name="EmptyCatchBlock">
293 <property name="exceptionVariableName"
294 value="expected" />
295 </module>
296 <module name="CommentsIndentation" />
297 </module>
298</module>