Coder PSR-2 compliant sous Sublime Text

Sublime-Text-2

Pour ceux qui, comme moi, préfèrent Sublime Text aux IDEs bloatwares mais veulent tout de même appliquer un contrôle qualité sur leur code simplement par satisfaction personnelle (si si je vous jure ça existe) ou plus vraisemblablement pour s'assurer du respect des normes de vos différents projets, je vous propose d'installer un petit plugin assez sympa : Sublime PHPCS

Sublime PHPCS se plugge sur votre éditeur préféré et permet d'y intégrer les outils PHP suivants:

  • Linter : Analyseur syntaxique, vérifie qu'aucune erreur de syntaxe ne s'est glissée dans vos développements
  • PHP CodeSniffer : Vérifie que votre code respecte un standard défini (ex: PSR-1, PSR-2, Zend...)
  • PHP Mess Detector : Comme son nom l'indique, vérifie des problèmes potentiels dans le code
  • Scheck : Similaire au précédent
  • PHP Coding Standard Fixer : Corrige les erreurs de standard détectées avec PHP CodeSniffer
  • PHP Code Beautifier : Formate votre code selon un certain nombre de règles paramétrables

Ces outils peuvent également être utilisés dans le cadre d'une intégration continue. Mais l'avantage de les brancher à Sublime Text est que le feedback se fait en même temps que vous codez ou simplement lorsque vous sauvegardez vos modifications. Cela permet de raccourcir encore le délai de détection des erreurs basiques et vous évitera ainsi de casser les prochains builds de votre projet pour rien.

L'installation sera décrite dans le cadre d'un environnement Windows, cependant les étapes peuvent être suivies dans le même ordre pour la plupart des autres OS (en revanche certaines configurations seront peut-être à revoir notamment au niveau des .bat).

Avant tout, assurez vous d'avoir Package Control installé sur votre éditeur. Si vous ne l'avez pas encore fait, je vous le conseille, il vous facilitera grandement la tâche.

Comme vous pouvez vous en douter, les différents outils listés précédemment nécessitent PHP pour fonctionner. Il faudra donc installer PHP sur votre machine. Si comme moi vous êtes sous Windows et faites vos développements sur une machine virtuelle Linux, et n'avez donc pas besoin d'avoir Apache et autre sur votre machine hôte, je vous conseille d'installer PHP en mode ad-hoc. Pour cela, téléchargez le package adapté à votre plateforme ici http://windows.php.net/download et placez le dossier obtenu après décompression où bon vous semble sur votre système. Personnellement je l'ai placé dans "C:\Program Files (x86)\PHP\x.x.x" (remplacez "x.x.x" par la version que vous venez de télécharger).

Téléchargez ensuite les différents outils listés au format PHAR (PHp ARchive). Les applications PHAR sont des exécutables PHP. Voici les différents endroits où vous pouvez les trouver:

Placez les .phar à l'endroit où vous avez mis PHP, par exemple "C:\Program Files (x86)\PHP\tools" et créez pour chacun un .bat associé. Les fichiers BAT (BATch) sont des exécutables shell sous Windows. Par exemple, pour "phpcs.phar", créez un fichier "phpcs.bat" contenant :

"C:\Program Files (x86)\PHP\x.x.x\php.exe" "C:\Program Files (x86)\PHP\tools\phpcs.phar" %*

Vous prendrez soin d'adapter les chemins en fonction de votre installation personnelle.

phpcs-5

Outils PHP liés au plugin

Vous pouvez ensuite passer à l'installation du plugin Sublime PHPCS sur votre éditeur. Pour cela, et grâce à Package Control, vous n'avez qu'à ouvrir la palette de commande sous Sublime Text (Ctrl+Shift+P) et taper "Package Control : Install Package". Attendez un peu et voyez une liste de plugins disponibles s'afficher. Tapez "PHPCS" et installez le. Ensuite depuis le menu Preferences->Package Settings->PHP Code Sniffer->Settings - User , configurez le plugin en lui donnant notamment le chemin vers les différents outils installés plus haut, à titre d'exemple voici ma configuration :

{
    // Activer/désactiver l'affichage console
    "show_debug": false,
    // Restreindre le contrôle du plugin aux extensions suivantes
    "extensions_to_execute": ["php", "inc"],
    // Liste des sous extensions à exclure des précédentes
    // Exemple ["twig.php"]
    "extensions_to_blacklist": [],
    // Exécuter le contrôle à la sauvegarde du fichier
    "phpcs_execute_on_save": false,
    // Afficher la liste des erreurs à la sauvegarde
    "phpcs_show_errors_on_save": true,
    // Afficher un point devant les lignes avec des erreurs
    "phpcs_show_gutter_marks": true,
    // Encadrer les lignes avec des erreurs
    "phpcs_outline_for_errors": true,
    // Afficher le texte de l'erreur dans la barre de status lorsque le curseur est sur la ligne
    "phpcs_show_errors_in_status": true,
    // Affiche une liste cliquable des erreurs
    "phpcs_show_quick_panel": true,
    // Les .bat nous permettent d'éviter les 2 options suivantes qui sont buggées
    // "phpcs_php_prefix_path": "C:\\Program Files (x86)\\PHP\\x.x.x\\php.exe",
    // Options:
    // - Sniffer
    // - Fixer
    // - Mess Detector
    // "phpcs_commands_to_php_prefix": ["Sniffer", "Fixer", "Mess Detector"],
    // Couleur des marques
    "phpcs_icon_scope_color": "comment",

    // Configuration PHP CodeSniffer

    // Activer/désactiver PHP CodeSniffer
    "phpcs_sniffer_run": true,
    // Activer/désactiver à la sauvegarde
    "phpcs_command_on_save": false,
    // Chemin vers l'exécutable phpcs, laisser vide si dans le PATH
    "phpcs_executable_path": "C:\\Program Files (x86)\\PHP\\tools\\phpcs.bat",
    // Options
    "phpcs_additional_args": {
        "--standard": "PSR2",
        "-n": ""
    },

    // Configuration PHP Coding Standard Fixer

    // Activer/désactiver à la sauvegarde
    "php_cs_fixer_on_save": false,
    // Afficher le quick panel
    "php_cs_fixer_show_quick_panel": true,
    // Chemin vers l'exécutable php-cs-fixer, laisser vide si dans le PATH
    "php_cs_fixer_executable_path": "C:\\Program Files (x86)\\PHP\\tools\\php-cs-fixer.bat",
    // Options
    "php_cs_fixer_additional_args": {},

    // Configuration PHP Code Beautifier

    // Activer/désactiver à la sauvegarde
    "phpcbf_on_save": false,
    // Afficher le quick panel
    "phpcbf_show_quick_panel": true,
    // Chemin vers l'exécutable phpcbf, laisser vide si dans le PATH
    "phpcbf_executable_path": "C:\\Program Files (x86)\\PHP\\tools\\phpcbf.bat",
    // Options
    "phpcbf_additional_args": {
        "--standard": "PSR2",
        "-n": ""
    },

    // Configuration Linter

    // Activer/désactiver Linter
    "phpcs_linter_run": true,
    // Activer/désactiver à la sauvegarde
    "phpcs_linter_command_on_save": false,
    // Chemin vers l'exécutable php, laisser vide si dans le PATH
    "phpcs_php_path": "C:\\Program Files (x86)\\PHP\\x.x.x\\php.exe",
    // Expression régulière de capture des erreurs
    "phpcs_linter_regex": "(?P<message>.*) on line (?P<line>\\d+)",

    // Configuration PHP Mess Detector

    // Activer/désactiver PHP Mess Detector
    "phpmd_run": true,
    // Activer/désactiver à la sauvegarde
    "phpmd_command_on_save": false,
    // Chemin vers l'exécutable phpmd, laisser vide si dans le PATH
    "phpmd_executable_path": "C:\\Program Files (x86)\\PHP\\tools\\phpmd.bat",
    // Options
    "phpmd_additional_args": {
        "codesize,unusedcode,naming": ""
    },

    // Configuration Scheck

    // Activer/désactiver Scheck
    "scheck_run": false,
    // Activer/désactiver à la sauvegarde
    "scheck_command_on_save": false,
    // Chemin vers l'exécutable, pas installé
    "scheck_executable_path": "",
    // Options
    "scheck_additional_args": {
        "-strict" : ""
    }
}

Il vous faudra adapter les différents chemins à votre installation. Vous noterez que j'ai désactivé le plugin à la sauvegarde car l'exécution de tous ces outils à chaque Ctrl+S peut être vite assez lourde surtout si, comme moi, votre fréquence de sauvegarde est élevée 😉 Le contrôle devra donc être lancé manuellement avec un clic droit puis "Sniff this file" depuis le menu PHP Code Sniffer rajouté au menu contextuel et qui contient tout ce qu'il faut pour tirer parti des outils installés.

phpcs-3

Menu contextuel du plugin

phpcs-4

Liste cliquable des erreurs

phpcs-1

Les erreurs sont mises en exergue

phpcs-2

L'erreur de la ligne est rappelée dans la barre de status

Un doute au niveau de la configuration? N'hésitez pas à aller voir la page du plugin http://benmatselby.github.io/sublime-phpcs/ et https://github.com/benmatselby/sublime-phpcs pour plus d'exemples.

Un commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *