<?xml version="1.0"?>
<ruleset name="Fzx Platform PMD Rules"
         xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">

    <description>Fzx Platform代码质量检查规则 - 基于大厂标准和行业最佳实践</description>

    <rule ref="category/java/bestpractices.xml">
        <exclude name="JUnit4TestShouldUseTestAnnotation"/>
        <exclude name="LooseCoupling"/>
        <exclude name="GuardLogStatement"/>
    </rule>

    <rule ref="category/java/codestyle.xml">
        <exclude name="MethodArgumentCouldBeFinal"/>
        <exclude name="LocalVariableCouldBeFinal"/>
        <exclude name="OnlyOneReturn"/>
        <exclude name="ShortVariable"/>
        <exclude name="LongVariable"/>
        <exclude name="AtLeastOneConstructor"/>
        <exclude name="UseUnderscoresInNumericLiterals"/>
        <exclude name="UnnecessaryImport"/>
        <exclude name="ClassNamingConventions"/>
        <exclude name="MethodNamingConventions"/>
    </rule>

    <rule ref="category/java/design.xml">
        <exclude name="LoosePackageCoupling"/>
        <exclude name="DataClass"/>
        <exclude name="TooManyMethods"/>
        <exclude name="TooManyFields"/>
        <exclude name="ExcessivePublicCount"/>
        <exclude name="GodClass"/>
        <exclude name="CouplingBetweenObjects"/>
        <exclude name="UseUtilityClass"/>
        <exclude name="AvoidCatchingGenericException"/>
        <exclude name="CyclomaticComplexity"/>
        <exclude name="LawOfDemeter"/>
        <exclude name="NPathComplexity"/>
        <exclude name="ExcessiveParameterList"/>
        <exclude name="SignatureDeclareThrowsException"/>
    </rule>

    <rule ref="category/java/performance.xml">
        <exclude name="ConsecutiveAppendsShouldReuse"/>
        <exclude name="AppendCharacterWithChar"/>
        <exclude name="ConsecutiveLiteralAppends"/>
        <exclude name="InsufficientStringBufferDeclaration"/>
        <exclude name="UseArrayListInsteadOfVector"/>
        <exclude name="UseStringBufferForStringAppends"/>
    </rule>
</ruleset>
