<?xml version="1.0"?>
<ruleset name="HonestHosting Site Migrator"
         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>PHPMD rules for the HonestHosting Site Migrator plugin.</description>

    <rule ref="rulesets/cleancode.xml">
        <exclude name="BooleanArgumentFlag"/>
        <exclude name="ElseExpression"/>
        <exclude name="StaticAccess"/>
    </rule>

    <rule ref="rulesets/codesize.xml">
        <exclude name="CyclomaticComplexity"/>
        <exclude name="NPathComplexity"/>
        <exclude name="ExcessiveMethodLength"/>
        <exclude name="ExcessiveClassLength"/>
        <exclude name="ExcessiveClassComplexity"/>
        <exclude name="TooManyPublicMethods"/>
    </rule>

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

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

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

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

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

    <rule ref="rulesets/controversial.xml">
        <exclude name="CamelCaseMethodName"/>
        <exclude name="CamelCaseParameterName"/>
        <exclude name="CamelCasePropertyName"/>
        <exclude name="CamelCaseVariableName"/>
        <exclude name="Superglobals"/>
    </rule>

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

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

    <!-- WordPress AJAX handlers legitimately use $_POST; use imports are present via `use` -->
    <rule ref="rulesets/cleancode.xml/MissingImport">
        <properties>
            <property name="ignore-global" value="true"/>
        </properties>
    </rule>

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

    <rule ref="rulesets/unusedcode.xml"/>
</ruleset>
