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 <!-- Filters -->
20 <module name="SeverityMatchFilter">
21 <!-- report all violations except ignore -->
22 <property name="severity" value="ignore"/>
23 <property name="acceptOnMatch" value="false"/>
24 </module>
25 <!-- Tone down the checking for test code -->
26 <module name="SuppressionSingleFilter">
27 <property name="checks" value="JavadocPackage"/>
28 <property name="files" value=".*[\\/]src[\\/](test|it)[\\/]"/>
29 </module>
30 <module name="SuppressionSingleFilter">
31 <property name="checks" value="JavadocMethod"/>
32 <property name="files" value=".*[\\/]src[\\/](test|it)[\\/].*(?<!Support)\.java"/>
33 </module>
34 <module name="SuppressWarningsFilter"/>
35 <module name="SuppressWithPlainTextCommentFilter">
36 <!--
37 Use suppressions.xml for suppressions, this is only example.
38 checkFormat will prevent suppression comments from being valid.
39 -->
40 <property name="checkFormat" value="IGNORETHIS"/>
41 <property name="offCommentFormat" value="CSOFF\: .*"/>
42 <property name="onCommentFormat" value="CSON\: .*"/>
43 </module>
44 <!-- Javadoc Comments -->
45 <module name="JavadocPackage">
46 <property name="allowLegacy" value="false"/>
47 </module>
48
49 <!-- Miscellaneous -->
50 <module name="NewlineAtEndOfFile"/>
51 <module name="Translation">
52 <property name="requiredTranslations" value="de, fr, fi, es, pt, ja, tr, zh"/>
53 </module>
54 <module name="UniqueProperties"/>
55 <module name="OrderedProperties" />
56
57 <!-- Regexp -->
58 <module name="RegexpMultiline"/>
59 <module name="RegexpMultiline">
60 <property name="format" value="\r?\n[\t ]*\r?\n[\t ]*\r?\n"/>
61 <property name="fileExtensions" value="java,xml,properties"/>
62 <property name="message" value="Unnecessary consecutive lines"/>
63 </module>
64 <module name="RegexpMultiline">
65 <property name="format" value="/\*\*\W+\* +\p{javaLowerCase}"/>
66 <property name="fileExtensions" value="java"/>
67 <property name="message"
68 value="First sentence in a comment should start with a capital letter"/>
69 </module>
70 <module name="RegexpMultiline">
71 <property name="format" value="^\s*$" />
72 <property name="matchAcrossLines" value="true" />
73 <property name="message" value="Empty file is not allowed" />
74 </module>
75 <module name="RegexpSingleline">
76 <property name="format" value="\s+$"/>
77 <property name="minimum" value="0"/>
78 <property name="maximum" value="0"/>
79 </module>
80 <module name="RegexpSingleline">
81 <property name="format" value="/\*\* +\p{javaLowerCase}"/>
82 <property name="fileExtensions" value="java"/>
83 <property name="message"
84 value="First sentence in a comment should start with a capital letter"/>
85 </module>
86 <module name="RegexpSingleline">
87 <property name="format" value="^(?!(.*http|import)).{101,}$"/>
88 <property name="fileExtensions" value="g, g4"/>
89 <property name="message" value="Line should not be longer than 100 symbols"/>
90 </module>
91 <module name="RegexpSingleline">
92 <property name="format"
93 value="^(?!(\s*,?\s*<a href="[^"]+">|.*http)).{101,}$"/>
94 <property name="fileExtensions" value="xml, vm"/>
95 <property name="message" value="Line should not be longer than 100 symbols"/>
96 </module>
97 <!--
98 Links to .dtd files should start with "/", "http://" or "https://",
99 otherwise they will be broken after archiving the documentation.
100 See https://github.com/checkstyle/checkstyle/issues/7340 for details.
101 -->
102 <module name="RegexpSingleline">
103 <property name="format" value="href="(?!\/|https?:\/\/).*?\.dtd""/>
104 <property name="fileExtensions" value="xml, vm"/>
105 <property name="message"
106 value="Relative links to DTD files are prohibited. Please use absolute path or uri instead."/>
107 </module>
108 <module name="RegexpSingleline">
109 <property name="id" value="noSourceforgeNetLinks"/>
110 <property name="format" value="checkstyle\.sourceforge\.net"/>
111 <property name="message"
112 value="Old site links should not be used, please use https://checkstyle.org"/>
113 </module>
114 <module name="RegexpSingleline">
115 <property name="id" value="noSourceforgeIoLinks"/>
116 <property name="format" value="checkstyle\.sourceforge\.io"/>
117 <property name="message"
118 value="Old site links should not be used, please use https://checkstyle.org"/>
119 </module>
120 <module name="RegexpSingleline">
121 <property name="id" value="noPackageCommentWithOtherVisibility"/>
122 <property name="format" value="/\*\s+package\s+\*/\s+(private|protected|public)"/>
123 <property name="fileExtensions" value="java"/>
124 <property name="message"
125 value="Package comment marker should not be used if other visibility is defined"/>
126 </module>
127 <module name="RegexpOnFilename" />
128 <module name="RegexpOnFilename">
129 <property name="folderPattern" value="[\\/]src[\\/]\w+[\\/]java[\\/]"/>
130 <property name="fileNamePattern" value="\.java$"/>
131 <property name="match" value="false"/>
132 <message key="regexp.filepath.mismatch"
133 value="Only java files should be located in the ''src/*/java'' folders."/>
134 </module>
135 <module name="RegexpOnFilename">
136 <property name="folderPattern" value="[\\/]src[\\/]xdocs[\\/]"/>
137 <property name="fileNamePattern" value="\.(xml)|(vm)$"/>
138 <property name="match" value="false"/>
139 <message key="regexp.filepath.mismatch"
140 value="All files in the ''src/xdocs'' folder should have the ''xml'' or ''vm'' extension."/>
141 </module>
142 <module name="RegexpOnFilename">
143 <property name="folderPattern" value="[\\/]src[\\/]it[\\/]java[\\/]"/>
144 <property name="fileNamePattern" value="^((\w+Test)|(\w+TestSupport)|(Abstract\w+))\.java$"/>
145 <property name="match" value="false"/>
146 <message key="regexp.filepath.mismatch"
147 value="All files in the ''src/it/java'' folder
148 should be named ''*Test.java'' or ''Abstract*.java''."/>
149 </module>
150
151 <!-- Size Violations -->
152 <module name="FileLength">
153 <property name="fileExtensions" value="java"/>
154 </module>
155 <module name="LineLength">
156 <property name="fileExtensions" value="java"/>
157 <property name="max" value="100"/>
158 <property name="ignorePattern" value="^ *\* *([^ ]+|\{@code .*|<a href="[^"]+">)$"/>
159 </module>
160
161 <!-- Whitespace -->
162 <module name="FileTabCharacter">
163 <property name="eachLine" value="false"/>
164 </module>
165
166 <module name="TreeWalker">
167
168 <!-- Class Design -->
169 <module name="DesignForExtension">
170 <property name="ignoredAnnotations"
171 value="Override, Test, Before, After, BeforeClass, AfterClass"/>
172 <property name="ignoredAnnotations"
173 value="BeforeAll, AfterAll, BeforeEach, AfterEach"/>
174 </module>
175 <module name="FinalClass"/>
176 <module name="HideUtilityClassConstructor"/>
177 <module name="InnerTypeLast"/>
178 <module name="InterfaceIsType"/>
179 <module name="MutableException"/>
180 <module name="OneTopLevelClass"/>
181 <module name="ThrowsCount">
182 <property name="max" value="2"/>
183 </module>
184 <module name="VisibilityModifier">
185 <property name="ignoreAnnotationCanonicalNames"
186 value="org.junit.Rule, org.junit.jupiter.api.io.TempDir"/>
187 </module>
188
189 <!-- usuppress javadoc parsing errors, as we test Check not a parser -->
190 <module name="SuppressionXpathSingleFilter">
191 <property name="message" value="Javadoc comment at column \d+ has parse error"/>
192 </module>
193 </module>
194
195 <!-- as we run on regression even on non-compiled files we need to skip exceptions on them -->
196 <module name="SuppressionSingleFilter">
197 <property name="message" value="Exception occurred while parsing"/>
198 <property name="checks" value="Checker"/>
199 </module>
200 </module>