IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Contrôler la qualité de ses projets avec Sonar

Date de publication : 13/09/2008 , Date de mise à jour : 13/08/2009


V. Visualisation des données
V-A. Liste des projets
V-B. Vue d'un projet
V-B-1. Vue "Dashboard"
V-B-2. Vue "Violations drilldown"
V-B-2-a. Violations
V-B-2-b. Visualisation du code source
V-B-3. Vue "Time machine"
V-B-4. Vue "Clouds"
V-B-5. Vue "Hotspots"
V-B-6. Vue "Settings"


V. Visualisation des données


V-A. Liste des projets

Lorsque l'on se connecte sur la page d'accueil de son serveur Sonar, on visualise l'ensemble des projets gérés par Sonar. Cette liste est un tableau où sont affichées les principales informations pour chaque projet, comme par exemple :

  • Le nom du projet.
  • Le taux de respect des règles.
  • Le taux de couverture des tests.
  • Les principaux liens (vers l'application, le site du projet, le serveur d'intégration continue, le serveur de gestion des sources, etc.)
  • Quand a été réalisé le dernier build.
  • Les éventuelles alertes sur le projet.
  • etc.
L'administrateur de Sonar peut toutefois éditer les informations affichées dans ce tableau afin de présenter d'autres informations sur les projets (voir le chapitre sur l'administration).

Il est également présenté sur cette page un tree map, où chaque projet est symbolisé par un carré, dont la taille et la couleur indiquent le niveau de certaines métriques (par exemple le nombre de lignes de code, des informations sur les tests unitaires, etc.). En survolant le carré correspondant à un projet, une bulle donnera de plus amples informations.

Pour obtenir les détails d'un projet en particulier, il suffit de cliquer sur son nom, dans la liste. La vue d'un projet s'affiche alors...


V-B. Vue d'un projet

La vue d'un projet est composée du dashboard (l'écran de contrôle), ainsi que d'un menu à sa gauche. Ce menu permet d'accéder aux principales informations :

  • Le "Dashboard" qui propose en une page une visualisation complète de la qualité du projet.
  • Le "Violations drilldown" est la page principale regroupant l'ensemble des violations des règles de qualité.
  • La "Time machine" montre l'évolution du projet au cours du temps.
  • Les "Clouds", ou nuages, montrent les "quick wins" ou les points critiques du projet.
  • Les "Hotspots" regroupent en une page les classes les plus influentes sur la qualité.
  • Les "Settings" permettent de configurer le projet.

V-B-1. Vue "Dashboard"

La page d'accueil d'un projet est son dashboard, qui se divise en plusieurs blocs d'informations.

Le premier bloc montre les statistiques principales, comme le nombre de lignes de code, de packages, de classes Java ou encore le pourcentage de commentaires dans le code. On y trouve également les données sur la duplication de code. Ces informations, auparavant générées par le plugin JavaNCSS, sont désormais calculées par Sonar Squid (depuis Sonar 1.9).

Le deuxième bloc d'informations montre la répartition de la complexité cyclomatique par méthode ou par classe.

Le troisième bloc est destiné à afficher le pourcentage du respect des règles de codage et de dénombrer les violations (ventilées selon leur criticité).

Le quatrième bloc se concentre sur les tests unitaires ainsi que sur la couverture du code par ceux-ci.

Nous avons, dans le cinquième bloc, l'affichage des alertes ainsi que leur historique. Dans la capture suivante, on y voit deux alertes signalant que le pourcentage de réussite de tests unitaires est inférieur à 100% et que celui de lignes dupliquées est supérieur à 5%.

Le dernier bloc reprend le tree map de la page d'accueil principale, mais en regroupant chaque package (et non plus chaque projet) sous forme de carré. Chaque carré représente donc un package du projet, sa taille symbolisant par exemple sa complexité, et sa couleur son respect des règles de codage (on peut modifier les informations affichées par le treemap).

Il est possible de faire afficher d'autres blocs d'informations, selon les plugins installés sur le serveur Sonar. Par exemple, grâce au plugin de "Technical Debt", on verra les informations affichées sur le dashboard du projet :


V-B-2. Vue "Violations drilldown"


V-B-2-a. Violations
La vue "Violations drilldown" montre l'ensemble des violations des règles de qualité présentes dans le projet.

Le premier bloc montre le nombre de violations totales sur le projet. Celles-ci sont ventilées soit selon leur priorité (bloquante, critique, majeure, mineure ou information), soit selon leur catégorie (efficacité, maintenabilité, portabilité, fiabilité ou utilisabilité).

Le deuxième bloc affiche l'ensemble des règles non respectées sur le projet, ainsi que l'occurrence de ces violations.

Les deux derniers blocs montre, pour chaque package ou chaque classe, le nombre total de violations.

En cliquant sur l'une de ses règles (affichée dans le deuxième bloc), on fait afficher, dans les blocs du bas, les packages et les classes Java violant cette règle-là. Par exemple, en cliquant sur la règle "Unnecessary parentheses", on visualise où se situent ces violations :


V-B-2-b. Visualisation du code source
Dans cette page "Violations drilldown", en cliquant sur le nom d'une classe, on accède à code source. Il existe, pour cette visualisation, quatre onglets :

  • "Sources" qui montre le code source "brut"
  • "Coverage" qui montre le code source en mettant en évidence la couverture du code.
  • "Violations" qui montre le code source en indiquant les violations rencontrées.
  • "Duplications" qui affiche la couverture du code par les tests unitaires.
Ainsi, en visualisant le code source d'une classe avec les violations, nous voyons apparaitre ce type d'écran :

Pour plus de lisibilité, des options permettent de n'afficher que certaines violations (via le "filter") et n'affiche pas le code propre (on peut voir l'intégralité du code source en cliquant sur la case "Expand").

Pour des raisons de sécurité, il est possible de demander à Sonar de ne pas importer le code source dans Sonar. Ainsi, cette visualisation ne sera plus possible si cette option est désactivée (elle est active par défaut). Pour faire cela, il suffit de se rendre (en tant qu'administrateur) dans la configuration de Sonar, puis dans "General", et enfin de changer la valeur de l'option "Import sources". Il est également possible de le faire en ajoutant à sa commande Maven l'option "-Dsonar.importSources=false".


V-B-3. Vue "Time machine"

Depuis les toutes premières versions de Sonar, cet outil propose une fonctionnalité très intéressante, à savoir la "Time Machine". Elle permet de visualiser simplement l'évolution des différentes mesures au cours du temps sur un projet donné, et donc également de comparer l'état de l'application entre deux dates. L'accès à cette fonctionnalité se fait via le bouton "Time machine" présent dans le menu à gauche.

Au dessous du graphique, de nombreux indicateurs sont présents. Il suffit de sélectionner ceux pour lesquels nous souhaitons voir l'évolution, puis de cliquer sur le bouton "Compare on chart". Le graphique se met alors à jour pour afficher les nouvelles métriques.

On voit que Sonar intègre sur le graphique certaines dates "importantes" (marquée par une ligne verticale) :

  • le changement de version (dans le pom.xml),
  • un seuil d'alerte a été franchi (appelé "Yellow par exemple"),
  • une alerte a été stoppée (appelée "Green (was Orange)" par exemple).
Chacun de ces événements affiche résulte en une colonne dans le tableau présenté sous le graphique. Grâce au bouton "Show date" situé dans l'entête de tableau, on peut ajouter une nouvelle date pour une comparaison affinée. De même, chaque colonne dispose d'un bouton "hide" pour la faire disparaitre du tableau.


V-B-4. Vue "Clouds"

La vue "Clouds", ou "Nuages" est une double page mettant en lumière les classes ayant un intérêt particulier. Dans ces vues, le nom des classes Java est affiché plus ou moins grand, en fonction de l'importance de la classe. Il y a deux catégories de nuages :

  • Les "Quick wins".
  • Les "Project risks".
La page "Quick wins" montre ainsi les classes qui, pour un effort relativement faible, augmenteront significativement la qualité générale de l'application. Plus un nom de classe est écrit grand, plus la classe disposera d'une complexité cyclomatique forte. Quant à la couleur, elle correspond à la couverture du code. Ainsi, dans la capture suivante, la classe "Flat3Map" est écrit en grand (elle a une forte complexité) et en rouge (sa courverture de code est nulle).

La page "Project risks" reprend le même principe, mais se base sur d'autres critères. Ici, la taille du texte indique la complexité par méthode (et non plus la complexité générale de la classe) et la met en parallèle à la couverture de code. Ainsi, une classe écrite en grand et en rouge montre une classe ayant de forts risques d'erreurs.

Lorsque l'on clique sur le nom d'une classe (quelque soit le type de nuages), on est automatiquement redirigé vers le code source de la classe (voir chapitre précédent).


V-B-5. Vue "Hotspots"

La vue "Hotspots" montre, au sein d'une même page, les points importants sur le projet.

Ces informations sont séparées en huit blocs distincts :

  • "Most violated rules" liste les règles les plus souvent violées.
  • "Most violated files" montre les classes Java ayant le plus de violations de règles.
  • "Longest unit tests files" indique quels classes prennent le plus de temps pour exécuter les tests unitaires.
  • "Most complex and less tested files" liste les classes ayant une très forte complexité et une très faible couverture de code.
  • "Most complex files" affiche les classes les plus complexes.
  • "Highest average method complexity files" liste les classes ayant les plus fortes complexités moyennes par méthode.
  • "Most duplicated files" montre les classes ayant le plus de code dupliqué.
  • "Most undocumented file APIs" met en lumière les classes ayant peu de documentation.

V-B-6. Vue "Settings"

Cette vue n'est accessible qu'aux administrateurs. Elle permet de paramétrer le projet (voir le sous-chapitre "Gestion des projets" du chapitre "Administration" pour plus de détails).

 

Valid XHTML 1.0 TransitionalValid CSS!

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.