Comment ajuster les règles de phpmd
J'utilise Syntastic pour vérifier mon code à chaque fois que je sauve dans Vim.
Pour PHP, Syntastic lance entre autres PHP Mess Detector, phpmd, pour la propreté du code.
Le problème, c'est que les règles par défaut de phpmd sont un peu extrêmes.
Par exemple, il interdit les variables courtes comme $id
ou $em
.
Heureusement, on peut ajuster les règles de phpmd comme ceci :
- Créer un fichier où on veut, par exemple
~/PHPMD/naming.xml
, inspiré de la doc de PHPMD :<?xml version="1.0"?> <ruleset name="My first PHPMD rule set" 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> My custom rule set that checks my code... </description> <!-- Importe les règles de nommage sauf celle sur la longueur minium d'une variable --> <rule ref="rulesets/naming.xml"> <exclude name="ShortVariable" /> </rule> <!-- Personnalise cette règle --> <rule ref="rulesets/naming.xml/ShortVariable"> <priority>1</priority> <properties> <property name="minimum" description="Minimum length for a variable, property or parameter name" value="2"/> </properties> </rule> </ruleset>
- Mettre dans .vimrc
let g:syntastic_php_phpmd_post_args = 'cleancode,codesize,design,unusedcode,/home/herve/PHPMD/naming.xml'
(pas de ~ comme en shell, d'où /home/herve)
Note : les règles fournies par PHPMD se trouvent dans /usr/share/php/data/PHPMD/resources/rulesets
(sur ma distribution de Linux)
Note : par défaut, Syntastic utilise uniquement ces règles : codesize,design,unusedcode,naming
.
Note : on peut aussi lancer phpmd en ligne de commande, par exemple phpmd src/AppBundle/Entity/Comment.php text cleancode,codesize,design,unusedcode,/home/herve/PHPMD/naming.xml
ou même importer toutes les règles qu'on veut dans le fichier personnel pour ne passer que celui-ci en argument.