<?xml version="1.0"?>
<ruleset name="CleanCodeRules"
         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>
        Custom PHPMD ruleset optimized for performance and clean code checks.
    </description>

    <!-- Ignorowane katalogi -->
    <exclude-pattern>*/vendor/*</exclude-pattern>
    <exclude-pattern>*/resources/*</exclude-pattern>
    <exclude-pattern>*/storage/*</exclude-pattern>
    <exclude-pattern>*/cache/*</exclude-pattern>
    <exclude-pattern>*/tests/*</exclude-pattern>

    <!-- Clean Code -->
    <rule ref="rulesets/cleancode.xml"/>

    <!-- Code Size (zwiększone limity aby zmniejszyć spam) -->
    <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="120"/>
        </properties>
    </rule>

    <!-- Design -->
    <rule ref="rulesets/design.xml"/>

    <!-- Naming -->
    <rule ref="rulesets/naming.xml"/>

    <!-- Usunięcie najbardziej kosztownych reguł -->
    <rule ref="rulesets/unusedcode.xml">
        <exclude name="UnusedPrivateMethod"/>
        <exclude name="UnusedFormalParameter"/>
    </rule>

</ruleset>