<?xml version='1.0' encoding="UTF-8"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<ruleset name="Magento PHPMD rule set" 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>Magento Code Check Rules</description>
    <php-includepath>../../../static</php-includepath>

    <!-- Code Size Rules -->
    <rule ref="rulesets/codesize.xml/CyclomaticComplexity" />
    <rule ref="rulesets/codesize.xml/NPathComplexity" />
    <rule ref="rulesets/codesize.xml/ExcessiveMethodLength" />
    <rule ref="rulesets/codesize.xml/ExcessiveParameterList" />
    <rule ref="rulesets/codesize.xml/ExcessivePublicCount" />
    <rule ref="rulesets/codesize.xml/TooManyFields" />
    <rule ref="rulesets/codesize.xml/ExcessiveClassComplexity">
        <properties>
            <property name="maximum" value="100" />
        </properties>
    </rule>

    <!-- Unused code rules -->
    <rule ref="rulesets/unusedcode.xml/UnusedPrivateField" />
    <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod" />
    <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter" />
    <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable" >
        <properties>
            <property name="allow-unused-foreach-variables" value="true"/>
        </properties>
    </rule>

    <!-- Code design rules -->
    <rule ref="rulesets/design.xml/ExitExpression" />
    <rule ref="rulesets/design.xml/EvalExpression" />
    <rule ref="rulesets/design.xml/GotoStatement" />
    <rule ref="rulesets/design.xml/NumberOfChildren" />
    <rule ref="rulesets/design.xml/DepthOfInheritance">
        <properties>
            <property name="minimum" value="8" />
        </properties>
    </rule>
    <rule ref="rulesets/design.xml/CouplingBetweenObjects" />

    <!-- Naming Rules -->
    <rule ref="rulesets/naming.xml/ShortMethodName" />
    <rule ref="rulesets/naming.xml/ConstantNamingConventions" />
    <rule ref="rulesets/naming.xml/BooleanGetMethodName" />

    <!-- Magento Specific Rules -->
    <rule ref="Magento/CodeMessDetector/resources/rulesets/design.xml/FinalImplementation" />
</ruleset>
