checkstyle.xml 4.0 KB
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
    <!-- 基本配置 -->
    <property name="severity" value="warning"/>
    <property name="fileExtensions" value="java"/>
    
    <!-- 编码检查 -->
    <module name="NewlineAtEndOfFile"/>
    <module name="RegexpSingleline">
        <property name="format" value="\s+$"/>
        <property name="minimum" value="1"/>
        <property name="maximum" value="unbounded"/>
        <property name="message" value="Line has trailing spaces."/>
    </module>
    
    <!-- 文件长度和结构检查 -->
    <module name="LineLength">
        <property name="max" value="120"/>
        <property name="ignorePattern" value="^package.*|^import.*|^@.*|.*http://.*|.*https://.*"/>
    </module>
    
    <!-- Java代码检查 -->
    <module name="TreeWalker">
        <!-- 命名规范 -->
        <module name="ConstantName"/>
        <module name="LocalFinalVariableName"/>
        <module name="LocalVariableName"/>
        <module name="MemberName"/>
        <module name="MethodName"/>
        <module name="PackageName"/>
        <module name="ParameterName"/>
        <module name="StaticVariableName"/>
        <module name="TypeName">
            <property name="format" value="^[A-Z][a-zA-Z0-9]*$"/>
        </module>
        
        <!-- 代码结构 -->
        <module name="EmptyBlock">
            <property name="option" value="TEXT"/>
            <property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_DO"/>
        </module>
        
        <module name="LeftCurly"/>
        <module name="RightCurly"/>
        <module name="Indentation">
            <property name="basicOffset" value="4"/>
            <property name="braceAdjustment" value="0"/>
            <property name="caseIndentation" value="4"/>
            <property name="throwsIndentation" value="4"/>
            <property name="lineWrappingIndentation" value="8"/>
        </module>
        
        <!-- 变量和方法 -->
        <module name="AvoidStarImport"/>
        <module name="IllegalImport"/>
        <module name="RedundantImport"/>
        <module name="UnusedImports"/>
        
        <module name="ArrayTypeStyle"/>
        <module name="UpperEll"/>
        
        <!-- 代码质量 -->
        <module name="EqualsHashCode"/>
        <module name="StringLiteralEquality"/>
        <module name="CovariantEquals"/>
        <module name="OverloadMethodsDeclarationOrder"/>
        <module name="ParameterAssignment"/>
        <module name="FinalParameters">
            <property name="tokens" value="METHOD_DEF, CTOR_DEF, LITERAL_CATCH"/>
        </module>
        
        <!-- 注释相关 -->
        <module name="JavadocType">
            <property name="scope" value="public"/>
        </module>
        <module name="JavadocMethod">
            <property name="scope" value="public"/>
            <property name="allowMissingThrowsTags" value="true"/>
        </module>
        <module name="JavadocVariable">
            <property name="scope" value="public"/>
            <property name="tokens" value="VARIABLE_DEF, ENUM_CONSTANT_DEF"/>
        </module>
        
        <!-- 控制流 -->
        <module name="NestedIfDepth">
            <property name="max" value="3"/>
        </module>
        <module name="NestedTryDepth">
            <property name="max" value="2"/>
        </module>
        <module name="CyclomaticComplexity">
            <property name="max" value="10"/>
        </module>
        
        <!-- 其他规则 -->
        <module name="MissingDeprecated"/>
        <module name="MissingOverride"/>
        <module name="MultipleVariableDeclarations"/>
        <module name="FallThrough"/>
        <module name="MagicNumber">
            <property name="ignoreNumbers" value="-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 1000"/>
            <property name="ignoreAnnotation" value="true"/>
        </module>
        <module name="ModifierOrder"/>
    </module>
</module>