WEB-d Développement Web

PHP, SQL, HTML5, CSS3, Javascript, Mootools, Référencement, SEO, CMS, e-commerce, Apache, Linux, Ubuntu, ...

PHP Code Sniffer

PHP Code Sniffer permet de vérifier que le code obéit au standard sélectionné. C'est l'équivalent PHP de Checkstyle pour Java.

Pour l'installer sur Ubuntu :

sudo pear install PHP_CodeSniffer

Pour analyser un répertoire :

phpcs /repertoire/de/code

Par défaut, c'est le standard PEAR qui est utilisé pour la vérification. Pour utiliser un autre standard :

phpcs --standard=NomDuStandard /repertoire/de/code

Pour savoir quels standards sont disponibles :

phpcs -i

Le standard PEAR, utilisé par défaut par PHP Code Sniffer, est relativement strict et impose de commenter chaque fichier, classe et méthode.

Sur Ubuntu, les standards sont installés dans /usr/share/php/PHP/CodeSniffer/Standards/

Pour créer un nouveau standard moins contraignant, il suffit d'y créer un nouveau répertoire contenant le fichier ruleset.xml suivant :


<?xml version="1.0"?>
<ruleset name="TDebatty">
 <description>Thibault Debatty</description>

 <!-- Tests du standard Generic -->
 <rule ref="Generic.Functions.FunctionCallArgumentSpacing"/>
 <rule ref="Generic.NamingConventions.UpperCaseConstantName"/>
 <rule ref="Generic.PHP.LowerCaseConstant"/>
 <rule ref="Generic.PHP.DisallowShortOpenTag"/>
 <rule ref="Generic.WhiteSpace.DisallowTabIndent"/>

  <!-- Tests du standard PEAR -->
 <rule ref="PEAR.Classes.ClassDeclaration"/>
 <rule ref="PEAR.ControlStructures.ControlSignature"/>
 <rule ref="PEAR.ControlStructures.MultiLineCondition"/>
 <rule ref="PEAR.Files.IncludingFile"/>
 <rule ref="PEAR.Formatting.MultiLineAssignment"/>
 <rule ref="PEAR.Functions.FunctionCallSignature"/>
 <rule ref="PEAR.Functions.ValidDefaultValue"/>
 <rule ref="PEAR.NamingConventions.ValidClassName"/>
 <rule ref="PEAR.NamingConventions.ValidFunctionName"/>
 <rule ref="PEAR.NamingConventions.ValidVariableName"/>
 <rule ref="PEAR.WhiteSpace.ObjectOperatorIndent"/>
 <rule ref="PEAR.WhiteSpace.ScopeClosingBrace"/>
 <rule ref="PEAR.WhiteSpace.ScopeIndent"/>

 <!-- Lignes de max 85 caractères -->
 <rule ref="Generic.Files.LineLength">
  <properties>
   <property name="lineLimit" value="85"/>
   <property name="absoluteLineLimit" value="0"/>
  </properties>
 </rule>

 <!-- Unix newlines -->
 <rule ref="Generic.Files.LineEndings">
  <properties>
   <property name="eolChar" value="\n"/>
  </properties>
 </rule>

 <rule ref="Generic.Functions.FunctionCallArgumentSpacing.TooMuchSpaceAfterComma">
  <severity>0</severity>
 </rule>

 <!-- Warnings pour les structures contrôles internes -->
 <rule ref="Generic.ControlStructures.InlineControlStructure">
  <properties>
   <property name="error" value="false"/>
  </properties>
 </rule>

</ruleset>
 

Il existe également un plugin qui permet d'effectuer les tests directement dans NetBeans : NB Coding Standard Validator plugin.

Articles similaires