<?xml version="1.0"?>
<ruleset name="Coding Standards for SDK">
	<description>PSR-2 + docs</description>

	<file>./source</file>
	<file>./tests</file>

	<arg name="colors"/>

    <rule ref="PSR2"/>

    <rule ref="Generic.Arrays.DisallowShortArraySyntax"/>
    <rule ref="Generic.Classes.DuplicateClassName"/>
    <rule ref="Generic.Commenting">
        <exclude name="Generic.Commenting.DocComment"/>
    </rule>
    <rule ref="Generic.ControlStructures">
        <exclude name="Generic.ControlStructures.DisallowYodaConditions.Found"/>
    </rule>
    <rule ref="Generic.Debug"/>
    <rule ref="Generic.Files">
        <exclude name="Generic.Files.EndFileNoNewline"/>
        <exclude name="Generic.Files.LowercasedFilename"/>
        <exclude name="Generic.Files.LineLength"/>
    </rule>
    <rule ref="Generic.Formatting">
        <exclude name="Generic.Formatting.NoSpaceAfterCast"/>
        <exclude name="Generic.Formatting.SpaceAfterNot"/>
    </rule>
    <rule ref="Generic.Functions.FunctionCallArgumentSpacing"/>
    <rule ref="Generic.Metrics"/>
    <rule ref="Generic.Metrics.CyclomaticComplexity">
        <properties>
            <property name="complexity" value="12"/>
        </properties>
    </rule>
    <rule ref="Generic.NamingConventions"/>
    <rule ref="Generic.NamingConventions.CamelCapsFunctionName">
        <properties>
            <property name="strict" value="false"/>
        </properties>
    </rule>
    <rule ref="Generic.PHP">
        <exclude name="Generic.PHP.ClosingPHPTag"/>
        <exclude name="Generic.PHP.UpperCaseConstant"/>
        <exclude name="Generic.PHP.RequireStrictTypes.MissingDeclaration"/>
    </rule>
    <rule ref="Generic.Strings"/>
    <rule ref="Generic.WhiteSpace.DisallowTabIndent"/>

    <rule ref="Squiz.Classes"/>

    <rule ref="Squiz.Commenting.DocCommentAlignment"/>
    <rule ref="Squiz.Commenting.VariableComment"/>
    <rule ref="Squiz.ControlStructures">
        <exclude name="Squiz.ControlStructures.ElseIfDeclaration"/>
        <exclude name="Squiz.ControlStructures.ControlSignature"/>
        <exclude name="Squiz.ControlStructures.SwitchDeclaration"/>
    </rule>
</ruleset>
