Eclipse Checkstyle

De EjnTricks

A l'instar du formatage, il est possible de mettre en place des règles sur le code écrit, permettant ainsi de contrôler l'intégralité du code. Ceci est à réaliser avant un packaging sous Maven par exemple.

Les règles utilisées se trouve à l'adresse suivante: checkstyle.xml


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


System-Install-icon.png Installation

La vérification du formattage depuis des règles Checkstye nécessite l'utilisation du plugin Eclipse-CS disponible à l'adddresse http://eclipse-cs.sourceforge.net/downloads.html, ou depuis l'outil de gestion des plugins de Eclipse.


Icon-Configuration-Settings.png Paramétrage

Icon Personnalisation.png Mise en place

La procédure d'installation du fichier de formattage est assez simple. Ceci s'effectue depuis les préférences de l'espace de travail en y accédant da la section Checkstyle.


Il faut créer une nouvelle configuration en cliquant sur le menu <New ...>


Dans le cadre de cet article, l'installation s'effectue à partir d'un fichier XML distant:


Cette nouvelle configuration est ensuite installée comme celle par défaut en cliquant sur le bouton <Set as Default>


Bug-icon.png Anomalie

Dans le cadre de l'utilisation d'une "ancienne" configuration, l'erreur suivante peut être affichée.

Errors occurred during the build.
Errors running builder 'Checkstyle Builder' on project 'XXX'.
cannot initialize module TreeWalker - Unable to instantiate DoubleCheckedLocking
cannot initialize module TreeWalker - Unable to instantiate DoubleCheckedLocking
cannot initialize module TreeWalker - Unable to instantiate DoubleCheckedLocking
cannot initialize module TreeWalker - Unable to instantiate DoubleCheckedLocking

La résolution de l'anomalie a été trouvée sur le forum stackoverflow. Il se trouve que la vérification DoubleCheckedLocking a été supprimée de l'outil et il faut désactiver la règle en mettant en commentaire la règle dans la configuration XML.

	<module name="RightCurly" />
	<!-- <module name="DoubleCheckedLocking" /> -->
	<module name="EmptyStatement" />


Configuration-icon.png Checkstyle Google Code

La configuration Google de Checkstyle est très populaire et courament utilisée. Elle permet d'uniformiser un grand nombre de projet et est libre de droit. Dans les versions du plugin Checktyle de Eclipse, cette configuration est disponible par défaut.


Cependant, son utilisation et la configuration par défaut de Eclipse peut entraîner des avertissements, comme pourle cas du tri des imports. Le message de warning affiché est le suivant.

Déclaration dimportation pour les '{1}' est dans le mauvais ordre. Devrait être dans le '{0}' groupe, en attendant les importations ne sont pas affectés sur cette ligne.


Dans la configuration, l'ordre des imports impose que les packages java et javax soit en dernier, comme expliqué sur le site référence : http://checkstyle.sourceforge.net/reports/google-java-style.html#s3.3.3-import-ordering-and-spacing

Il faut donc configuré l'organisation des imports afin de respecter cet ordre.


A noter, que la première configuration utilise la wildcard * qui va s'appliquer à tous les packages. Puis sont placés en dernière position les packages java et javax. Cette configuration peut être appliquée automatiquement à la [Eclipse formattage code#Actions sur sauvegarde|sauvegarde du code], où manuellement à l'aide du menu Source → Organize import. Cette action peut être exécutée sur une classe, sur un package ou un répertoire de source.


Concernant l'indentation, la configuration google implique l'utilisation de l'espace et non la tabulation, et une tailel de 2 caractères. Il est donc nécessaire de configurer cette valeur au niveau du profile de format actif. AU niveau des préférence, dans la section Java → Code style → Formatter, une fois la configuration sélectionner, il faut cliquer sur le bouton Edit.


Dans la fenêtre de configuration, ce paramètre est disponible au niveau de l'onglet Indentation dans la zone de saisie Indentation size. Il suffit de spécifier 2 et de s'assurer que le choix de la liste Tab policy est bien Spaces only.