xref: /aosp_15_r20/external/opencensus-java/buildscripts/checkstyle.xml (revision a24ffb47c3166327784aa05b149974e82e8f71b8)
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<!--
7    Checkstyle configuration that checks the Google coding conventions from Google Java Style
8    that can be found at https://google.github.io/styleguide/javaguide.html.
9
10    Checkstyle is very configurable. Be sure to read the documentation at
11    http://checkstyle.sf.net (or in your downloaded distribution).
12
13    To completely disable a check, just comment it out or delete it from the file.
14
15    Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
16 -->
17
18<module name = "Checker">
19    <property name="charset" value="UTF-8"/>
20
21    <property name="severity" value="error"/>
22
23
24    <module name="RegexpHeader">
25        <property name="headerFile" value="${rootDir}/buildscripts/checkstyle.license"/>
26        <property name="fileExtensions" value="java"/>
27    </module>
28
29    <property name="fileExtensions" value="java, properties, xml"/>
30    <!-- Checks for whitespace                               -->
31    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
32    <module name="FileTabCharacter">
33        <property name="eachLine" value="true"/>
34    </module>
35
36    <module name="TreeWalker">
37        <module name="OuterTypeFilename"/>
38        <module name="IllegalTokenText">
39            <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
40            <property name="format"
41             value="\\u00(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"
43             value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
44        </module>
45        <module name="AvoidEscapedUnicodeCharacters">
46            <property name="allowEscapesForControlCharacters" value="true"/>
47            <property name="allowByTailComment" value="true"/>
48            <property name="allowNonPrintableEscapes" value="true"/>
49        </module>
50        <module name="LineLength">
51            <property name="max" value="100"/>
52            <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
53        </module>
54        <module name="AvoidStarImport"/>
55        <module name="RedundantImport"/>
56        <module name="OneTopLevelClass"/>
57        <module name="NoLineWrap"/>
58        <module name="EmptyBlock">
59            <property name="option" value="TEXT"/>
60            <property name="tokens"
61             value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
62        </module>
63        <module name="NeedBraces"/>
64        <module name="LeftCurly"/>
65        <module name="RightCurly">
66            <property name="id" value="RightCurlySame"/>
67            <property name="tokens"
68             value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE,
69                    LITERAL_DO"/>
70        </module>
71        <module name="RightCurly">
72            <property name="id" value="RightCurlyAlone"/>
73            <property name="option" value="alone"/>
74            <property name="tokens"
75             value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT,
76                    INSTANCE_INIT"/>
77        </module>
78        <module name="WhitespaceAround">
79            <property name="allowEmptyConstructors" value="true"/>
80            <property name="allowEmptyMethods" value="true"/>
81            <property name="allowEmptyTypes" value="true"/>
82            <property name="allowEmptyLoops" value="true"/>
83            <message key="ws.notFollowed"
84             value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
85            <message key="ws.notPreceded"
86             value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
87        </module>
88        <module name="OneStatementPerLine"/>
89        <module name="MultipleVariableDeclarations"/>
90        <module name="ArrayTypeStyle"/>
91        <!-- <!-\- This rule conflicts with Error Prone's exhaustiveness checking. -\-> -->
92        <!-- <module name="MissingSwitchDefault"/> -->
93        <module name="FallThrough"/>
94        <module name="UpperEll"/>
95        <module name="ModifierOrder"/>
96        <module name="EmptyLineSeparator">
97            <property name="allowNoEmptyLineBetweenFields" value="true"/>
98        </module>
99        <module name="SeparatorWrap">
100            <property name="id" value="SeparatorWrapDot"/>
101            <property name="tokens" value="DOT"/>
102            <property name="option" value="nl"/>
103        </module>
104        <module name="SeparatorWrap">
105            <property name="id" value="SeparatorWrapComma"/>
106            <property name="tokens" value="COMMA"/>
107            <property name="option" value="EOL"/>
108        </module>
109        <module name="SeparatorWrap">
110            <!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/258 -->
111            <property name="id" value="SeparatorWrapEllipsis"/>
112            <property name="tokens" value="ELLIPSIS"/>
113            <property name="option" value="EOL"/>
114        </module>
115        <module name="SeparatorWrap">
116            <!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/259 -->
117            <property name="id" value="SeparatorWrapArrayDeclarator"/>
118            <property name="tokens" value="ARRAY_DECLARATOR"/>
119            <property name="option" value="EOL"/>
120        </module>
121        <module name="SeparatorWrap">
122            <property name="id" value="SeparatorWrapMethodRef"/>
123            <property name="tokens" value="METHOD_REF"/>
124            <property name="option" value="nl"/>
125        </module>
126        <module name="PackageName">
127            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
128            <message key="name.invalidPattern"
129             value="Package name ''{0}'' must match pattern ''{1}''."/>
130        </module>
131        <module name="TypeName">
132            <message key="name.invalidPattern"
133             value="Type name ''{0}'' must match pattern ''{1}''."/>
134        </module>
135        <module name="MemberName">
136            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
137            <message key="name.invalidPattern"
138             value="Member name ''{0}'' must match pattern ''{1}''."/>
139        </module>
140        <module name="ParameterName">
141            <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
142            <message key="name.invalidPattern"
143             value="Parameter name ''{0}'' must match pattern ''{1}''."/>
144        </module>
145        <module name="LambdaParameterName">
146            <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
147            <message key="name.invalidPattern"
148                     value="Lambda parameter name ''{0}'' must match pattern ''{1}''."/>
149        </module>
150        <module name="CatchParameterName">
151            <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
152            <message key="name.invalidPattern"
153             value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
154        </module>
155        <module name="LocalVariableName">
156            <property name="tokens" value="VARIABLE_DEF"/>
157            <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
158            <message key="name.invalidPattern"
159             value="Local variable name ''{0}'' must match pattern ''{1}''."/>
160        </module>
161        <module name="ClassTypeParameterName">
162            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
163            <message key="name.invalidPattern"
164             value="Class type name ''{0}'' must match pattern ''{1}''."/>
165        </module>
166        <module name="MethodTypeParameterName">
167            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
168            <message key="name.invalidPattern"
169             value="Method type name ''{0}'' must match pattern ''{1}''."/>
170        </module>
171        <module name="InterfaceTypeParameterName">
172            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
173            <message key="name.invalidPattern"
174             value="Interface type name ''{0}'' must match pattern ''{1}''."/>
175        </module>
176        <module name="GenericWhitespace">
177            <message key="ws.followed"
178             value="GenericWhitespace ''{0}'' is followed by whitespace."/>
179            <message key="ws.preceded"
180             value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
181            <message key="ws.illegalFollow"
182             value="GenericWhitespace ''{0}'' should followed by whitespace."/>
183            <message key="ws.notPreceded"
184             value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
185        </module>
186        <!-- <!-\- Checkstyle indentation rules conflict with google-java-format: -\-> -->
187        <!-- <module name="Indentation"> -->
188        <!--     <property name="basicOffset" value="2"/> -->
189        <!--     <property name="braceAdjustment" value="0"/> -->
190        <!--     <property name="caseIndent" value="2"/> -->
191        <!--     <property name="throwsIndent" value="4"/> -->
192        <!--     <property name="lineWrappingIndentation" value="4"/> -->
193        <!--     <property name="arrayInitIndent" value="2"/> -->
194        <!-- </module> -->
195        <module name="AbbreviationAsWordInName">
196            <property name="ignoreFinal" value="false"/>
197            <property name="allowedAbbreviationLength" value="1"/>
198        </module>
199        <module name="OverloadMethodsDeclarationOrder"/>
200        <!-- <!-\- Many unit tests define all variables at the start of the method. -\-> -->
201        <!-- <module name="VariableDeclarationUsageDistance"/> -->
202        <module name="CustomImportOrder">
203            <property name="sortImportsInGroupAlphabetically" value="true"/>
204            <property name="separateLineBetweenGroups" value="true"/>
205            <property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
206        </module>
207        <module name="MethodParamPad"/>
208        <module name="NoWhitespaceBefore">
209            <property name="tokens"
210             value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
211            <property name="allowLineBreaks" value="true"/>
212        </module>
213        <module name="ParenPad"/>
214        <module name="OperatorWrap">
215            <property name="option" value="NL"/>
216            <property name="tokens"
217             value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR,
218                    LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF "/>
219        </module>
220        <module name="AnnotationLocation">
221            <property name="id" value="AnnotationLocationMostCases"/>
222            <property name="tokens"
223             value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
224        </module>
225        <module name="AnnotationLocation">
226            <property name="id" value="AnnotationLocationVariables"/>
227            <property name="tokens" value="VARIABLE_DEF"/>
228            <property name="allowSamelineMultipleAnnotations" value="true"/>
229        </module>
230        <module name="NonEmptyAtclauseDescription"/>
231        <module name="JavadocTagContinuationIndentation"/>
232        <module name="SummaryJavadoc">
233            <property name="forbiddenSummaryFragments"
234             value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
235        </module>
236        <module name="JavadocParagraph"/>
237        <module name="AtclauseOrder">
238            <property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
239            <property name="target"
240             value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
241        </module>
242        <module name="JavadocMethod">
243            <property name="scope" value="public"/>
244            <property name="allowMissingParamTags" value="true"/>
245            <property name="allowMissingThrowsTags" value="true"/>
246            <property name="allowMissingReturnTag" value="true"/>
247            <property name="minLineCount" value="2"/>
248            <!-- <!-\- Too restrictive for tests -\-> -->
249            <!-- <property name="allowedAnnotations" value="Override, Test"/ -->
250            <property name="allowedAnnotations"
251                      value="Override, Test, Before, After, BeforeClass, AfterClass, Setup,
252                             TearDown"/>
253            <property name="allowThrowsTagsForSubclasses" value="true"/>
254        </module>
255        <module name="MethodName">
256            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
257            <message key="name.invalidPattern"
258             value="Method name ''{0}'' must match pattern ''{1}''."/>
259        </module>
260        <module name="SingleLineJavadoc">
261            <!-- <!-\- Wrong interpretation of the style guide; -\-> -->
262            <!-- <property name="ignoreInlineTags" value="false"/ -->
263        </module>
264        <module name="EmptyCatchBlock">
265            <property name="exceptionVariableName" value="expected"/>
266        </module>
267        <module name="CommentsIndentation"/>
268        <module name="SuppressWarningsHolder"/>
269        <module name="ImportControl">
270            <property name="file" value="${rootDir}/buildscripts/import-control.xml"/>
271            <property name="path" value="^.*[\\/]src[\\/]main[\\/]java[\\/].*$"/>
272        </module>
273        <module name="SuppressionCommentFilter"/>
274    </module>
275    <module name="SuppressWarningsFilter"/>
276</module>
277