Contrôler la qualité de ses projets avec Sonar


précédentsommairesuivant

IV. Les outils externes

Afin d'analyser un projet Java, Sonar va se baser en partie sur des outils externes, dont :


* Depuis la version 1.9 de Sonar, l'obsolète projet JavaNCSS a été remplacé par Sonar Squid.
** Il est possible d'utiliser l'outil Clover grâce à un plugin dédié, mais il nécessitera toutefois un fichier de licence (il s'agit d'un outil commercial). Il est également possible d'utiliser JaCoCo pour calculer la couverture de code, en utilisant le plugin adéquat.

Une page wiki permet de lister les versions de ces outils utilisées nativement par Sonar.

IV-A. Les règles

Sonar propose trois profils qualité par défaut : Sonar way, Sonar way with Findbugs et Sun checks. Il est possible de définir d'autres profils de qualité en fournissant ses propres fichiers de configuration pour Checkstyle, PMD et Findbugs. Nous aborderons cela dans la partie administration de Sonar.

En cumulant ces trois outils (plus les règles spécifiques de Sonar), nous disposons de près de 800 règles possibles ! Chacune de ces règles peut être activée ou non, et est ensuite affectée à un niveau de sévérité :

  • Blocker ;
  • Critical ;
  • Major ;
  • Minor ;
  • Info.

IV-B. Checkstyle

Checkstyle est une aide précieuse pour les développeurs afin de leur faire respecter des standards de codage précis. On y retrouve une liste assez complète de règles paramétrables (environ 130 règles) permettant de valider à peu près n'importe quel type de standard. On pourra ainsi vérifier que les lignes n'excèdent pas une certaine longueur, que la Javadoc est bien présente, que les standards de nommage sont bien respectés, etc. Checkstyle permet aussi d'améliorer l'écriture et la qualité de son propre code, en indiquant par exemple quelles expressions peuvent être simplifiées, quels blocs peuvent être supprimés, quelle classe doit être déclarée finale, etc.

La liste complète des quelque 130 règles disponibles sur Checkstyle se trouve ici.

IV-C. PMD

PMD va scanner le code Java à la recherche de problèmes potentiels, tels que :

  • bogues possibles, blocs de code vides (try ... catch, switch) ;
  • code "mort", non utilisé (essentiellement des méthodes privées, ou des paramètres) ;
  • expressions trop lourdes, mauvaises utilisations des opérateurs de boucles ;
  • code dupliqué, "erreurs de copier-coller"...

IV-D. Findbugs

Findbugs est un outil apprécié par les développeurs car il apporte une analyse assez fouillée de programmes Java, et permet de détecter des problèmes assez complexes. Il pourra ainsi nous informer sur différents aspects, tels que :

  • mauvaises pratiques ;
  • utilisation de vulnérabilités de certains bouts de code ;
  • lister des problèmes épineux ;
  • possibles pertes de performances ;
  • gestion du multithreading ;
  • problèmes liés à la sécurité ;
  • etc.

IV-E. Sonar Squid

L'outil JavaNCSS était utilisé dans les premières versions de Sonar (jusqu'à la version 1.8). Hélas, ce projet n'a plus beaucoup évolué, et de nombreuses spécificités des dernières versions du langage Java n'étant pas supportées, l'équipe de Sonar avait alors décidé de développer son propre outil, Sonar Squid. Sonar Squid est partie intégrante de Sonar.

IV-F. Cobertura, Clover, JaCoCo

Cobertura, Clover et JaCoCo sont des outils permettant la mesure de la couverture de code par l'exécution des tests unitaires. Il s'agit là d'un indicateur extrêmement utile pour déterminer avec précision quelles parties de l'application ne sont pas suffisamment testées. Sonar propose d'obtenir une vision au niveau d'un projet, d'un package, d'une classe ou d'une méthode de cette couverture de test.

Image non disponible

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.