L’écosystème PHP regorge d’outils permettant d’augmenter sensiblement la qualité du code produit par les équipes de développement. On peut noter les travaux avancés de Sebastian Bergmann et plus généralement des contributeurs de la PHP Quality Assurance Toolchain qui fournissent à la communauté un outillage précieux.
Ce billet explore les outils les plus couramment utilisés lors d’une analyse du code PHP. Souvent plébiscités dans un cycle d’intégration continue ; ils sont rarement intégrés à l’environnement de développement : lancement manuel via un terminal, pre-hook sur un serveur de versionning. L’objectif est ici d’augmenter l’interactivité de ces outils avec les développeurs et de leur permettre d’aborder des méthodologies comme le Test Driven Development (TDD) plus sereinement.
Prérequis
- Eclipse Classic Indigo 3.7;
- PHP 5.3, seul l'exécutable en ligne de commande nous intéresse;
- XDebug (optionnel), pour les rapports de couverture de code.
Zoom sur les outils
PHP CodeSniffer
Détecte les violations de convention de nommage. PHP
CodeSniffer propose plusieurs
conventions par défaut comme Zend ou PEAR ; il est possible de définir
facilement vos propres normes en écrivant votre propre standard, l’outil étant
développé en PHP.
PHP Unit
unitairement le code source produit. Il représente en soit 2 outils :
- un Framework qui permet d’écrire facilement des tests
unitaires pour l’univers PHP ; - un exécutable, pour lancer des tests écrits grâce au Framework dans le but d’en analyser les résultats.
Intégration avec Eclipse
PHP Tool Integration (PTI)
de proposer plusieurs sous plugins (intégration d’outils à Eclipse, librairie
PEAR, interaction avec le parseur de validation d’Eclipse).
La librairie PEAR embarqué dispose déjà des outils abordés
précédemment : vous n’avez donc pas à les installer manuellement.
Des outils de métrique sont également de la partie avec PHP
Depend et PHP Mess Detector qui proposent une analyse statique du code source.
Site officiel : http://www.phpsrc.org/
Installation
L’installation testée avec la dernière version d’Eclipse
(Indigo 3.7) :
- depuis Eclipse, accèdez au menu « Help » ->
« Install New Software » ; - ajoutez le site http://www.phpsrc.org/eclipse/pti/
puis lancez l’installation ; - redémarrez Eclipse.
Note : cette version, bien que fonctionnelle se fait
vieillissante ; son développeur se
penche en ce moment sur une version 2 totalement refondue afin de faciliter les
contributions externes.
Configuration d'Eclipse
Pour fonctionner, les outils doivent utiliser votre
version de PHP5.3. Vous devez donc spécifier à Eclipse à quel emplacement elle
est installée via le menu « Windows » -> « Preferences »
-> « PHP » -> « PHP Executables ».
Validez : votre espace de travail Eclipse est maintenant configuré.
Configuration de votre projet
Nous allons maintenant configurer les outils par projet.
Vous pouvez cependant spécifier une configuration pour l’ensemble de votre espace
de travail depuis le menu « Window » -> « Preferences ».
Créez un nouveau projet PHP puis accédez à ses propriétés.
Le menu PHP Tools vous propose 4 outils à configurer : PHP CodeSniffer, PHP Copy/Paste Dectector, PHP Depend, PHPUnit.
Pour chacun des outils, vous devez sélectionner
l’exécutable PHP qui leur permettra de fonctionner ainsi que la librairie PEAR
que vous utilisez pour les détecter. Par défaut, le plugin PTI a installé une librairie PEAR incluant les outils nécessaires
sous le nom « Internal ».
Chaque outil possède ensuite ses propres réglages : ici pour PHPCodeSniffer il s'agira de sélectionner les standards d'écriture utilisés.
En action !
Pour la détection de différent par rapport à la norme de
codage choisie, le plugin est intégré au parseur d’Eclipse et se lancera dès
que des modifications seront apportées à un fichier.
Comme nous pouvons le voir, le passage vers la norme de
codage du CMS Drupal ne se fait pas en douceur : les messages d’erreurs
sont très envahissants.
Si nous désirons tester unitairement cette classe ;
le plugin peut se charger de générer le fichier de test via un clic droit sur
notre fichier -> New -> Other -> PHP -> PHPUnit -> PHPUnit Test
Case.
On peut noter qu’il est également possible de sélectionner
le template « PHP Class from PHPUnit Test Case qui, comme son nom
l’indique, vous offre la possibilité d’écrire en premier lieu votre classe de
test afin de générer le squelette de votre future classe.
L’arborescence est alors déployée et la classe de test est
déjà pré-remplie.
Il est intéressant de noter qu’aucun standard fourni avec
PHP CodeSniffer n’a permis de valider le fichier généré. Nous pouvons alors
lancer notre test, depuis l’un des boutons situés au-dessus de l’éditeur de
texte. Si vous lancez le test avec l’option de couverture de code, un message
d’information vous avertira des portions qui n’ont pas été testées :
La vue PHPUnit peut alors vous informer des tests qui ont
échoué :
Ce billet, déjà bien
long, s'arrête ici ; si vous désirez approfondir la discussion autour de l’un
des outils en particulier, n’hésitez pas, exprimez-vous !
Avant d’installer les differents plugins du site http://www.phpsrc.org/eclipse/pti/, il faut installer PHP Development Tools (PDT) pour pourvoir appliquer les éléments du post.
C’est une vraie mine d’or. Il y aura-t-il une manière d’installer le pack à partir d’un fichier archive? sans connexion internet?
Le plugin PTI (PHPsrc) est il compatible avec la dernière version d éclipse PDT 3.8… Les items du menu restent grises…frustrant !
C’est intéressant