Exercice 2 : l'outil PMD (plug-in pour Eclipse)
But de l'exercice
Le but de cet exercice est de vous familiariser avec :
- l'outil PMD, qui sert à identifier des problèmes
au niveau du style de codage
- la fonctionnalité de "Rename" du "Refactoring" (réusinage) d'Eclipse.
Notes :
- PMD peut fonctionner indépendamment d'Eclipse. Si vous voulez
savoir plus sur PMD en dehors d'Eclipse ou avec un autre environnement, regarder
le site
web de PMD.
- Cet exercice a été créé pour une installation
existante du plug-in de PMD v3.0.0 sous Eclipse v3.0.2.
- Cet exercice a été créé le 05-mai-2005 par
Christopher Fuhrman.
Vérifier l'installation du plug-in PMD pour Eclipse
- Sélectionner dans le menu Help -> About Eclipse Platform. Cliquer
sur le bouton "Plug-in
Details" et rechercher dans la liste des plug-in le "PMD UI plugin"
(normalement vers la fin).
- Sélectionner dans le menu Help -> Help contents. Vérifier
que la documentation pour le plug-in de PMD est présente.

- Cliquer à droite sur un projet ou fichier et chercher le sous menu "PMD"
Activer les règles PMD pour LOG120
PMD permet de contrôler le code source, selon un ensemble de règles
personnalisables, pour les fautes de style dans la programmation. Pour le cadre
du cours LOG120,
nous allons activer deux ensemble de règles que
supporte l'outil PMD.
- Dans Eclipse, ouvrir les préférences pour PMD (Window -> Preferences
->
PMD -> Rules configuration)
- Cliquer sur le bouton "Clear all" pour effacer les règles par défaut.
- Vérifier que la liste de règles (Rules) est vide.
- Cliquer sur le bouton "Import rule set..." et ensuite sur
la liste déroulante (▼) des ensembles de règles
("rule sets").
- Avec le bouton "Import rule set..." et
en choisissant l'ensemble de règles dans la liste, importer les
ensembles de règles suivants :
- Cliquer sur "OK" pour fermer la fenêtre des préférences.
- Répondre "Yes" à la question suivante :
Activer les règles PMD pour un projet
- Cliquer à droite sur un projet Eclipse et choisir les propriétés
(Properties) pour le projet.
- Cliquer sur l'élément "PMD" dans la liste à gauche.
- Cocher "Enable PMD".

- Cocher chaque règle (ça prendra du temps !) pour l'activer
dans PMD.
- Cliquer sur "OK" et accepter la proposition de "Rebuild" pour le projet.
Créer une classe dans un fichier source Java
- Dans le projet où PMD est activé, sélectionner
le menu "File
-> New
-> Class"
- Dans la fenêtre qui s'ouvre, entrer le nom de la classe bidon
dans le champ "Name" (attention - tout est en minuscule ici, car
on fait exprès de ne pas respecter la norme des noms de classes).
- Cliquer sur le bouton "Finish".
- Modifier le fichier texte pour qu'il ressemble au texte suivant :
Il s'agit d'un exemple avec plusieurs fautes au niveau du style de
codage. Normalement, ces fautes ne seront pas détectées par un compilateur
Java. Par contre, l'outil PMD va appliquer les règles configurées et identifier
les problèmes.
- Sauvegarder le fichier avec le menu "File -> Save bidon.java".
Contrôler le code source avec PMD
- Cliquer à droite sur le fichier "bidon.java" dans la fenêtre "Package Explorer"
et choisir l'article du menu "PMD -> Check Code With PMD":
- Eclipse montrera les erreurs et avertissements dans la fenêtre "Tasks"
normalement en bas de l'écran:
- En cliquant sur chaque tâche, on peut naviguer dans le fichier source
pour voir l'erreur en détail.
Corriger les erreurs de style avec le "Refactoring" d'Eclipse
Dans cet exemple, tous les problèmes sont les problèmes de noms
(de variable, de classe, de méthode). Lorsqu'il s'agit des erreurs de
style de codage, on voudrait les corriger sans changer
la fonctionnalité du code. Faire des changements "à la main",
l'un après l'autre,
est risqué, surtout lorsqu'il s'agit d'un code compliqué. Le
nom de variable que l'on change est sûrement utilisé à plusieurs
endroits dans le code. Faire remplacer le nom partout avec une fonction de "rechercher
et remplacer" est aussi problématique,
car le texte pour la variable i,
par exemple, peut apparaître à plusieurs endroits, non seulement
pour la variable i.
En génie logiciel, ce processus
d'amélioration de code source s'appelle le réusinage (ou
remaniement, ou
"Refactoring" en anglais). Voici la définition de réusinage
de granddictionnaire.com :
réusinage n. m. : Opération qui consiste à retravailler
le code source, non pas pour ajouter une fonctionnalité supplémentaire
au logiciel, mais pour améliorer sa lisibilité et simplifier
sa maintenance.
La solution à ce problème de nom indiqué par PMD se trouve
dans les fonctionnalités de "Refactoring"
d'Eclipse. L'une des fonctionnalités
("Rename") permet de renommer une variable (ou une classe, une méthode)
partout dans le code source, y compris dans d'autres fichiers sources qui y
font référence. Voici comment procéder pour changer
le nom du variable "i" à quelque chose de plus lisible :
- Positionner le curseur juste avant la variable i à la
ligne 3.
- Cliquer à droite et choisir l'article du menu "Refactor -> Rename..."
- Spécifier un meilleur nom pour la variable i,
par exemple
nombreÉléments (ça devrait
refléter
le vrai sens de cette variable, mais cet exemple est très
simple et les détails ne seront pas expliqués) :

- Vérifier que toutes les références à la variable i ont été renommées,
y comprise celle à la ligne 9.
- Répéter ce processus pour toutes les erreurs de style concernant
les noms identifiées par PMD.
Note : Les chargés de laboratoire évalueront votre
code source pour les laboratoires sur un critère de style de programmation.
Vous
perdrez
un pourcentage de points important sur votre solution, si PMD indique des
erreurs de style. C'est à dire que les chargés utiliseront PMD sur votre
code source pour trouver des fautes de style !
Résumé
Dans cet exercice, vous avez utilisé les outils suivants :
- PMD dans Eclipse : pour contrôler le code source pour les fautes de style
de codage.
- Refactoring (réusinage) dans Eclipse : pour effectuer des changements au
niveau du code sans changer la fonctionnalité.
Félicitations ! Maintenant vous connaissez encore mieux l'environnement
de
travail pour le cours LOG120, et vous êtes prêt à vous attaquer
au prochain laboratoire.
Error processing SSI file