<?xml version="1.0"?>
<ruleset name="VC5">

    <!--
       The name attribute of the ruleset tag is displayed
       when running PHP_CodeSniffer with the -v command line
       argument. The description tag below is not displayed anywhere
       except in this file, so it can contain information for
       developers who may change this file in the future.
    -->
    <description>A custom coding standard</description>


    <rule ref="PSR2">
        <exclude name="Generic.Files.LineLength.TooLong" />
        <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.Indent"/>
        <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.ContentBefore"/>
        <exclude name="Generic.Files.LineEndings.InvalidEOLChar"/>
    </rule>
    <rule ref="Generic.CodeAnalysis.EmptyStatement"/>
    <rule ref="Generic.CodeAnalysis.JumbledIncrementer"/>
    <rule ref="Generic.CodeAnalysis.UnconditionalIfStatement"/>
    <rule ref="Generic.CodeAnalysis.UnnecessaryFinalModifier"/>
    <rule ref="Generic.CodeAnalysis.UselessOverridingMethod"/>
    <rule ref="Generic.ControlStructures.InlineControlStructure"/>
    <rule ref="Generic.Formatting.DisallowMultipleStatements"/>
    <rule ref="Generic.Formatting.NoSpaceAfterCast"/>
    <rule ref="Generic.Functions.CallTimePassByReference"/>
    <rule ref="Generic.Metrics.CyclomaticComplexity"/>
    <rule ref="Generic.Metrics.NestingLevel"/>
    <rule ref="Generic.NamingConventions.ConstructorName"/>
    <rule ref="Generic.NamingConventions.UpperCaseConstantName"/>
    <rule ref="Generic.NamingConventions.CamelCapsFunctionName"/>
    <rule ref="Generic.PHP.DeprecatedFunctions"/>
    <rule ref="Generic.PHP.DisallowShortOpenTag"/>
    <rule ref="Generic.PHP.LowerCaseConstant"/>
    <rule ref="Generic.WhiteSpace.DisallowTabIndent"/>
    <rule ref="Generic.WhiteSpace.ScopeIndent"/>
    <rule ref="PSR1.Classes.ClassDeclaration"/>
    <rule ref="PSR2.Classes.ClassDeclaration"/>
    <rule ref="PSR2.Classes.PropertyDeclaration"/>
    <rule ref="PSR2.ControlStructures.ControlStructureSpacing"/>
    <rule ref="PSR2.ControlStructures.ElseIfDeclaration"/>
    <rule ref="PSR2.ControlStructures.SwitchDeclaration"/>
    <rule ref="PSR2.Files.EndFileNewline"/>
    <rule ref="PSR2.Methods.MethodDeclaration"/>
    <rule ref="PSR2.Namespaces.NamespaceDeclaration"/>
    <rule ref="PSR2.Namespaces.UseDeclaration"/>
    <rule ref="Squiz.PHP.DiscouragedFunctions"/>
    <rule ref="Squiz.PHP.LowercasePHPFunctions"/>
    <rule ref="Squiz.Scope.MemberVarScope"/>
    <rule ref="Squiz.Scope.MethodScope"/>
    <rule ref="Squiz.Scope.StaticThisUsage"/>
    <rule ref="Squiz.WhiteSpace.CastSpacing"/>
    <rule ref="Generic.PHP.NoSilencedErrors"/>
    <rule ref="Squiz.PHP.Eval"/>
    <rule ref="Zend.Files.ClosingTag"/>
    <rule ref="Zend.NamingConventions.ValidVariableName">
        <exclude name="Zend.NamingConventions.ValidVariableName.PrivateNoUnderscore"/>
    </rule>
    <rule ref="Squiz.Classes.ValidClassName">
        <exclude-pattern>./visualcomposer/Requirements.php</exclude-pattern>
    </rule>
    <rule ref="PSR1.Classes.ClassDeclaration">
        <exclude-pattern>./visualcomposer/Requirements.php</exclude-pattern>
    </rule>
    <rule ref="PSR2.Methods.FunctionCallSignature.Indent">
        <exclude-pattern type="relative">./visualcomposer/resources/*</exclude-pattern>
    </rule>
    <rule ref="Internal.NoCodeFound">
        <exclude-pattern type="relative">./visualcomposer/resources/*</exclude-pattern>
    </rule>
    <rule ref="Generic.WhiteSpace.DisallowTabIndent.TabsUsed">
        <exclude-pattern type="relative">./visualcomposer/resources/*</exclude-pattern>
    </rule>

    <file>./visualcomposer</file>
    <file>./bootstrap</file>
    <file>./plugin-wordpress.php</file>
    <rule ref="PSR1.Files.SideEffects">
        <exclude-pattern type="relative">./plugin-wordpress.php</exclude-pattern>
        <exclude name="PSR1.Files.SideEffects.FoundWithSymbols"/>
    </rule>

    <exclude-pattern type="relative">tests/*</exclude-pattern>
    <exclude-pattern type="relative">vendor/*</exclude-pattern>

    <arg name="extensions" value="php"/>
</ruleset>