<?xml version="1.0"?>
<ruleset name="FHComplete">
  <description>FHComplete's coding standard</description>

  <exclude-pattern>\.git</exclude-pattern>
  <exclude-pattern>*/Config/*.ini.php</exclude-pattern>
  <exclude-pattern>/*/tmp/</exclude-pattern>

  <rule ref="PSR2">
    <exclude name="PSR1.Classes.ClassDeclaration" />
    <exclude name="PSR1.Methods.CamelCapsMethodName" />
    <exclude name="PSR1.Files.SideEffects" />
	<exclude name="Generic.WhiteSpace.DisallowTabIndent" />
	<exclude name="Squiz.ControlStructures.ControlSignature" />
	<exclude name="Squiz.Classes.ValidClassName" />
	<exclude name="Generic.ControlStructures.InlineControlStructure" />
	<exclude name="Squiz.PHP.DisallowSizeFunctionsInLoops" />
  </rule>

  <rule ref="Generic.Files.LineLength">
    <properties>
		<property name="lineLimit" value="120"/>
   		<property name="absoluteLineLimit" value="150"/>
  	</properties>
  </rule>
  
  <rule ref="Squiz.Arrays.ArrayBracketSpacing"/>

  <rule ref="Squiz.Classes.LowercaseClassKeywords"/>

  <rule ref="Generic.CodeAnalysis.JumbledIncrementer"/>
  <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop"/>
  <rule ref="Generic.CodeAnalysis.UnnecessaryFinalModifier"/>
  <rule ref="Generic.CodeAnalysis.UnconditionalIfStatement"/>
  <rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall"/>

  <rule ref="Generic.Commenting.Todo"/>
  <rule ref="Squiz.Commenting.DocCommentAlignment"/>

  <!--
  We allow EOL after closing braces
  -->
  <rule ref="FHComplete.ControlStructures.ControlSignature"/>

  <rule ref="Generic.Files.LineEndings"/>

  <rule ref="Generic.Formatting.NoSpaceAfterCast"/>

  <rule ref="Squiz.Operators.ValidLogicalOperators"/>

  <rule ref="Squiz.PHP.Eval"/>
  <rule ref="Squiz.PHP.NonExecutableCode"/>
  <rule ref="Generic.PHP.NoSilencedErrors"/>
  <rule ref="Generic.PHP.ForbiddenFunctions"/>
  <rule ref="Generic.PHP.DeprecatedFunctions"/>

  <rule ref="Squiz.Scope.MemberVarScope"/>
  <rule ref="Squiz.Scope.StaticThisUsage"/>

  <rule ref="Squiz.WhiteSpace.CastSpacing"/>
  <rule ref="Squiz.WhiteSpace.SemicolonSpacing"/>
  <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace"/>
  <rule ref="Squiz.WhiteSpace.LogicalOperatorSpacing"/>

  <!-- Relax some src/* and tests/* rules -->
  <rule ref="Squiz.Classes.ValidClassName">
    <exclude-pattern>*/tests/*</exclude-pattern>
  </rule>
  <rule ref="FHComplete.Commenting.FunctionComment">
    <exclude-pattern>*/tests/*</exclude-pattern>
  </rule>
 

  <!-- All rules in ./Sniffs are included automatically -->
</ruleset>
