<?xml version="1.0"?>
<!-- PHP_CodeSniffer standard -->
<!-- See https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml -->
<ruleset name="drupal/drupal-driver">
    <description>DrupalDriver coding standards</description>
    <arg name="colors"/>
    <arg value="sp"/>

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

    <rule ref="Drupal">
        <exclude name="Drupal.Files.LineLength.TooLong"/>
        <exclude name="Drupal.Semantics.FunctionTriggerError"/>
        <exclude name="Drupal.Commenting.Deprecated"/>
    </rule>

    <!-- Core drivers need to set a server's remote address. -->
    <rule ref="Drupal.Semantics.RemoteAddress.RemoteAddress">
        <exclude-pattern>src/Drupal/Driver/Cores/*.php</exclude-pattern>
    </rule>

    <!-- PHPSpec uses snake_case methods without visibility keywords and does
         not follow Drupal commenting conventions. -->
    <rule ref="Drupal.NamingConventions.ValidFunctionName.ScopeNotCamelCaps">
        <exclude-pattern>*/spec/*</exclude-pattern>
    </rule>
    <rule ref="Squiz.Scope.MethodScope">
        <exclude-pattern>*/spec/*</exclude-pattern>
    </rule>

    <rule ref="Drupal.Commenting.FunctionComment">
        <exclude-pattern>*/spec/*</exclude-pattern>
    </rule>
    <rule ref="Drupal.Commenting.DocComment">
        <exclude-pattern>*/spec/*</exclude-pattern>
    </rule>
    <rule ref="Drupal.Commenting.VariableComment">
        <exclude-pattern>*/spec/*</exclude-pattern>
    </rule>

    <!-- Strict types deferred to v3.x. -->
    <rule ref="Generic.PHP.RequireStrictTypes">
        <severity>0</severity>
    </rule>

    <rule ref="DrevOps">
        <exclude-pattern>*/spec/*</exclude-pattern>
    </rule>

</ruleset>
