<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="Laravel and similar phpmd ruleset"
    xmlns="http://pmd.sf.net/ruleset/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
  <description>
    Inspired by https://github.com/phpmd/phpmd/issues/137
    using http://phpmd.org/documentation/creating-a-ruleset.html
  </description>
  <!-- se importan los rulesets, en este caso todos. -->
  <rule ref="rulesets/cleancode.xml">
    <exclude name="StaticAccess"/>
  </rule>
  <rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
  <rule ref="rulesets/codesize.xml/NPathComplexity"/>
  <rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
  <rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
  <rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
  <rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>
  <rule ref="rulesets/codesize.xml/TooManyFields"/>
  <rule ref="rulesets/codesize.xml/TooManyMethods">
      <properties>
          <property name="maxmethods" value="30"/>
      </properties>
  </rule>
  <rule ref="rulesets/codesize.xml/ExcessiveClassComplexity"/>
  <rule ref="rulesets/controversial.xml"/>
  <rule ref="rulesets/design.xml">
      <exclude name="CouplingBetweenObjects"/>
  </rule>
  <!-- beware the façades yo. -->
  <rule ref="rulesets/design.xml/CouplingBetweenObjects">
      <properties>
          <property name="minimum" value="20"/>
      </properties>
  </rule>
  <!-- se importa naming y se excluye ShortVariable para ser ajustada despues. -->
  <rule ref="rulesets/naming.xml">
      <exclude name="ShortVariable"/>
  </rule>
  <rule ref="rulesets/naming.xml/ShortVariable"
        since="0.2"
        message="Avoid variables with short names like {0}. Configured minimum length is {1}."
        class="PHPMD\Rule\Naming\ShortVariable"
        externalInfoUrl="http://phpmd.org/rules/naming.html#shortvariable">
      <priority>3</priority>
      <properties>
          <property name="minimum" description="Minimum length for a variable, property or parameter name" value="3"/>
          <property name="exceptions" value="id,q,w,i,j,v,e,f,fp" />
      </properties>
  </rule>
  <rule ref="rulesets/unusedcode.xml"/>
</ruleset>