1   <?xml version="1.0"?>
2   <!DOCTYPE module PUBLIC
3             "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
4             "https://checkstyle.org/dtds/configuration_1_3.dtd">
5   
6   <module name = "Checker">
7       <property name="charset" value="UTF-8"/>
8   
9       <!-- do not change severity to 'error', as that will hide errors caused by exceptions -->
10      <property name="severity" value="warning"/>
11  
12      <!-- haltOnException is required for exception fixes and reporting of all exceptions -->
13      <property name="haltOnException" value="false"/>
14  
15      <!-- BeforeExecutionFileFilters is required for sources of java9 -->
16      <module name="BeforeExecutionExclusionFileFilter">
17          <property name="fileNamePattern" value="module\-info\.java$" />
18      </module>
19  
20      <module name="TreeWalker">
21          <property name="tabWidth" value="4"/>
22  
23      <!-- Filters -->
24      <module name="SuppressionCommentFilter"/>
25      <module name="SuppressWithNearbyCommentFilter">
26        <property name="commentFormat" value="-@cs\[(\w{8,})\] \w[\(\)\-\.\'\`\,\:\;\w ]{10,}"/>
27        <property name="checkFormat" value="$1"/>
28        <property name="influenceFormat" value="3"/>
29      </module>
30  
31      <!-- Annotation -->
32      <module name="com.github.sevntu.checkstyle.checks.annotation.ForbidAnnotationElementValueCheck">
33        <property name="annotationName" value="Test"/>
34        <property name="elementName" value="expected"/>
35        <property name="forbiddenElementValueRegexp" value=".*"/>
36      </module>
37      <module name="com.github.sevntu.checkstyle.checks.annotation.ForbidAnnotationCheck">
38        <property name="annotationNames" value="Ignore, VisibleForTesting"/>
39        <property name="annotationTargets" value="METHOD_DEF"/>
40      </module>
41      <module name="com.github.sevntu.checkstyle.checks.annotation.RequiredParameterForAnnotationCheck"/>
42      <module name="com.github.sevntu.checkstyle.checks.annotation.RequiredParameterForAnnotationCheck">
43        <property name="annotationName" value="Generated"/>
44        <property name="requiredParameters" value="value"/>
45      </module>
46  
47      <!-- Coding -->
48      <module name="com.github.sevntu.checkstyle.checks.coding.ForbidCCommentsInMethodsCheck"/>
49      <module name="com.github.sevntu.checkstyle.checks.coding.NoNullForCollectionReturnCheck">
50        <property name="collectionList"
51          value="AbstractCollection AbstractList AbstractQueue AbstractSequentialList AbstractSet ArrayBlockingQueue ArrayDeque ArrayList AttributeList BeanContextServicesSupport BeanContextSupport ConcurrentLinkedDeque ConcurrentLinkedQueue ConcurrentSkipListSet CopyOnWriteArrayList CopyOnWriteArraySet DelayQueue EnumSet HashSet JobStateReasons LinkedBlockingDeque LinkedBlockingQueue LinkedHashSet LinkedList LinkedTransferQueue PriorityBlockingQueue PriorityQueue RoleList RoleUnresolvedList Stack SynchronousQueue TreeSet Vector Collection List Map Set"/>
52        <property name="searchThroughMethodBody" value="false"/>
53      </module>
54      <module name="com.github.sevntu.checkstyle.checks.coding.CustomDeclarationOrderCheck">
55        <property name="customDeclarationOrder"
56          value="Field(public) ### Field(protected) ### Field(private) ### CTOR(.*) ### Method(.*)### InnerClass()"/>
57        <property name="caseSensitive" value="true"/>
58        <property name="fieldPrefix" value=""/>
59      </module>
60      <module name="com.github.sevntu.checkstyle.checks.coding.ForbidReturnInFinallyBlockCheck"/>
61      <module name="com.github.sevntu.checkstyle.checks.coding.MultipleStringLiteralsExtendedCheck">
62        <property name="allowedDuplicates" value="1"/>
63        <property name="ignoreOccurrenceContext" value="ANNOTATION"/>
64        <property name="ignoreStringsRegexp" value="^&quot;&quot;$"/>
65        <property name="highlightAllDuplicates" value="false"/>
66      </module>
67      <module name="com.github.sevntu.checkstyle.checks.coding.AvoidDefaultSerializableInInnerClassesCheck">
68        <property name="allowPartialImplementation" value="false"/>
69      </module>
70      <module name="com.github.sevntu.checkstyle.checks.coding.ConfusingConditionCheck">
71        <property name="multiplyFactorForElseBlocks" value="4"/>
72        <property name="ignoreInnerIf" value="true"/>
73        <property name="ignoreSequentialIf" value="true"/>
74        <property name="ignoreNullCaseInIf" value="true"/>
75        <property name="ignoreThrowInElse" value="true"/>
76      </module>
77      <module name="com.github.sevntu.checkstyle.checks.coding.LogicConditionNeedOptimizationCheck"/>
78      <module name="com.github.sevntu.checkstyle.checks.coding.ReturnBooleanFromTernaryCheck"/>
79      <module name="com.github.sevntu.checkstyle.checks.coding.ReturnNullInsteadOfBooleanCheck"/>
80      <module name="com.github.sevntu.checkstyle.checks.coding.ForbidCertainImportsCheck"/>
81      <module name="com.github.sevntu.checkstyle.checks.coding.AvoidModifiersForTypesCheck">
82        <property name="forbiddenClassesRegexpFinal" value=""/>
83        <property name="forbiddenClassesRegexpStatic" value="ULC.+"/>
84        <property name="forbiddenClassesRegexpTransient" value=""/>
85        <property name="forbiddenClassesRegexpVolatile" value=""/>
86        <property name="forbiddenClassesRegexpAnnotation" value=""/>
87        <property name="forbiddenClassesRegexpPrivate" value=""/>
88        <property name="forbiddenClassesRegexpPackagePrivate" value=""/>
89        <property name="forbiddenClassesRegexpProtected" value=""/>
90        <property name="forbiddenClassesRegexpPublic" value=""/>
91      </module>
92      <module name="com.github.sevntu.checkstyle.checks.coding.ForbidCertainMethodCheck">
93        <property name="methodName" value="assert(True|False)"/>
94        <property name="argumentCount" value="1"/>
95      </module>
96      <module name="com.github.sevntu.checkstyle.checks.coding.OverridableMethodInConstructorCheck">
97        <property name="checkCloneMethod" value="false"/>
98        <property name="checkReadObjectMethod" value="false"/>
99        <property name="matchMethodsByArgCount" value="false"/>
100     </module>
101     <module name="com.github.sevntu.checkstyle.checks.coding.AvoidNotShortCircuitOperatorsForBooleanCheck"/>
102     <module name="com.github.sevntu.checkstyle.checks.coding.MultipleVariableDeclarationsExtendedCheck">
103       <property name="ignoreCycles" value="false"/>
104       <property name="ignoreMethods" value="false"/>
105     </module>
106     <module name="com.github.sevntu.checkstyle.checks.coding.EitherLogOrThrowCheck">
107       <property name="loggerFullyQualifiedClassName" value="org.slf4j.Logger"/>
108       <property name="loggingMethodNames" value="error, warn, info, debug"/>
109     </module>
110     <module name="com.github.sevntu.checkstyle.checks.coding.AvoidHidingCauseExceptionCheck"/>
111     <module name="com.github.sevntu.checkstyle.checks.coding.IllegalCatchExtendedCheck">
112       <property name="allowThrow" value="true"/>
113       <property name="allowRethrow" value="false"/>
114     </module>
115     <module name="com.github.sevntu.checkstyle.checks.coding.ReturnCountExtendedCheck">
116       <property name="maxReturnCount" value="1"/>
117       <property name="ignoreMethodLinesCount" value="20"/>
118       <property name="minIgnoreReturnDepth" value="4"/>
119       <property name="ignoreEmptyReturns" value="true"/>
120       <property name="topLinesToIgnoreCount" value="5"/>
121       <property name="ignoreMethodsNames" value="equals"/>
122     </module>
123     <module name="com.github.sevntu.checkstyle.checks.coding.SimpleAccessorNameNotationCheck"/>
124     <module name="com.github.sevntu.checkstyle.checks.coding.UnnecessaryParenthesesExtendedCheck">
125       <property name="ignoreCalculationOfBooleanVariables" value="false"/>
126       <property name="ignoreCalculationOfBooleanVariablesWithReturn" value="false"/>
127       <property name="ignoreCalculationOfBooleanVariablesWithAssert" value="false"/>
128     </module>
129     <module name="com.github.sevntu.checkstyle.checks.coding.ForbidInstantiationCheck">
130       <property name="forbiddenClasses" value="java.lang.NullPointerExceptionCheck"/>
131     </module>
132     <module name="com.github.sevntu.checkstyle.checks.coding.AvoidConstantAsFirstOperandInConditionCheck">
133       <property name="targetConstantTypes"
134         value="LITERAL_NULL,LITERAL_TRUE,LITERAL_FALSE,NUM_INT,NUM_DOUBLE,NUM_LONG,NUM_FLOAT"/>
135     </module>
136     <module name="com.github.sevntu.checkstyle.checks.coding.FinalizeImplementationCheck"/>
137     <module name="com.github.sevntu.checkstyle.checks.coding.ForbidThrowAnonymousExceptionsCheck">
138       <property name="exceptionClassNameRegex" value="^.*Exception"/>
139     </module>
140     <module name="com.github.sevntu.checkstyle.checks.coding.MapIterationInForEachLoopCheck">
141       <property name="proposeValuesUsage" value="true"/>
142       <property name="proposeKeySetUsage" value="false"/>
143       <property name="proposeEntrySetUsage" value="false"/>
144     </module>
145     <module name="com.github.sevntu.checkstyle.checks.coding.TernaryPerExpressionCountCheck">
146       <property name="maxTernaryPerExpressionCount" value="1"/>
147       <property name="ignoreTernaryOperatorsInBraces" value="true"/>
148       <property name="ignoreIsolatedTernaryOnLine" value="true"/>
149     </module>
150     <module name="com.github.sevntu.checkstyle.checks.coding.RedundantReturnCheck">
151       <property name="allowReturnInEmptyMethodsAndConstructors" value="false"/>
152     </module>
153     <module name="com.github.sevntu.checkstyle.checks.coding.SingleBreakOrContinueCheck"/>
154     <module name="com.github.sevntu.checkstyle.checks.coding.NumericLiteralNeedsUnderscoreCheck">
155       <property name="minDecimalSymbolLength" value="7"/>
156       <property name="maxDecimalSymbolsUntilUnderscore" value="3"/>
157       <property name="minHexSymbolLength" value="5"/>
158       <property name="maxHexSymbolsUntilUnderscore" value="4"/>
159       <property name="minBinarySymbolLength" value="9"/>
160       <property name="maxBinarySymbolsUntilUnderscore" value="8"/>
161       <property name="ignoreFieldNamePattern" value="serialVersionUID"/>
162     </module>
163     <module name="com.github.sevntu.checkstyle.checks.coding.EmptyPublicCtorInClassCheck"/>
164     <module name="com.github.sevntu.checkstyle.checks.coding.DiamondOperatorForVariableDefinitionCheck"/>
165     <module name="com.github.sevntu.checkstyle.checks.coding.NameConventionForJunit4TestClassesCheck"/>
166     <module name="com.github.sevntu.checkstyle.checks.coding.UselessSuperCtorCallCheck"/>
167     <module name="com.github.sevntu.checkstyle.checks.coding.UselessSingleCatchCheck"/>
168     <module name="com.github.sevntu.checkstyle.checks.coding.WhitespaceBeforeArrayInitializerCheck"/>
169     <module name="com.github.sevntu.checkstyle.checks.coding.MoveVariableInsideIfCheck" />
170     <module name="com.github.sevntu.checkstyle.checks.coding.RequireFailForTryCatchInJunitCheck" />
171     <module name="com.github.sevntu.checkstyle.checks.coding.Jsr305AnnotationsCheck">
172       <!-- we ignore this Check only because we are not ready to follow it and refactor whole project for now-->
173       <property name="severity" value="ignore"/>
174       <property name="packages" value="com.github.sevntu.checkstyle.checks.naming,com.github.sevntu.checkstyle.checks.coding"/>
175       <property name="excludePackages" value="com.github.sevntu.checkstyle.checks.sizes,com.github.sevntu.checkstyle.checks.design"/>
176       <property name="allowOverridingReturnValue" value="false"/>
177       <property name="allowOverridingParameter" value="false"/>
178     </module>
179         <!-- Example of sevntu.checkstyle Check usage -->
180          <!-- <module name="NestedSwitchCheck"/> -->
181 
182          <!-- usuppress javadoc parsing errors, as we test Check not a parser -->
183          <module name="SuppressionXpathSingleFilter">
184             <property name="message" value="Javadoc comment at column \d+ has parse error"/>
185          </module>
186     </module>
187 
188 
189     <!-- as we run on regression even on non-compiled files we need to skip exceptions on them -->
190     <module name="SuppressionSingleFilter">
191       <property name="message" value="Exception occurred while parsing"/>
192       <property name="checks" value="Checker"/>
193     </module>
194 </module>