Skip to content

Commit cd5ccbc

Browse files
authored
Add checkstyle.xml, idea-style guide (For importing in IDE) and enabl… (#778)
* Add checkstyle.xml, idea-style guide (For importing in IDE) and enabling checkstyle in build * addressing PR concerns * address PR comments * add header file
1 parent fbbd943 commit cd5ccbc

File tree

4 files changed

+902
-0
lines changed

4 files changed

+902
-0
lines changed

Diff for: config/checkstyle/checkstyle.xml

+277
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,277 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE module PUBLIC
3+
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
4+
"https://checkstyle.org/dtds/configuration_1_3.dtd">
5+
6+
<!--
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.
9+
Checkstyle is very configurable. Be sure to read the documentation at
10+
http://checkstyle.sf.net (or in your downloaded distribution).
11+
To completely disable a check, just comment it out or delete it from the file.
12+
Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
13+
-->
14+
15+
<module name = "Checker">
16+
<property name="charset" value="UTF-8"/>
17+
18+
<!-- This needs to be updated to error once all files pass style check -->
19+
<property name="severity" value="warning"/>
20+
21+
22+
<property name="fileExtensions" value="java, properties, xml"/>
23+
<!-- Checks for whitespace -->
24+
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
25+
<module name="FileTabCharacter">
26+
<property name="eachLine" value="true"/>
27+
</module>
28+
<module name="Header">
29+
<property name="headerFile" value="config/java.header" /> <!-- this file will contain the copyright notice -->
30+
<property name="fileExtensions" value="java" />
31+
</module>
32+
<module name="TreeWalker">
33+
<module name="OuterTypeFilename"/>
34+
<module name="IllegalTokenText">
35+
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
36+
<property name="format"
37+
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)"/>
38+
<property name="message"
39+
value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
40+
</module>
41+
<module name="AvoidEscapedUnicodeCharacters">
42+
<property name="allowEscapesForControlCharacters" value="true"/>
43+
<property name="allowByTailComment" value="true"/>
44+
<property name="allowNonPrintableEscapes" value="true"/>
45+
</module>
46+
<module name="LineLength">
47+
<property name="max" value="120"/>
48+
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
49+
</module>
50+
<module name="AvoidStarImport">
51+
<property name="excludes" value="org.junit" />
52+
<property name="allowStaticMemberImports" value="true" />
53+
</module>
54+
<module name="AvoidStaticImport">
55+
<property name="excludes" value="org.junit.Assert.*,org.mockito.Mockito.*" />
56+
</module>
57+
<module name="RedundantImport"/>
58+
<module name="OneTopLevelClass"/>
59+
<module name="NoLineWrap"/>
60+
<module name="EmptyBlock">
61+
<property name="option" value="TEXT"/>
62+
<property name="tokens"
63+
value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
64+
</module>
65+
<module name="NeedBraces"/>
66+
<module name="LeftCurly"/>
67+
<module name="RightCurly">
68+
<property name="id" value="RightCurlySame"/>
69+
<property name="tokens"
70+
value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE,
71+
LITERAL_DO"/>
72+
</module>
73+
<module name="RightCurly">
74+
<property name="id" value="RightCurlyAlone"/>
75+
<property name="option" value="alone"/>
76+
<property name="tokens"
77+
value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT,
78+
INSTANCE_INIT"/>
79+
</module>
80+
<module name="WhitespaceAround">
81+
<property name="allowEmptyConstructors" value="true"/>
82+
<property name="allowEmptyMethods" value="true"/>
83+
<property name="allowEmptyTypes" value="true"/>
84+
<property name="allowEmptyLoops" value="true"/>
85+
<message key="ws.notFollowed"
86+
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)"/>
87+
<message key="ws.notPreceded"
88+
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
89+
</module>
90+
<module name="OneStatementPerLine"/>
91+
<module name="MultipleVariableDeclarations"/>
92+
<module name="ArrayTypeStyle"/>
93+
<!-- <!-\- This rule conflicts with Error Prone's exhaustiveness checking. -\-> -->
94+
<!-- <module name="MissingSwitchDefault"/> -->
95+
<module name="FallThrough"/>
96+
<module name="UpperEll"/>
97+
<module name="ModifierOrder"/>
98+
<module name="EmptyLineSeparator">
99+
<property name="allowNoEmptyLineBetweenFields" value="true"/>
100+
</module>
101+
<module name="SeparatorWrap">
102+
<property name="id" value="SeparatorWrapDot"/>
103+
<property name="tokens" value="DOT"/>
104+
<property name="option" value="nl"/>
105+
</module>
106+
<module name="SeparatorWrap">
107+
<property name="id" value="SeparatorWrapComma"/>
108+
<property name="tokens" value="COMMA"/>
109+
<property name="option" value="EOL"/>
110+
</module>
111+
<module name="SeparatorWrap">
112+
<!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/258 -->
113+
<property name="id" value="SeparatorWrapEllipsis"/>
114+
<property name="tokens" value="ELLIPSIS"/>
115+
<property name="option" value="EOL"/>
116+
</module>
117+
<module name="SeparatorWrap">
118+
<!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/259 -->
119+
<property name="id" value="SeparatorWrapArrayDeclarator"/>
120+
<property name="tokens" value="ARRAY_DECLARATOR"/>
121+
<property name="option" value="EOL"/>
122+
</module>
123+
<module name="SeparatorWrap">
124+
<property name="id" value="SeparatorWrapMethodRef"/>
125+
<property name="tokens" value="METHOD_REF"/>
126+
<property name="option" value="nl"/>
127+
</module>
128+
<module name="PackageName">
129+
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
130+
<message key="name.invalidPattern"
131+
value="Package name ''{0}'' must match pattern ''{1}''."/>
132+
</module>
133+
<module name="TypeName">
134+
<message key="name.invalidPattern"
135+
value="Type name ''{0}'' must match pattern ''{1}''."/>
136+
</module>
137+
<module name="MemberName">
138+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
139+
<message key="name.invalidPattern"
140+
value="Member name ''{0}'' must match pattern ''{1}''."/>
141+
</module>
142+
<module name="ParameterName">
143+
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
144+
<message key="name.invalidPattern"
145+
value="Parameter name ''{0}'' must match pattern ''{1}''."/>
146+
</module>
147+
<module name="LambdaParameterName">
148+
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
149+
<message key="name.invalidPattern"
150+
value="Lambda parameter name ''{0}'' must match pattern ''{1}''."/>
151+
</module>
152+
<module name="CatchParameterName">
153+
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
154+
<message key="name.invalidPattern"
155+
value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
156+
</module>
157+
<module name="LocalVariableName">
158+
<property name="tokens" value="VARIABLE_DEF"/>
159+
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
160+
<message key="name.invalidPattern"
161+
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
162+
</module>
163+
<module name="ClassTypeParameterName">
164+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
165+
<message key="name.invalidPattern"
166+
value="Class type name ''{0}'' must match pattern ''{1}''."/>
167+
</module>
168+
<module name="MethodTypeParameterName">
169+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
170+
<message key="name.invalidPattern"
171+
value="Method type name ''{0}'' must match pattern ''{1}''."/>
172+
</module>
173+
<module name="InterfaceTypeParameterName">
174+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
175+
<message key="name.invalidPattern"
176+
value="Interface type name ''{0}'' must match pattern ''{1}''."/>
177+
</module>
178+
<module name="NoFinalizer"/>
179+
<module name="GenericWhitespace">
180+
<message key="ws.followed"
181+
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
182+
<message key="ws.preceded"
183+
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
184+
<message key="ws.illegalFollow"
185+
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
186+
<message key="ws.notPreceded"
187+
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
188+
</module>
189+
<!-- <!-\- Checkstyle indentation rules conflict with google-java-format: -\-> -->
190+
<!-- <module name="Indentation"> -->
191+
<!-- <property name="basicOffset" value="2"/> -->
192+
<!-- <property name="braceAdjustment" value="0"/> -->
193+
<!-- <property name="caseIndent" value="2"/> -->
194+
<!-- <property name="throwsIndent" value="4"/> -->
195+
<!-- <property name="lineWrappingIndentation" value="4"/> -->
196+
<!-- <property name="arrayInitIndent" value="2"/> -->
197+
<!-- </module> -->
198+
<module name="AbbreviationAsWordInName">
199+
<property name="ignoreFinal" value="false"/>
200+
<property name="allowedAbbreviationLength" value="1"/>
201+
</module>
202+
<module name="OverloadMethodsDeclarationOrder"/>
203+
<!-- <!-\- Many unit tests define all variables at the start of the method. -\-> -->
204+
<!-- <module name="VariableDeclarationUsageDistance"/> -->
205+
<module name="CustomImportOrder">
206+
<property name="sortImportsInGroupAlphabetically" value="true"/>
207+
<property name="separateLineBetweenGroups" value="true"/>
208+
<property name="customImportOrderRules" value="STANDARD_JAVA_PACKAGE###THIRD_PARTY_PACKAGE###STATIC"/>
209+
</module>
210+
<module name="MethodParamPad"/>
211+
<module name="NoWhitespaceBefore">
212+
<property name="tokens"
213+
value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
214+
<property name="allowLineBreaks" value="true"/>
215+
</module>
216+
<module name="ParenPad"/>
217+
<module name="OperatorWrap">
218+
<property name="option" value="NL"/>
219+
<property name="tokens"
220+
value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR,
221+
LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF "/>
222+
</module>
223+
<module name="AnnotationLocation">
224+
<property name="id" value="AnnotationLocationMostCases"/>
225+
<property name="tokens"
226+
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
227+
</module>
228+
<module name="AnnotationLocation">
229+
<property name="id" value="AnnotationLocationVariables"/>
230+
<property name="tokens" value="VARIABLE_DEF"/>
231+
<property name="allowSamelineMultipleAnnotations" value="true"/>
232+
</module>
233+
<module name="NonEmptyAtclauseDescription"/>
234+
<module name="JavadocTagContinuationIndentation"/>
235+
<module name="SummaryJavadoc">
236+
<property name="forbiddenSummaryFragments"
237+
value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
238+
</module>
239+
<module name="JavadocParagraph"/>
240+
<module name="AtclauseOrder">
241+
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
242+
<property name="target"
243+
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
244+
</module>
245+
<module name="HiddenField" /><!-- warn when fields are being masked -->
246+
<module name="MagicNumber" /><!-- don't use magic numbers -->
247+
<module name="JavadocMethod">
248+
<property name="scope" value="public"/>
249+
<property name="allowMissingParamTags" value="true"/>
250+
<property name="allowMissingThrowsTags" value="true"/>
251+
<property name="allowMissingReturnTag" value="true"/>
252+
<property name="minLineCount" value="2"/>
253+
<!-- <!-\- Too restrictive for tests -\-> -->
254+
<!-- <property name="allowedAnnotations" value="Override, Test"/ -->
255+
<property name="allowedAnnotations"
256+
value="Override, Test, Before, After, BeforeClass, AfterClass, Setup,
257+
TearDown"/>
258+
<property name="allowThrowsTagsForSubclasses" value="true"/>
259+
</module>
260+
<module name="MethodName">
261+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
262+
<message key="name.invalidPattern"
263+
value="Method name ''{0}'' must match pattern ''{1}''."/>
264+
</module>
265+
<module name="SingleLineJavadoc">
266+
<!-- <!-\- Wrong interpretation of the style guide; -\-> -->
267+
<!-- <property name="ignoreInlineTags" value="false"/ -->
268+
</module>
269+
<module name="EmptyCatchBlock">
270+
<property name="exceptionVariableName" value="expected"/>
271+
</module>
272+
<module name="CommentsIndentation"/>
273+
<module name="SuppressWarningsHolder"/>
274+
<module name="SuppressionCommentFilter"/>
275+
</module>
276+
<module name="SuppressWarningsFilter"/>
277+
</module>

0 commit comments

Comments
 (0)