<?xml version="1.0"?>
<ruleset name="phpseclib Standard">

 <description>phpseclib coding standard</description>

 <!-- We are using the PSR2 standard as a base -->
 <rule ref="PSR2">
  <!-- Exceptions due to legacy code with PHP4 compatibility -->
  <exclude name="PSR2.Classes.PropertyDeclaration.ScopeMissing" />
  <exclude name="PSR2.Classes.PropertyDeclaration.VarUsed" />
  <exclude name="Squiz.Scope.MethodScope.Missing" />

  <!-- Exceptions for backward compatibility -->
  <exclude name="PSR1.Methods.CamelCapsMethodName.NotCamelCaps" />
  <exclude name="PSR2.Methods.MethodDeclaration.Underscore" />

  <!-- Exceptions for whitespacing -->
  <exclude name="Generic.Functions.FunctionCallArgumentSpacing.TooMuchSpaceAfterComma" />
  <exclude name="PSR2.ControlStructures.SwitchDeclaration.SpaceBeforeColonCASE" />
  <exclude name="PSR2.ControlStructures.SwitchDeclaration.SpaceBeforeColonDEFAULT" />

  <!-- Other Exceptions -->
  <exclude name="Generic.Files.LineLength.TooLong" />
  <exclude name="PSR2.ControlStructures.SwitchDeclaration.TerminatingComment" />
 </rule>

 <!-- Useful additional rules follow -->

 <!-- "for (; bar; )" should be "while (bar)" instead -->
 <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" />

 <!-- A method MUST not only call its parent -->
 <rule ref="Generic.CodeAnalysis.UselessOverridingMethod" />

</ruleset>
