Prérequis

Zoom sur les outils

Nous n'allons pas aborder l'ensemble des outils utilisables, mais nous focaliser sur 2 d'entre eux.

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.

http://pear.php.net/package/PHP_CodeSniffer

PHP Unit

PHP Unit propose une solution afin de couvrir 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.
Notes : il existe plusieurs extensions pour écrire des tests plus aboutis (mocking, intégration avec Sélénium, etc.), disponibles sur le dépôt PEAR pear.phpunit.de.
La documentation a été récemment traduite en français : http://www.phpunit.de/manual/3.6/fr/index.html

Intégration avec Eclipse

PHP Tool Integration (PTI)

PTI est un plugin Eclipse. Plus concrètement, il est construit de façon modulaire afin 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 ».

 Ajouter l'exécutable PHP à la configuration d'Eclipse

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 ». 

Configuration de PHP CodeSniffer

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. 

Exemple d'utilisation de PHPCodeSniffer intégré à Eclipse

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.

Génération d'une classe de test via l'assistant Eclipse

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.

Résultat de la génération de l'assistant d'Eclipse pour PHPUnit

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 :

Lancer un test unitaire via Eclipse

La vue PHPUnit peut alors vous informer des tests qui ont échoué :

Vue Eclipse de PHPUnit : affichage des résultats

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 !