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