165 lines
7.1 KiB
XML
165 lines
7.1 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE module PUBLIC
|
|
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
|
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
|
|
|
<!--
|
|
Checkstyle configuration mirroring IntelliJ IDEA's default Java code style.
|
|
- 4-space indentation, no tabs
|
|
- 250-char line length
|
|
- K&R brace style (opening brace on same line)
|
|
- Standard naming conventions (lowerCamelCase, UpperCamelCase, UPPER_SNAKE)
|
|
- Suppressions for mapper files (aligned @Mapping annotations) in suppressions.xml
|
|
-->
|
|
<module name="Checker">
|
|
<property name="severity" value="error"/>
|
|
<property name="fileExtensions" value="java"/>
|
|
|
|
<!-- No tab characters anywhere in the file -->
|
|
<module name="FileTabCharacter">
|
|
<property name="eachLine" value="true"/>
|
|
</module>
|
|
|
|
<!-- Files must end with a newline -->
|
|
<module name="NewlineAtEndOfFile"/>
|
|
|
|
<!-- No trailing whitespace -->
|
|
<module name="RegexpSingleline">
|
|
<property name="format" value="\s+$"/>
|
|
<property name="message" value="Trailing whitespace"/>
|
|
</module>
|
|
|
|
<!-- 240-char line length; imports and URLs ignored -->
|
|
<module name="LineLength">
|
|
<property name="max" value="240"/>
|
|
<property name="ignorePattern" value="^package.*|^import.*|https?://|ftp://"/>
|
|
</module>
|
|
|
|
<module name="TreeWalker">
|
|
|
|
<!-- ===== IMPORTS ===== -->
|
|
<module name="AvoidStarImport"/>
|
|
<module name="UnusedImports"/>
|
|
|
|
<!-- ===== INDENTATION ===== -->
|
|
<module name="Indentation">
|
|
<property name="basicOffset" value="4"/>
|
|
<property name="braceAdjustment" value="0"/>
|
|
<property name="caseIndent" value="4"/>
|
|
<property name="throwsIndent" value="8"/>
|
|
<property name="lineWrappingIndentation" value="8"/>
|
|
<property name="arrayInitIndent" value="4"/>
|
|
</module>
|
|
|
|
<!-- ===== BRACES ===== -->
|
|
<!-- Opening { on same line (K&R) -->
|
|
<module name="LeftCurly"/>
|
|
<!-- Closing } on own line -->
|
|
<module name="RightCurly"/>
|
|
<!-- Always use braces for if/else/for/while/do -->
|
|
<module name="NeedBraces">
|
|
<property name="tokens" value="LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO"/>
|
|
</module>
|
|
|
|
<!-- ===== WHITESPACE ===== -->
|
|
<module name="WhitespaceAfter">
|
|
<property name="tokens" value="COMMA, SEMI, TYPECAST, LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, LITERAL_RETURN, LITERAL_SWITCH"/>
|
|
</module>
|
|
<module name="WhitespaceAround">
|
|
<property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, SL, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN, TYPE_EXTENSION_AND"/>
|
|
<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"/>
|
|
</module>
|
|
<module name="NoWhitespaceBefore">
|
|
<property name="tokens" value="COMMA, SEMI, POST_INC, POST_DEC"/>
|
|
<property name="allowLineBreaks" value="true"/>
|
|
</module>
|
|
<module name="GenericWhitespace"/>
|
|
<module name="MethodParamPad"/>
|
|
<module name="ParenPad"/>
|
|
|
|
<!-- Blank lines between methods/constructors/inner classes (not between fields) -->
|
|
<module name="EmptyLineSeparator">
|
|
<property name="allowNoEmptyLineBetweenFields" value="true"/>
|
|
<property name="allowMultipleEmptyLines" value="false"/>
|
|
<property name="allowMultipleEmptyLinesInsideClassMembers" value="false"/>
|
|
<property name="tokens" value="METHOD_DEF, CTOR_DEF, STATIC_INIT, INSTANCE_INIT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF"/>
|
|
</module>
|
|
|
|
<!-- ===== NAMING ===== -->
|
|
<module name="TypeName"/>
|
|
<module name="MethodName"/>
|
|
<module name="LocalVariableName"/>
|
|
<module name="MemberName"/>
|
|
<module name="ParameterName"/>
|
|
<module name="StaticVariableName"/>
|
|
<module name="ConstantName"/>
|
|
<module name="PackageName">
|
|
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
|
|
</module>
|
|
|
|
<!-- ===== FINAL ===== -->
|
|
<!-- Local variables and parameters that can be final must be declared final -->
|
|
<module name="FinalLocalVariable">
|
|
<property name="tokens" value="VARIABLE_DEF, PARAMETER_DEF"/>
|
|
<property name="validateEnhancedForLoopVariable" value="true"/>
|
|
</module>
|
|
|
|
<!-- ===== METHOD SIZE ===== -->
|
|
<!-- Methods should stay under 60 lines (blank lines and comments excluded) -->
|
|
<module name="MethodLength">
|
|
<property name="max" value="60"/>
|
|
<property name="countEmpty" value="false"/>
|
|
</module>
|
|
<!-- Max 7 parameters per method or constructor -->
|
|
<module name="ParameterNumber">
|
|
<property name="max" value="7"/>
|
|
</module>
|
|
|
|
<!-- ===== ERROR PREVENTION ===== -->
|
|
<!-- Unused local variables -->
|
|
<module name="UnusedLocalVariable"/>
|
|
<!-- equals() without hashCode() -->
|
|
<module name="EqualsHashCode"/>
|
|
<!-- switch without default -->
|
|
<module name="MissingSwitchDefault"/>
|
|
<!-- accidental switch fall-through -->
|
|
<module name="FallThrough"/>
|
|
<!-- assignment inside a condition: if (x = y) -->
|
|
<module name="InnerAssignment"/>
|
|
<!-- x == true, x != false -->
|
|
<module name="SimplifyBooleanExpression"/>
|
|
<!-- if (x) return true; else return false; -->
|
|
<module name="SimplifyBooleanReturn"/>
|
|
<!-- local variable or parameter shadows a field -->
|
|
<module name="HiddenField">
|
|
<property name="ignoreConstructorParameter" value="true"/>
|
|
<property name="ignoreSetter" value="true"/>
|
|
</module>
|
|
|
|
<!-- ===== CODE STYLE ===== -->
|
|
<!-- One statement per line -->
|
|
<module name="OneStatementPerLine"/>
|
|
<!-- No multiple variable declarations on one line -->
|
|
<module name="MultipleVariableDeclarations"/>
|
|
<!-- Only one top-level type per file -->
|
|
<module name="OneTopLevelClass"/>
|
|
<!-- Modifier order: public protected private abstract default static final ... -->
|
|
<module name="ModifierOrder"/>
|
|
<!-- No empty statements (stray semicolons) -->
|
|
<module name="EmptyStatement"/>
|
|
<!-- Use equals() for string comparison, not == -->
|
|
<module name="StringLiteralEquality"/>
|
|
<!-- No finalize() method -->
|
|
<module name="NoFinalizer"/>
|
|
<!-- C-style array declarations (String[] args, not String args[]) -->
|
|
<module name="ArrayTypeStyle"/>
|
|
<!-- Use L not l for long literals -->
|
|
<module name="UpperEll"/>
|
|
|
|
</module>
|
|
</module>
|