Checkstyle suppressions XML to completely avoid checking target/
[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="(\r\n|\r)"/>
20         <property name="message" value="Line has Windows line delimiter."/>
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="OneStatementPerLine"/>
79         <module name="MultipleVariableDeclarations"/>
80         <module name="ArrayTypeStyle"/>
81         <module name="MissingSwitchDefault"/>
82         <module name="FallThrough"/>
83         <module name="UpperEll"/>
84         <module name="ModifierOrder"/>
85         <module name="RedundantModifier"/>
86         <module name="EmptyLineSeparator">
87             <property name="allowNoEmptyLineBetweenFields" value="true"/>
88             <!-- No PACKAGE_DEF token, as we like our license header to be glue to "package" statement, to save 1 line screen space -->
89             <property name="tokens" value="IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, STATIC_INIT, INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
90         </module>
91         <module name="SeparatorWrap">
92             <property name="tokens" value="DOT"/>
93             <property name="option" value="nl"/>
94         </module>
95         <module name="SeparatorWrap">
96             <property name="tokens" value="COMMA"/>
97             <property name="option" value="EOL"/>
98         </module>
99         <module name="PackageName">
100             <property name="format" value="^[a-z]+(\.[a-z][a-z0-9_]*)*$"/>
101             <message key="name.invalidPattern"
102              value="Package name ''{0}'' must match pattern ''{1}''."/>
103         </module>
104         <module name="TypeName">
105             <message key="name.invalidPattern"
106              value="Type name ''{0}'' must match pattern ''{1}''."/>
107         </module>
108         <module name="MemberName">
109             <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
110             <message key="name.invalidPattern"
111              value="Member name ''{0}'' must match pattern ''{1}''."/>
112         </module>
113         <module name="ParameterName">
114             <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
115             <message key="name.invalidPattern"
116              value="Parameter name ''{0}'' must match pattern ''{1}''."/>
117         </module>
118         <module name="LocalVariableName">
119             <property name="tokens" value="VARIABLE_DEF"/>
120             <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
121             <property name="allowOneCharVarInForLoop" value="true"/>
122             <message key="name.invalidPattern"
123              value="Local variable name ''{0}'' must match pattern ''{1}''."/>
124         </module>
125         <module name="ClassTypeParameterName">
126             <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
127             <message key="name.invalidPattern"
128              value="Class type name ''{0}'' must match pattern ''{1}''."/>
129         </module>
130         <module name="MethodName">
131             <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
132             <message key="name.invalidPattern"
133              value="Method name ''{0}'' must match pattern ''{1}''."/>
134         </module>
135         <module name="MethodTypeParameterName">
136             <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
137             <message key="name.invalidPattern"
138              value="Method type name ''{0}'' must match pattern ''{1}''."/>
139         </module>
140         <module name="ConstantName" />
141         <module name="NoFinalizer"/>
142         <module name="GenericWhitespace">
143             <message key="ws.followed"
144              value="GenericWhitespace ''{0}'' is followed by whitespace."/>
145              <message key="ws.preceded"
146              value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
147              <message key="ws.illegalFollow"
148              value="GenericWhitespace ''{0}'' should followed by whitespace."/>
149              <message key="ws.notPreceded"
150              value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
151         </module>
152         <module name="Indentation">
153             <property name="basicOffset" value="4"/>
154             <property name="braceAdjustment" value="0"/>
155             <property name="caseIndent" value="4"/>
156             <property name="throwsIndent" value="4"/>
157             <property name="lineWrappingIndentation" value="4"/>
158             <property name="arrayInitIndent" value="4"/>
159         <!-- yangtools' checkstyle-logging had:
160             <property name="caseIndent" value="0"/>
161             <property name="throwsIndent" value="8"/>
162          -->
163         </module>
164         <module name="AbbreviationAsWordInName">
165             <property name="ignoreFinal" value="false"/>
166             <property name="allowedAbbreviationLength" value="4"/>
167         </module>
168         <module name="OverloadMethodsDeclarationOrder"/>
169         <module name="VariableDeclarationUsageDistance"/>
170         <module name="AvoidStarImport"/>
171         <module name="UnusedImports"/>
172         <module name="CustomImportOrder">
173             <property name="thirdPartyPackageRegExp" value=".*"/>
174             <property name="sortImportsInGroupAlphabetically" value="true"/>
175             <property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
176         </module>
177         <module name="RedundantImport"/>
178         <module name="MethodParamPad"/>
179         <module name="OperatorWrap">
180             <property name="option" value="NL"/>
181             <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 "/>
182         </module>
183         <module name="AnnotationLocation">
184             <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
185         </module>
186         <module name="AnnotationLocation">
187             <property name="tokens" value="VARIABLE_DEF"/>
188             <property name="allowSamelineMultipleAnnotations" value="true"/>
189         </module>
190         <module name="NonEmptyAtclauseDescription"/>
191         <module name="JavadocTagContinuationIndentation"/>
192         <module name="SummaryJavadocCheck">
193             <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
194         </module>
195         <!-- JavaDoc: Do NOT enforce JavaDoc presence, BUT if there is any, it must be uniform and well formed.
196                       This is OpenDaylight's pragmatic compromise:
197                         * Javadoc on every public method would take a long time to happen.
198                         * We want to encourage informative javadocs, but "stub" javadocs are arguably worse than no javadocs.
199                         * Javadocs on public methods of interfaces should be mandatory, but Checkstyle does not distinguish those
200                           (yet; see https://github.com/sevntu-checkstyle/sevntu.checkstyle/issues/70).
201           -->
202         <module name="JavadocParagraph">
203             <property name="allowNewlineParagraph" value="false"/>
204         </module>
205         <module name="AtclauseOrder">
206             <property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
207             <property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
208         </module>
209 <!-- Uncommenting this would JavaDoc mandatory
210      on all public methods, constructors and annotations, but not on all simple getters and setters (optional);
211      and on all public annotation types (refine "token" to make it on all public classes).
212
213         <module name="JavadocType">
214             <property name="scope" value="public"/>
215             <property name="tokens" value="ANNOTATION_DEF"/>
216         </module>
217         <module name="JavadocMethod">
218             <property name="scope" value="public"/>
219             <property name="tokens" value="METHOD_DEF, CTOR_DEF, ANNOTATION_FIELD_DEF"/>
220             <property name="allowMissingPropertyJavadoc" value="true" />
221             <property name="allowMissingParamTags" value="true"/>
222             <property name="allowMissingThrowsTags" value="true"/>
223             <property name="allowMissingReturnTag" value="true"/>
224             <property name="minLineCount" value="2"/>
225             <property name="allowedAnnotations" value="Override, Test"/>
226             <property name="allowThrowsTagsForSubclasses" value="true"/>
227         </module>
228   -->
229         <module name="JavadocStyle">
230             <!-- Do NOT 'scope' this one; any JavaDoc (public/protected/private) IFF present, should be style checked. -->
231             <property name="checkEmptyJavadoc" value="true" />
232             <!-- All except PACKAGE_DEF, due to a Checkstyle particularity (bug?):
233                  For all tokens, JavadocStyle checks JavaDoc compliance IFF present;
234                  only for package-info.java this ENFORCES that there is a JavaDoc
235                  in each package-info.java.  We believe this to be a bug because
236                  JavadocPackage seems to be inteded for enforcement.  Therefore,
237                  in line with not enforcing JavaDoc everywhere, just checking when
238                  it's present, we must therefore customize the tokens list here.
239                  see https://github.com/checkstyle/checkstyle/issues/3416
240              -->
241             <property name="tokens" value="ANNOTATION_DEF, ANNOTATION_FIELD_DEF, CLASS_DEF, CTOR_DEF, ENUM_CONSTANT_DEF, ENUM_DEF, INTERFACE_DEF, METHOD_DEF, VARIABLE_DEF"/>
242         </module>
243         <module name="MethodName">
244             <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
245             <message key="name.invalidPattern"
246              value="Method name ''{0}'' must match pattern ''{1}''."/>
247         </module>
248         <module name="SingleLineJavadoc"/>
249         <module name="EmptyStatement"/>
250         <module name="EqualsHashCode"/>
251
252         <!-- Checks for Exception Handling Anti-Patterns -->
253         <module name="IllegalCatch"/>
254         <module name="IllegalThrows" />
255         <module name="MutableException"/>
256         <!-- TODO Once new remote repo to proxy for sevntu has be added to nexus.opendaylight.org ,
257              (waiting for ticket #24830 with helpdesk@opendaylight.org), and https://git.opendaylight.org/gerrit/#/c/41075/
258              has been merged, then add the following additional Exception Handling Anti-Patterns related checks here:
259
260         <module name="AvoidHidingCauseExceptionCheck" />
261   ??
262         <module name="com.github.sevntu.checkstyle.checks.coding.AvoidHidingCauseExceptionCheck" />
263
264         <module name="EitherLogOrThrowCheck" />
265   ??
266         <module name="com.github.sevntu.checkstyle.checks.coding.EitherLogOrThrowCheck" />
267
268           -->
269
270         <!-- Checks for API conventions and the like -->
271         <module name="com.github.sevntu.checkstyle.checks.coding.ForbidCertainImportsCheck">
272             <property name="packageNameRegexp" value=".*" />
273             <property name="forbiddenImportsRegexp" value="com.google.common.base.Charsets" />
274             <property name="forbiddenImportsExcludesRegexp" value="" />
275             <message key="forbid.certain.imports" value="Use ''java.nio.charset.StandardCharsets'' instead of ''{0}''" />
276         </module>
277     </module>
278 </module>