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