Accélérer ses développements PHP avec PhpStorm

#ide#outil#php#test#usine logicielle

Pour la réalisation de projets conséquents, et dans l’optique d’optimiser la productivité des développeurs, l’utilisation maitrisée d’un EDI (Environnement de Développement Intégré) complet est un plus indéniable. Dans le monde PHP, les deux plus connus sont très certainement les EDI libres Eclipse et Netbeans, à l’origine destinés au langage Java. Bien que très complets, ces ateliers souffrent parfois de lacunes, en terme notamment de configuration, d’encombrement mémoire ou encore d’ergonomie. Un EDI concurrent, propriétaire cette fois, comble efficacement ces lacunes et propose par la même occasion des fonctionnalités complémentaires : il s’agit de PhpStorm de JetBrains.

Cet éditeur de logiciels s’est tout d’abord fait connaître dans le monde Java avec son premier produit, l’EDI IntelliJ IDEA. PhpStorm reprend l’interface et les fonctionnalités d’IntelliJ pour les adapter au langage PHP. Nous profitons de la sortie récente de la version 3.0 pour présenter cet outil taillé pour les projets de grande envergure. Dans un premier temps, nous en décrivons l’interface en général, et dans un second temps, nous présentons quelques fonctionnalités choisies pour leur nouveauté ou leur intégration particulièrement efficace.

1. Présentation générale

On attend principalement d’un EDI qu’il regroupe dans une même interface les fonctionnalités indispensables à la réalisation et au suivi du projet tout au long de son cycle de vie. On y retrouve donc bien évidemment un éditeur performant simplifiant l’écriture de code, mais aussi idéalement l’intégration d’un débogueur, l’interfaçage avec un outil de gestion de versions, l’interfaçage avec un outil de gestion de tâches, la prise en charge des tests unitaires ou encore des outils de déploiement. PhpStorm intègre tout ceci de façon intuitive et efficace. Nous présentons ici son interface et ses principales fonctionnalités.

Ecran d’accueil
L’écran d’accueil [Figure 1] présente les raccourcis habituels de création ou d’ouverture de projets, mais il propose également par défaut la création d’un nouveau projet à partir d’un outil de gestion de versions [Figure 2] là où chez les concurrents il faut passer par l’installation et la configuration d’un plugin.


Figure 1 (CLIQUER sur l’image pour l’agrandir)

Figure 2
Figure 2

La création d’un nouveau projet peut aussi se faire en ouvrant simplement un répertoire contenant des fichiers sources. A contrario de la création à partir de sources existantes qui offre la possibilité de récupérer des sources sur un FTP ou un partage réseau et présente des options complémentaires de déploiement, aucune configuration n’est ici nécessaire. Le répertoire est ouvert comme un projet, et après sa fermeture, il apparait simplement dans la liste des projets récents.

Présentation de l’interface
Une fois le projet ouvert, on retrouve le même type d’interface que pour les EDI concurrents [Figure 3]. L’interface se décompose en différentes fenêtres, que l’utilisateur peut configurer à sa convenance. Par défaut, on observe un découpage en trois fenêtres principales : 1. La plus grande, centrale, consacrée à l’édition des fichiers sources à proprement parler. Les différents fichiers ouverts apparaissent sous forme d’onglets portant le nom du fichier (dont la couleur change suivant le statut en cas d’utilisation d’un outil de gestion de versions). 2. Une fenêtre sur la gauche consacrée à la navigation à l’intérieur de la solution et des fichiers. Plusieurs choix sont offerts (sous forme d’onglets sur la gauche). La navigation peut se faire dans l’arborescence des fichiers de la solution ou par « structure », comme par exemple dans l’arborescence d’un fichier XML ou HTML ou parmi les classes PHP, leurs méthodes, etc. 3. Une fenêtre en bas utilisée pour le débogage, l’interface avec l’outil de gestion de versions ou encore la liste des « TODO » ici aussi disponibles sous forme d’onglets.


Figure 3 (CLIQUER sur l’image pour l’agrandir)

Au premier abord rien d’exceptionnel donc, mais l’interface est intuitive et truffée de petites fonctionnalités pratiques, comme la localisation, dans l’arborescence du projet, du fichier en cours d’édition. De plus, l’interface est entièrement personnalisable. La plupart des fonctionnalités présentées ci-après sont accessibles par l’utilisation de raccourcis également personnalisables. Un PDF présent dans l’aide propose une synthèse des principaux raccourcis. Par défaut, une popup « trucs et astuces » s’ouvre à chaque démarrage pour présenter une fonctionnalité et son raccourci associé, s’il existe, ce qui permet de se familiariser rapidement avec l’interface. On regrettera cependant qu’il ne soit pas possible d’ouvrir plus d’un projet à la fois dans une fenêtre en utilisant le navigateur de projet sur la gauche pour passer de l’un à l’autre. La seule possibilité est d’utiliser une fenêtre différente par projet. Un autre aspect peut être gênant, pour les allergiques à la langue de Shakespeare, l’interface n’est pas disponible en français.

Fonctionnalités principales
Pour répondre aux besoins très variés rencontrés tout au long du cycle de vie d’une application, l’EDI doit intégrer de nombreuses fonctionnalités. Comme NetBeans ou Eclipse, PhpStorm a choisi d’utiliser un système de plugins. Il est donc livré avec de nombreux plugins qu’il est possible de désactiver, mais on peut aussi en ajouter pour répondre à de nouveaux besoins.

L’édition de code
L’activité principale du développeur est l’écriture de code. C’est donc aux fonctionnalités d’édition que nous nous intéressons tout d’abord. PhpStorm propose bien évidemment les fonctionnalités courantes de coloration syntaxique, d’auto-complétion, d’indentation automatique, de masquage de portions de code, ou encore d’affichage de la documentation des méthodes et fonctions. PhpStorm n’est d’ailleurs pas uniquement compatible avec PHP. En effet, il reconnaît très bien par exemple le HTML, le JavaScript, le CSS ou encore le SQL. La fonction d’auto-complétion ne se contente pas de la classique complétion de code, elle permet également de compléter automatiquement les classes CSS ou encore les chemins vers des fichiers. Dans le même esprit, avec l’utilisation de petites icônes et d’un code couleur judicieux, PhpStorm met en évidence les portions de code inutiles, erronées, qui peuvent être simplifiées ou encore qui comportent des erreurs orthographiques.

Pour générer automatiquement les portions de code répétitives, PhpStorm propose un certain nombre de templates pour créer simplement des squelettes de classes, de méthodes, de boucles, etc. L’utilisateur peut bien sûr ajouter ses propres templates. D’autres fonctions, à l’instar de « entourer de », du déplacement de portions de code par l’intermédiaire de raccourcis claviers, ou encore de la génération de code [Figure 4] permettent d’éviter des copier/coller fastidieux.


Figure 4

PhpStorm dispose également d’un outil de comparaison et de fusion qui s’utilise au choix sur deux fichiers locaux, sur un fichier par rapport à une version donnée sur l’outil de gestion de version, sur un fichier par rapport à un fichier sur un FTP ou bien sur une portion de code par rapport au contenu du presse-papier [Figure 5].


Figure 5

La navigation au sein du code est simplifiée grâce à l’utilisation de fonctions de recherche ciblées (dans tous les fichiers du projet, dans tous les fichiers d’un répertoire donné, dans tous les fichiers de production, tous les fichiers de test, etc.) employées pour trouver l’implémentation d’une méthode, ses différentes utilisations, ou simplement une chaîne de caractères.

Enfin, les principales tâches de refactoring telles que le renommage ou la suppression intelligente sont disponibles et prennent en compte, si nécessaire, les commentaires ou le changement automatique des noms de fichiers (lors du renommage d’une classe par exemple).

Versions et Gestion des tâches
Par rapport à ses concurrents, PhpStorm a l’avantage d’intégrer un interfaçage avec les principaux outils de gestion de versions (Git, SVN, etc. ) et de gestion de tâches (Redmine, YouTrack, etc.) sans installation ou configuration supplémentaire. En plus des fonctionnalités standards d’archivage, la création d’une nouvelle branche ou l’import d’un nouveau projet dans l’outil de gestion de version sont accessibles directement depuis l’EDI ce qui permet d’éviter au maximum le recours à un client extérieur. De même, l’intégration avec l’outil de gestion de tâches propose l’ajout de nouvelles tâches, la consultation ou encore la résolution directement depuis l’interface. Il est par ailleurs également possible d’associer un archivage à une tâche de façon à la résoudre automatiquement, ou simplement y faire référence.

Qualité du code et débogage
Pour aider les développeurs à fournir un code propre et à déboguer leur application, PhpStorm dispose de nombreux outils. L’inspection de code a pour but de mettre en évidence les erreurs ou alertes des différents scripts. On peut en automatiser le lancement avant chaque archivage pour alerter l’utilisateur le cas échéant. De façon plus graphique, au même niveau que l’ascenseur de navigation dans le fichier ouvert dans l’éditeur, on retrouve une petite colonne permettant de localiser les différentes erreurs ou alertes dans le code. Chaque notification est matérialisée par un petit rectangle coloré par lequel on peut directement se rendre à l’endroit correspondant dans le fichier. PhpStorm gère aussi les tests unitaires PHPUnit. Il gère notamment le lancement des tests, leur débogage ainsi que la visualisation des résultats..

Déboguer une application PHP avec PhpStorm s’avère très simple. Il n’est point besoin ici de configuration complexe du serveur de développement ou de l’EDI. Il suffit d’activer le débogage avec Xdebug dans le fichier de configuration de PHP : tout est déjà configuré et prêt à fonctionner du côté de PhpStorm [Figure 6]. Le débogage de JavaScript est également intégré à l’EDI, ainsi que le débogage d’applications à distance. Un profiler est inclus dans la dernière version. Par contre, si l’on souhaite déboguer à la fois le JavaScript et le PHP deux instances de débogage au profil différent sont nécessaires, nous obligeant à passer de l’une à l’autre constamment.


Figure 6 (CLIQUER sur l’image pour l’agrandir)

2. Fonctionnalités avancées et nouveautés
PhpStorm se distingue de la concurrence soit en proposant de nouvelles fonctionnalités, soit en proposant une implémentation plus efficace ou plus complète de certaines fonctionnalités existant dans d’autres EDI. Un accent tout particulier est mis sur l’ergonomie. Loin d’être exhaustifs, les exemples présentés ci-dessous ont pour but de montrer ce qui donne à PhpStorm ce petit plus qui le rend tout de suite confortable à utiliser et rapidement indispensable.

Diagramme de classes
Un premier exemple, introduit avec la version 3.0 de PhpStorm, est la génération des diagrammes des classes PHP [Figure 7]. Il est par ailleurs possible d’initier des tâches de renommage à partir de ce diagramme. Par contre nous aurions aimé avoir d’autre options de refactoring, comme l’ajout ou la suppression de méthodes ou variables, ou encore la modification de l’héritage, à partir de ce même diagramme.


Figure 7

Interfaçage avec la base de données
Un autre exemple intéressant est l’interfaçage avec la base de données qui offre l’exécution de scripts sur la base de données tout en simplifiant leur écriture grâce à l’auto-complétion [Figure 8]. Les modifications sur la structure de la base ou sur les données peuvent s’effectuer depuis l’interface, graphiquement ou par l’exécution de requêtes, ce qui permet la plupart du temps d’éviter l’utilisation d’outils externes. Malheureusement cette intégration n’est pas complète, l’auto-complétion des noms de champs et de table ne fonctionne pas dans les scripts SQL inclus dans des chaines de caractère PHP. Il existe cependant des plugins pour répondre à ce besoin.


Figure 8 (CLIQUER sur l’image pour l’agrandir)

Simplifiez-vous le CSS
Certaines fonctionnalités peuvent sembler accessoires mais permettent un gain de temps important. Par exemple, PhpStorm présente les feuilles de style CSS avec des carrés colorés en marge des lignes comportant un code couleur. En plus de donner un aperçu rapide de la couleur correspondante, ces carrés donnent accès, d’un simple clic, à un mélangeur de couleurs épaulé d’une pipette permettant de sélectionner la couleur de n’importe quel pixel affiché à l’écran [Figure 9].


Figure 9

Il est également possible d’afficher tous les styles s’appliquant à une balise HTML donnée (qu’ils soient appliqués directement ou hérités) comme on le ferait avec un outil tel que Firebug. Par ailleurs, le refactoring de CSS est simplifié. Le renommage d’une classe dans la feuille de style provoque la mise à jour du code HTML l’utilisant, mais l’inverse est aussi vrai.

Intégration avec les frameworks
En complément de la complétion et de l’affichage de l’aide, l’outil de ligne de commande intégré peut être configuré pour reconnaître et exécuter les commandes de différents frameworks. Par défaut, et si le framework correspondant est déjà installé sur le système, les commandes de Zend Framework et de Symfony peuvent être activées. On peut également utiliser l’auto-complétion pour faciliter l’écriture de ces commandes et les exécuter directement depuis PhpStorm.

Historique Local
Parallèlement à l’outil de gestion de versions, PhpStorm propose un historique local. Les fichiers sont enregistrés automatiquement, ce qui peut surprendre au départ, mais permet de faire une comparaison et une fusion par rapport à une version antérieure [Figure 10]. On utilise par défaut l’échelle du temps pour retrouver la version souhaitée, mais l’utilisation d’étiquettes est aussi possible.


Figure 10 (CLIQUER sur l’image pour l’agrandir)

En guise de conclusion
Les fonctionnalités présentées dans cet article sont celles installées par défaut avec PhpStorm. Cependant, le système de plugins permet d’ajouter de nouvelles fonctionnalités. Au delà des fonctionnalités elles-mêmes, l’interface est soignée et intuitive et s’intègre élégamment sous les systèmes d’exploitation Windows, Linux (GTK) ou encore OSX. Techniquement, peu de fonctionnalités proposées par la concurrence sont manquantes. Reste la barrière du prix des licences qui, si elles sont rapidement rentabilisées par les sociétés par une productivité améliorée, peuvent sembler excessives pour un développeur à titre personnel. On peut regretter qu’il n’existe pas une version « community » distribuée librement comme la version community d’IntelliJ, mais il est cependant possible d’obtenir une licence gratuite si l’on participe à un projet open source. Dans tous les cas, un essai de 30 jours est offert pour tous les outils de JetBrains. Plus plus d’informations, vous pouvez consulter le site de l’éditeur : http://www.jetbrains.com/phpstorm/.

Il est possible de retrouver l’intégralité de cet article dans le numéro 149 du mois de Février 2012 du magazine « Programmez ».