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