L’utilisation de phpcs permet de détecter le non respect des standards de codage que l’ont peut lancer dans son intégration continue ou en console quand on le souhaite.
Afin de ne pas lancer des builds dans jenkins pour rien, on peut avant de commiter ces fichiers, exécuter de manière automatique la détection des erreurs grâce au mécanisme des hooks de git.
Il suffit donc de créer le fichier pre-commit qui se trouve dans le dossier hooks
du dossier .git
de votre projet. Vous y trouverez des fichiers .sample de chaque hooks possible.
#!/bin/bash PHPCS_PATH=phpcs PHPCS_IGNORE=vendor/ FILES=$(git st --porcelain | awk '{if ($1 == "A" || $1 == "M") print $2}') if [ `echo $FILES | wc -c` -gt 1 ] ; then PHPCSRET=$(echo $FILES | xargs xargs $PHPCS_PATH --standard=Symfony2 --ignore=$PHPCS_IGNORE -n) NBLINES=$(printf "$PHPCSRET" | wc -l) if [ $NBLINES -gt 0 ] ; then printf "$PHPCSRET\n" exit 1 fi fi exit 0
On définit le path pour phpcs (le mien est accessible de n’importe où), les dossier que l’on souhaite ignorer et enfin les fichiers à traiter (le git st –porcelain permet d’avoir une liste de fichiers pour les traitements).
Ensuite on itère sur l’ensemble des fichiers pour voir si ils ont des problèmes de coding standard (pour Symfony2 dans mon cas).