blob: dc79c585f652130d668ff90c8c13804ce8e3fec6 [file]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--
This is a checkstyle configuration file.
For descriptions of what the following rules do,
please see the checkstyle configuration page at
http://checkstyle.sourceforge.net/config.html
-->
<module name="Checker">
<!--
Whether whitespaces should be present before or after various kind of tokens,
and where line wraps are allowed or mandated.
-->
<module name="FileTabCharacter"/> <!-- No tab characters in the file. -->
<module name="NewlineAtEndOfFile"/> <!-- Newline at the end of each file. -->
<module name="TreeWalker">
<module name="RegexpSinglelineJava">
<property name="format" value="\s+$"/>
<property name="message" value="Trailing spaces not allowed."/>
</module>
<module name="NoLineWrap"/> <!-- Imports and package statements are not line-wrapped. -->
<module name="RedundantImport"/> <!-- No redundant import statements. -->
<module name="GenericWhitespace"/> <!-- Whitespace around the Generic tokens follow typical convention. -->
<module name="TypecastParenPad"/> <!-- No space inside parentheses for typecasts. -->
<module name="SeparatorWrap"> <!-- No line wrapping before comma. -->
<property name="tokens" value="COMMA"/>
</module>
<module name="WhitespaceAfter"> <!-- Checks that a token is followed by whitespace. -->
<property name="tokens" value="TYPECAST, LITERAL_IF, LITERAL_ELSE, LITERAL_WHILE, LITERAL_DO, LITERAL_FOR, DO_WHILE"/>
</module>
<module name="NoWhitespaceAfter"> <!-- No whitespace after "++" in ++x, etc. -->
<property name="tokens" value="INC, DEC, BNOT, LNOT"/>
</module>
<module name="NoWhitespaceBefore"> <!-- No whitespace before "++" in x++, etc. -->
<property name="tokens" value="COMMA, POST_INC, POST_DEC, ELLIPSIS"/>
</module>
<module name="WhitespaceAround">
<property name="tokens" value=
"MINUS_ASSIGN, STAR_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, MOD,
SL, SL_ASSIGN, SR, SR_ASSIGN, BSR, BSR_ASSIGN,
BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BXOR, BXOR_ASSIGN,
TYPE_EXTENSION_AND, LAND, LOR, QUESTION, LAMBDA,
COLON, DO_WHILE, LITERAL_DO, LITERAL_WHILE, LITERAL_FOR,
LITERAL_ELSE, LITERAL_SWITCH,
LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY,
LITERAL_SYNCHRONIZED"/>
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyMethods" value="true"/>
<property name="allowEmptyTypes" value="true"/>
<property name="allowEmptyLoops" value="true"/>
<property name="allowEmptyLambdas" value="true"/>
<property name="allowEmptyCatches" value="true"/>
</module>
<!--
Code formatting on other aspects than whitespaces. When there is different ways to express
the same thing (e.g. Java-style versus C-style of array declarations), the following rules
enforce one specific convention.
-->
<module name="UpperEll"/> <!-- Upper-case 'L' suffix for longs, not 'l'. -->
<module name="ArrayTypeStyle"/> <!-- Java-style arrays, not C-style. -->
<module name="ModifierOrder"/> <!-- Order of public, static, etc. keywords. -->
<module name="AvoidEscapedUnicodeCharacters">
<property name="allowEscapesForControlCharacters" value="true"/>
<property name="allowNonPrintableEscapes" value="true"/>
<property name="allowIfAllCharactersEscaped" value="true"/>
<property name="allowByTailComment" value="true"/>
</module>
<!--
Programming language constructs: number of elements, modifiers, etc.
-->
<module name="OuterTypeNumber"/> <!-- Only one outer type per file. -->
<module name="OuterTypeFilename"/> <!-- Outer type name and file name shall match. -->
<module name="InterfaceIsType"/> <!-- Do not allow interface without methods. -->
<module name="FinalClass"/> <!-- Class having only private constructors should be final. -->
<module name="PackageDeclaration"/> <!-- All classes shall be in a package. -->
<module name="HideUtilityClassConstructor"/> <!-- No public constructor in utility classes. -->
<module name="MissingOverride"/> <!-- @Override annotation everywhere applicable. -->
<module name="PackageAnnotation"/> <!-- Package annotations shall be used only in package-info files. -->
<module name="EmptyCatchBlock"/> <!-- No empty catch unless there is a comment inside. -->
<module name="CovariantEquals"/> <!-- No equals(Foo), unless equals(Object) also exists. -->
<module name="ExplicitInitialization"/> <!-- No unnecessary initialization to 0 or null. -->
<module name="SimplifyBooleanReturn"/> <!-- No if (boolean) return true; else return false. -->
<module name="RedundantModifier"> <!-- No modifiers that were implicit. -->
<property name="tokens" value="VARIABLE_DEF, ANNOTATION_FIELD_DEF, INTERFACE_DEF, CLASS_DEF, ENUM_DEF, RESOURCE"/>
</module>
</module>
<module name="UniqueProperties"/> <!-- No duplicated keys in *.properties files. -->
<module name="BeforeExecutionExclusionFileFilter"><!-- Exclude module-info.java, as of october 21, 2022 checkstyle does not support the module syntax -->
<property name="fileNamePattern" value="module\-info\.java$"/>
</module>
</module>