<?xml version="1.0"?>
<ruleset name="PHPMD Rules"
         xmlns="http://pmd.sf.net/ruleset/1.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
         xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
    <description>
        APP Mess Detector
    </description>

    <exclude-pattern>*/**/console.php</exclude-pattern>
    <exclude-pattern>*/database/migrations/*</exclude-pattern>

    <rule ref="rulesets/cleancode.xml">
        <!-- <exclude name="BooleanArgumentFlag"/> -->
        <exclude name="StaticAccess"/>
        <exclude name="IfStatementAssignment"/>
    </rule>

    <rule ref="rulesets/codesize.xml">
        <exclude name="CyclomaticComplexity"/>
        <exclude name="ExcessiveMethodLength"/>
        <exclude name="ExcessiveClassLength"/>
        <exclude name="ExcessiveParameterList"/>
        <exclude name="ExcessivePublicCount"/>
        <exclude name="TooManyFields"/>
        <exclude name="TooManyMethods"/>
        <exclude name="TooManyPublicMethods"/>
        <exclude name="ExcessiveClassComplexity"/>
    </rule>

    <rule ref="rulesets/codesize.xml/CyclomaticComplexity">
        <properties>
            <property name="reportLevel" value="10"/>
        </properties>
    </rule>

    <rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
        <properties>
            <property name="minimum" value="100"/>
        </properties>
    </rule>

    <rule ref="rulesets/codesize.xml/ExcessiveClassLength">
        <properties>
            <property name="minimum" value="500"/>
        </properties>
    </rule>

    <rule ref="rulesets/codesize.xml/ExcessiveParameterList">
        <properties>
            <property name="minimum" value="5"/>
        </properties>
    </rule>

    <rule ref="rulesets/codesize.xml/ExcessivePublicCount">
        <properties>
            <property name="minimum" value="15"/>
        </properties>
    </rule>

    <rule ref="rulesets/codesize.xml/TooManyFields">
        <properties>
            <property name="maxfields" value="5"/>
        </properties>
    </rule>

    <rule ref="rulesets/codesize.xml/TooManyMethods">
        <properties>
            <property name="maxmethods" value="10"/>
        </properties>
    </rule>

    <rule ref="rulesets/codesize.xml/TooManyPublicMethods">
        <properties>
            <property name="maxmethods" value="5"/>
        </properties>
    </rule>

    <rule ref="rulesets/codesize.xml/ExcessiveClassComplexity">
        <properties>
            <property name="maximum" value="20"/>
        </properties>
    </rule>

    <rule ref="rulesets/controversial.xml"/>

    <rule ref="rulesets/design.xml">
        <exclude name="CouplingBetweenObjects"/>
    </rule>

    <rule ref="rulesets/design.xml/CouplingBetweenObjects">
        <properties>
            <property name="maximum" value="10"/>
        </properties>
    </rule>

    <rule ref="rulesets/naming.xml">
        <exclude name="LongVariable"/>
        <exclude name="ShortVariable"/>
    </rule>

    <rule ref="rulesets/naming.xml/ShortVariable">
        <priority>3</priority>
        <properties>
            <property name="minimum" value="3"/>
            <property name="exceptions" value="id,to,up,th,ex,i,e"/>
        </properties>
    </rule>

    <rule ref="rulesets/naming.xml/LongVariable">
        <properties>
            <property name="maximum" value="25"/>
        </properties>
    </rule>

    <rule ref="rulesets/unusedcode.xml">
        <!-- <exclude name="UnusedPrivateField"/> -->
        <!-- <exclude name="UnusedLocalVariable"/> -->
        <!-- Verified by SlevomatCodingStandard.Functions.UnusedParameter -->
        <exclude name="UnusedFormalParameter"/>
    </rule>
</ruleset>
