Merge "Refine Checkstyle rules: optional JavaDoc on c'str & getter/setter"
[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
6 <!--
7
8     ODL Checkstyle configuration, originally based on the the Google coding conventions from:
9
10     -  Google Java Style
11        https://google-styleguide.googlecode.com/svn-history/r130/trunk/javaguide.html
12
13     Checkstyle is very configurable. Be sure to read the documentation at
14     http://checkstyle.sf.net (or in your downloaded distribution).
15
16     Most Checks are configurable, be sure to consult the documentation.
17
18     To completely disable a check, just comment it out or delete it from the file.
19
20     Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
21
22  -->
23
24 <module name = "Checker">
25     <property name="charset" value="UTF-8"/>
26
27     <property name="severity" value="${checkstyle.violationSeverity}" default="warning"/>
28
29     <!-- Checks for whitespace                               -->
30     <!-- See http://checkstyle.sf.net/config_whitespace.html -->
31         <module name="FileTabCharacter">
32             <property name="eachLine" value="true"/>
33         </module>
34
35     <module name="SuppressWarningsFilter"/>
36     <module name="TreeWalker">
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="AvoidStarImport"/>
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             <property name="maxLineLength" value="100"/>
63         </module>
64         <module name="RightCurly"/>
65         <module name="RightCurly">
66             <property name="option" value="alone"/>
67             <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
68         </module>
69         <module name="WhitespaceAround">
70             <property name="allowEmptyConstructors" value="true"/>
71             <property name="allowEmptyMethods" value="true"/>
72             <property name="allowEmptyTypes" value="true"/>
73             <property name="allowEmptyLoops" value="true"/>
74             <message key="ws.notFollowed"
75              value="WhitespaceAround: ''{0}'' is not followed by whitespace."/>
76              <message key="ws.notPreceded"
77              value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
78         </module>
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="EmptyLineSeparator">
87             <property name="allowNoEmptyLineBetweenFields" value="true"/>
88         </module>
89         <module name="SeparatorWrap">
90             <property name="tokens" value="DOT"/>
91             <property name="option" value="nl"/>
92         </module>
93         <module name="SeparatorWrap">
94             <property name="tokens" value="COMMA"/>
95             <property name="option" value="EOL"/>
96         </module>
97         <module name="PackageName">
98             <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
99             <message key="name.invalidPattern"
100              value="Package name ''{0}'' must match pattern ''{1}''."/>
101         </module>
102         <module name="TypeName">
103             <message key="name.invalidPattern"
104              value="Type name ''{0}'' must match pattern ''{1}''."/>
105         </module>
106         <module name="MemberName">
107             <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
108             <message key="name.invalidPattern"
109              value="Member name ''{0}'' must match pattern ''{1}''."/>
110         </module>
111         <module name="ParameterName">
112             <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
113             <message key="name.invalidPattern"
114              value="Parameter name ''{0}'' must match pattern ''{1}''."/>
115         </module>
116         <module name="LocalVariableName">
117             <property name="tokens" value="VARIABLE_DEF"/>
118             <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
119             <property name="allowOneCharVarInForLoop" value="true"/>
120             <message key="name.invalidPattern"
121              value="Local variable name ''{0}'' must match pattern ''{1}''."/>
122         </module>
123         <module name="ClassTypeParameterName">
124             <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
125             <message key="name.invalidPattern"
126              value="Class type name ''{0}'' must match pattern ''{1}''."/>
127         </module>
128         <module name="MethodTypeParameterName">
129             <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
130             <message key="name.invalidPattern"
131              value="Method type name ''{0}'' must match pattern ''{1}''."/>
132         </module>
133         <module name="NoFinalizer"/>
134         <module name="GenericWhitespace">
135             <message key="ws.followed"
136              value="GenericWhitespace ''{0}'' is followed by whitespace."/>
137              <message key="ws.preceded"
138              value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
139              <message key="ws.illegalFollow"
140              value="GenericWhitespace ''{0}'' should followed by whitespace."/>
141              <message key="ws.notPreceded"
142              value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
143         </module>
144         <module name="Indentation">
145             <property name="basicOffset" value="4"/>
146             <property name="braceAdjustment" value="0"/>
147             <property name="caseIndent" value="4"/>
148             <property name="throwsIndent" value="4"/>
149             <property name="lineWrappingIndentation" value="4"/>
150             <property name="arrayInitIndent" value="4"/>
151         </module>
152         <module name="AbbreviationAsWordInName">
153             <property name="ignoreFinal" value="false"/>
154             <property name="allowedAbbreviationLength" value="3"/>
155         </module>
156         <module name="OverloadMethodsDeclarationOrder"/>
157         <module name="VariableDeclarationUsageDistance"/>
158         <module name="CustomImportOrder">
159             <property name="thirdPartyPackageRegExp" value=".*"/>
160             <property name="specialImportsRegExp" value="^com.*"/>
161             <property name="sortImportsInGroupAlphabetically" value="true"/>
162             <property name="customImportOrderRules" value="STATIC###STANDARD_JAVA_PACKAGE###THIRD_PARTY_PACKAGE###SPECIAL_IMPORTS"/>
163         </module>
164         <module name="MethodParamPad"/>
165         <module name="OperatorWrap">
166             <property name="option" value="NL"/>
167             <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 "/>
168         </module>
169         <module name="AnnotationLocation">
170             <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
171         </module>
172         <module name="AnnotationLocation">
173             <property name="tokens" value="VARIABLE_DEF"/>
174             <property name="allowSamelineMultipleAnnotations" value="true"/>
175         </module>
176         <module name="NonEmptyAtclauseDescription"/>
177         <module name="JavadocTagContinuationIndentation"/>
178         <module name="SummaryJavadocCheck">
179             <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
180         </module>
181         <module name="JavadocParagraph"/>
182         <module name="AtclauseOrder">
183             <property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
184             <property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
185         </module>
186         <module name="JavadocMethod">
187             <property name="scope" value="public"/>
188             <property name="tokens" value="METHOD_DEF"/> <!-- JavaDoc on constructors is optional -->
189             <property name="allowMissingPropertyJavadoc" value="true" /> <!-- JavaDoc on STRICT (!) getters and setters is optional -->
190             <property name="allowMissingParamTags" value="true"/>
191             <property name="allowMissingThrowsTags" value="true"/>
192             <property name="allowMissingReturnTag" value="true"/>
193             <property name="minLineCount" value="2"/>
194             <property name="allowedAnnotations" value="Override, Test"/>
195             <property name="allowThrowsTagsForSubclasses" value="true"/>
196         </module>
197         <module name="MethodName">
198             <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
199             <message key="name.invalidPattern"
200              value="Method name ''{0}'' must match pattern ''{1}''."/>
201         </module>
202         <module name="SingleLineJavadoc"/>
203     </module>
204 </module>