<?xml version="1.0"?>
<ruleset>
    <arg name="basepath" value="."/>
    <arg name="extensions" value="php"/>
    <arg name="parallel" value="80"/>
    <arg name="cache" value=".phpcs-cache"/>
    <arg name="colors" />

    <config name="php_version" value="80100"/>

    <!-- Ignore warnings and show progress of the run -->
    <arg value="nps"/>

    <file>src</file>
    <file>tests</file>

    <rule ref="Doctrine">
        <!-- Traversable type hints often end up as mixed[], so we skip them for now -->
        <exclude name="SlevomatCodingStandard.TypeHints.PropertyTypeHint.MissingTraversableTypeHintSpecification"/>
        <exclude name="SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingTraversableTypeHintSpecification"/>
        <exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification"/>
    </rule>

    <rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
        <exclude-pattern>tests/*</exclude-pattern>
    </rule>

    <rule ref="SlevomatCodingStandard.Classes.SuperfluousAbstractClassNaming">
        <exclude-pattern>src/AbstractFixture.php</exclude-pattern>
        <exclude-pattern>src/Executor/AbstractExecutor.php</exclude-pattern>
    </rule>

    <rule ref="SlevomatCodingStandard.Classes.SuperfluousExceptionNaming">
        <exclude-pattern>src/Exception/CircularReferenceException.php</exclude-pattern>
    </rule>

    <rule ref="SlevomatCodingStandard.Classes.SuperfluousInterfaceNaming">
        <exclude-pattern>src/DependentFixtureInterface.php</exclude-pattern>
        <exclude-pattern>src/FixtureInterface.php</exclude-pattern>
        <exclude-pattern>src/Purger/MongoDBPurgerInterface.php</exclude-pattern>
        <exclude-pattern>src/Purger/ORMPurgerInterface.php</exclude-pattern>
        <exclude-pattern>src/Purger/PHPCRPurgerInterface.php</exclude-pattern>
        <exclude-pattern>src/Purger/PurgerInterface.php</exclude-pattern>
        <exclude-pattern>src/OrderedFixtureInterface.php</exclude-pattern>
        <exclude-pattern>src/SharedFixtureInterface.php</exclude-pattern>
    </rule>

    <rule ref="SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint">
        <!-- ORM 3 compatibility -->
        <exclude-pattern>src/Purger/ORMPurger.php</exclude-pattern>
        <!-- Don't add parameter types to overridden methods -->
        <exclude-pattern>tests/Common/DataFixtures/TestTypes/UuidType.php</exclude-pattern>
    </rule>

    <rule ref="Squiz.Classes.ClassFileName.NoMatch">
        <exclude-pattern>tests/*</exclude-pattern>
    </rule>
</ruleset>
