Checkstyle: no space inside parentheses
[odlparent.git] / checkstyle / src / main / resources / odl_checks.xml
1 <?xml version="1.0"?>
2 <!DOCTYPE module PUBLIC
3           "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4           "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
5 <module name="Checker">
6     <property name="charset" value="UTF-8"/>
7     <property name="severity" value="${checkstyle.violationSeverity}" default="warning"/>
8
9     <!-- Checks for whitespace                               -->
10     <!-- See http://checkstyle.sf.net/config_whitespace.html -->
11     <module name="FileTabCharacter">
12         <property name="eachLine" value="true"/>
13     </module>
14     <module name="RegexpSingleline">
15         <property name="format" value="\s+$"/>
16         <property name="message" value="Line has trailing spaces."/>
17     </module>
18     <module name="RegexpMultiline">
19         <property name="format" value="(?s:\r\n.*)"/>
20         <property name="message" value="File has Windows (CR+LF) instead of UNIX (LF) end of line (EOL) delimiters."/>
21     </module>
22     <module name="SuppressionFilter">
23         <property name="file" value="${checkstyle.suppressions.file}" />
24     </module>
25     <module name="SuppressWarningsFilter"/>
26     <module name="TreeWalker">
27         <module name="RegexpSinglelineJava">
28             <property name="format" value="System\.(out)|(err)\.print(ln)?\("/>
29             <property name="message" value="Line contains console output."/>
30             <property name="ignoreComments" value="false" />
31         </module>
32         <module name="RegexpSinglelineJava">
33             <property name="format" value="\.printStackTrace?\("/>
34             <property name="message" value="Line contains printStacktrace()."/>
35             <property name="ignoreComments" value="false" />
36         </module>
37         <module name="SuppressWarningsHolder" />
38         <module name="OuterTypeFilename"/>
39         <module name="IllegalTokenText">
40             <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
41             <property name="format" 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)"/>
42             <property name="message" value="Avoid using corresponding octal or Unicode escape."/>
43         </module>
44         <module name="AvoidEscapedUnicodeCharacters">
45             <property name="allowEscapesForControlCharacters" value="true"/>
46             <property name="allowByTailComment" value="true"/>
47             <property name="allowNonPrintableEscapes" value="true"/>
48         </module>
49         <module name="LineLength">
50             <property name="max" value="120"/><!-- ODL projects use 120 max line length -->
51             <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
52         </module>
53         <module name="OneTopLevelClass"/>
54         <module name="NoLineWrap"/>
55         <module name="EmptyBlock">
56             <property name="option" value="TEXT"/>
57             <property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
58         </module>
59         <module name="NeedBraces"/>
60         <module name="LeftCurly">
61             <property name="maxLineLength" value="100"/>
62         </module>
63         <module name="RightCurly"/>
64         <module name="RightCurly">
65             <property name="option" value="alone"/>
66             <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
67         </module>
68         <module name="WhitespaceAround">
69             <property name="allowEmptyConstructors" value="true"/>
70             <property name="allowEmptyMethods" value="true"/>
71             <property name="allowEmptyTypes" value="true"/>
72             <property name="allowEmptyLoops" value="true"/>
73             <message key="ws.notFollowed"
74              value="WhitespaceAround: ''{0}'' is not followed by whitespace."/>
75              <message key="ws.notPreceded"
76              value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
77         </module>
78         <module name="ParenPad" />
79         <module name="OneStatementPerLine"/>
80         <module name="MultipleVariableDeclarations"/>
81         <module name="ArrayTypeStyle"/>
82         <module name="MissingSwitchDefault"/>
83         <module name="FallThrough"/>
84         <module name="UpperEll"/>
85         <module name="ModifierOrder"/>
86         <module name="RedundantModifier"/>
87         <module name="EmptyLineSeparator">
88             <property name="allowNoEmptyLineBetweenFields" value="true"/>
89             <!-- No PACKAGE_DEF token, as we like our license header to be glue to "package" statement, to save 1 line screen space -->
90             <property name="tokens" value="IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, STATIC_INIT, INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
91         </module>
92         <module name="SeparatorWrap">
93             <property name="tokens" value="DOT"/>
94             <property name="option" value="nl"/>
95         </module>
96         <module name="SeparatorWrap">
97             <property name="tokens" value="COMMA"/>
98             <property name="option" value="EOL"/>
99         </module>
100         <module name="PackageName">
101             <property name="format" value="^[a-z]+(\.[a-z][a-z0-9_]*)*$"/>
102             <message key="name.invalidPattern"
103              value="Package name ''{0}'' must match pattern ''{1}''."/>
104         </module>
105         <module name="TypeName">
106             <message key="name.invalidPattern"
107              value="Type name ''{0}'' must match pattern ''{1}''."/>
108         </module>
109         <module name="MemberName">
110             <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
111             <message key="name.invalidPattern"
112              value="Member name ''{0}'' must match pattern ''{1}''."/>
113         </module>
114         <module name="ParameterName">
115             <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
116             <message key="name.invalidPattern"
117              value="Parameter name ''{0}'' must match pattern ''{1}''."/>
118         </module>
119         <module name="LocalVariableName">
120             <property name="tokens" value="VARIABLE_DEF"/>
121             <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
122             <property name="allowOneCharVarInForLoop" value="true"/>
123             <message key="name.invalidPattern"
124              value="Local variable name ''{0}'' must match pattern ''{1}''."/>
125         </module>
126         <module name="ClassTypeParameterName">
127             <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
128             <message key="name.invalidPattern"
129              value="Class type name ''{0}'' must match pattern ''{1}''."/>
130         </module>
131         <module name="MethodName">
132             <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
133             <message key="name.invalidPattern"
134              value="Method name ''{0}'' must match pattern ''{1}''."/>
135         </module>
136         <module name="MethodTypeParameterName">
137             <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
138             <message key="name.invalidPattern"
139              value="Method type name ''{0}'' must match pattern ''{1}''."/>
140         </module>
141         <module name="ConstantName" />
142         <module name="NoFinalizer"/>
143         <module name="GenericWhitespace">
144             <message key="ws.followed"
145              value="GenericWhitespace ''{0}'' is followed by whitespace."/>
146              <message key="ws.preceded"
147              value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
148              <message key="ws.illegalFollow"
149              value="GenericWhitespace ''{0}'' should followed by whitespace."/>
150              <message key="ws.notPreceded"
151              value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
152         </module>
153         <module name="Indentation">
154             <property name="basicOffset" value="4"/>
155             <property name="braceAdjustment" value="0"/>
156             <property name="caseIndent" value="4"/>
157             <property name="throwsIndent" value="4"/>
158             <property name="lineWrappingIndentation" value="4"/>
159             <property name="arrayInitIndent" value="4"/>
160         <!-- yangtools' checkstyle-logging had:
161             <property name="caseIndent" value="0"/>
162             <property name="throwsIndent" value="8"/>
163          -->
164         </module>
165         <module name="AbbreviationAsWordInName">
166             <property name="ignoreFinal" value="false"/>
167             <property name="allowedAbbreviationLength" value="4"/>
168         </module>
169         <module name="OverloadMethodsDeclarationOrder"/>
170         <module name="VariableDeclarationUsageDistance"/>
171         <module name="AvoidStarImport"/>
172         <module name="UnusedImports"/>
173         <module name="CustomImportOrder">
174             <property name="thirdPartyPackageRegExp" value=".*"/>
175             <property name="sortImportsInGroupAlphabetically" value="true"/>
176             <property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
177         </module>
178         <module name="RedundantImport"/>
179         <module name="MethodParamPad"/>
180         <module name="OperatorWrap">
181             <property name="option" value="NL"/>
182             <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
183         </module>
184         <module name="AnnotationLocation">
185             <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
186         </module>
187         <module name="AnnotationLocation">
188             <property name="tokens" value="VARIABLE_DEF"/>
189             <property name="allowSamelineMultipleAnnotations" value="true"/>
190         </module>
191         <module name="NonEmptyAtclauseDescription"/>
192         <module name="JavadocTagContinuationIndentation"/>
193         <module name="SummaryJavadocCheck">
194             <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
195         </module>
196         <!-- JavaDoc: Do NOT enforce JavaDoc presence, BUT if there is any, it must be uniform and well formed.
197                       This is OpenDaylight's pragmatic compromise:
198                         * Javadoc on every public method would take a long time to happen.
199                         * We want to encourage informative javadocs, but "stub" javadocs are arguably worse than no javadocs.
200                         * Javadocs on public methods of interfaces should be mandatory, but Checkstyle does not distinguish those
201                           (yet; see https://github.com/sevntu-checkstyle/sevntu.checkstyle/issues/70).
202           -->
203         <module name="JavadocParagraph">
204             <property name="allowNewlineParagraph" value="false"/>
205         </module>
206         <module name="AtclauseOrder">
207             <property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
208             <property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
209         </module>
210 <!-- Uncommenting this would JavaDoc mandatory
211      on all public methods, constructors and annotations, but not on all simple getters and setters (optional);
212      and on all public annotation types (refine "token" to make it on all public classes).
213
214         <module name="JavadocType">
215             <property name="scope" value="public"/>
216             <property name="tokens" value="ANNOTATION_DEF"/>
217         </module>
218         <module name="JavadocMethod">
219             <property name="scope" value="public"/>
220             <property name="tokens" value="METHOD_DEF, CTOR_DEF, ANNOTATION_FIELD_DEF"/>
221             <property name="allowMissingPropertyJavadoc" value="true" />
222             <property name="allowMissingParamTags" value="true"/>
223             <property name="allowMissingThrowsTags" value="true"/>
224             <property name="allowMissingReturnTag" value="true"/>
225             <property name="minLineCount" value="2"/>
226             <property name="allowedAnnotations" value="Override, Test"/>
227             <property name="allowThrowsTagsForSubclasses" value="true"/>
228         </module>
229   -->
230         <module name="JavadocStyle">
231             <!-- Do NOT 'scope' this one; any JavaDoc (public/protected/private) IFF present, should be style checked. -->
232             <property name="checkEmptyJavadoc" value="true" />
233             <!-- All except PACKAGE_DEF, due to a Checkstyle particularity (bug?):
234                  For all tokens, JavadocStyle checks JavaDoc compliance IFF present;
235                  only for package-info.java this ENFORCES that there is a JavaDoc
236                  in each package-info.java.  We believe this to be a bug because
237                  JavadocPackage seems to be inteded for enforcement.  Therefore,
238                  in line with not enforcing JavaDoc everywhere, just checking when
239                  it's present, we must therefore customize the tokens list here.
240                  see https://github.com/checkstyle/checkstyle/issues/3416
241              -->
242             <property name="tokens" value="ANNOTATION_DEF, ANNOTATION_FIELD_DEF, CLASS_DEF, CTOR_DEF, ENUM_CONSTANT_DEF, ENUM_DEF, INTERFACE_DEF, METHOD_DEF, VARIABLE_DEF"/>
243         </module>
244         <module name="MethodName">
245             <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
246             <message key="name.invalidPattern"
247              value="Method name ''{0}'' must match pattern ''{1}''."/>
248         </module>
249         <module name="SingleLineJavadoc"/>
250         <module name="EmptyStatement"/>
251         <module name="EqualsHashCode"/>
252
253         <!-- Checks for Exception Handling Anti-Patterns -->
254         <module name="IllegalCatch"/>
255         <module name="IllegalThrows" />
256         <module name="MutableException"/>
257         <!-- TODO Once new remote repo to proxy for sevntu has be added to nexus.opendaylight.org ,
258              (waiting for ticket #24830 with helpdesk@opendaylight.org), and https://git.opendaylight.org/gerrit/#/c/41075/
259              has been merged, then add the following additional Exception Handling Anti-Patterns related checks here:
260
261         <module name="AvoidHidingCauseExceptionCheck" />
262   ??
263         <module name="com.github.sevntu.checkstyle.checks.coding.AvoidHidingCauseExceptionCheck" />
264
265         <module name="EitherLogOrThrowCheck" />
266   ??
267         <module name="com.github.sevntu.checkstyle.checks.coding.EitherLogOrThrowCheck" />
268
269           -->
270
271         <!-- Checks for API conventions and the like -->
272         <module name="com.github.sevntu.checkstyle.checks.coding.ForbidCertainImportsCheck">
273             <property name="packageNameRegexp" value=".*" />
274             <property name="forbiddenImportsRegexp" value="com.google.common.base.Charsets" />
275             <property name="forbiddenImportsExcludesRegexp" value="" />
276             <message key="forbid.certain.imports" value="Use ''java.nio.charset.StandardCharsets'' instead of ''{0}''" />
277         </module>
278     </module>
279 </module>