Analyse PL/SQL avec SonarQube – Le Quality Profile PL/SQL

SonarQubePLSQL3Après avoir configuré notre première analyse PL/SQL depuis Jenkins, nous avons lancé celle-ci, et nous pouvons donc maintenant regarder les résultats dans le tableau de bord SonarQube.

Ceci sera l’occasion d’examiner et d’expliciter dans nos prochains posts, les règles proposées par SonarQube en matière de bonnes pratiques de programmation PL/SQL. Mais tout d’abord, regardons ce que nous propose le ‘profile’ PL/SQL de SonarQube.

Rappelons qu’un Quality profile est un groupe de règles, chacune avec un poids (Blocker, Critical, Major, etc.). Nous pouvons personnaliser ce profile en activant ou désactivant certaines règles, ou en leur attribuant un niveau de criticité différent, en fonction des bonnes pratiques personnelles d’une équipe ou d’un client. Certaines règles, généralement les plus importantes, sont impératives et personne ne pourra y déroger, même s’il peut être envisageable de modifier éventuellement leur poids. D’autres règles, génèralement moins critiques, peuvent être désactivées si un client a choisi de ne pas les inclure dans ses propres bonnes pratiques.

Afin d’effectuer ces choix, commençons par regarder ce que nous propose le Profile par défaut de SonarQube.

Le Quality profile PL/SQL de SonarQube

PLSQL_IssuesDrillDownDans le tableau de bord SonarQube de notre projet, la page ‘Issues drilldown’ liste les différentes violations aux bonnes pratiques de programmation PL/SQL en fonction de leurs criticité.

Nous constatons donc 17 infractions bloquantes (Blockers) mais zéro défauts critiques (Critical). Assez surprenant.

Il est tout à fait possible de n’avoir que 17 Blockers, conséquence de possibles fautes d’inattention de la part de l’équipe de projet, mais un score parfait sur les règles critiques avec une absence totale de défaut est vraiment étonnant.

Allons voir le Quality profile par défaut de SonarQube. Pour cela, nous activons le menu correspondant dans la barre de menu, afin d’ouvrir la page de même nom.

SonarQubeQualityProfileMenu

PLSQLProfileSonarWayTout à la fin de celle-ci, je rencontre le Profile PL/SQL, nommé ‘Sonar way’, et qui comporte 74 règles.

Un click sur ce lien nous permet d’entrer dans la page qui détaille ces règles.

Dans celle-ci, nous allons d’abord rechercher l’ensemble des règles critiques, en sélectionnant ‘Critical’ dans la combo-box ‘Severity’, puis en activant le bouton ‘Search’.

PLSQLProfileCriticalRules

Nous pouvons alors constater que ce Profile comporte uniquement 5 règles ‘Critical’ et qu’elles sont toutes désactivées, puisqu’aucune n’est cochée.

PLSQLProfile5CriticalRules

De même, si nous recherchons toutes les règles de quelque criticité que ce soit mais qui sont inactives :PLSQLProfileInactiveRules

Nous pouvons voir que 58 règles sont désactivées, en plus des 74 existantes.

Certes toutes ne sont pas forcément applicables, mais rappelons que mon objectif dans cette série de posts est de construire une démo qui me permette de montrer ce que SonarQube sait faire en matière d’évaluation de la qualité de code PL/SQL, et comment réaliser un audit de ce code avec SonarQube. Pour cela, je souhaite bien sûr disposer du plus grand nombre de règles. Quitte à en désactiver certaines ou à changer leur criticité pour ma démo.

Créer un nouveau Quality Profile

Je vais donc créer un nouveau Quality Profile dans lequel je vais activer toutes les règles existantes. Je pourrai ensuite relancer une analyse et voir dans le tableau de bord si j’obtiens des résultats intéressants.

PLSQLProfileCopyAfin de créer un nouveau profile, il me faut tout d’abord me connecter en ‘Admin’, de telle sorte que lorsque je reviens dans la page ‘Quality Profile’, de nouveaux menus sont apparus qui me permettent de copier le profile par défaut, en cliquant sur le menu ‘Copy’.

Un boìte de dialogue apparaît qui me permet de spécifier un nom pour ce nouveau Profile.

PLSQLProfileCopyName

Une fois celui-ci créé, il me suffit d’entrer dans sa page de Profile et rechercher toutes les régles inactives, comme nous l’avons déjà fait précédemment.

PLSQLProfileActivateAllEt une fois les 58 règles affichées, je peux toutes les activer grâce au ‘Bulk Change’ qui se trouve dans la partie supérieure droite de l’écran. Il suffit simplement de sélectionner ‘Activate all’ pour que toutes les régles présentes dans l’écran soient activées.

A la suite de cette opération, SonarQube m’indique que 132 règles sont maintenant disponibles dans mon nouveau profile : les 74 originellement actives et et les 58 que nous venons d’activer. Le compte est bon.

TabProjectsIl me reste une opération à réaliser : affecter ce profile à mon analyse PL/SQL. Pour cela, je vais aller dans l’onglet ‘Projects’ et rechercher le projet correspondant à cette analyse. Il suffit de rentrer au minimum 2 caractères pour que SonarQube affiche les projets comportant ces 2 caractères et nous permette de choisir celui pour lequel nous souhaitons utiliser le nouveau profile.

PLSQLProfileProjects

Une fois ceci réalisé, je vais me déloguer comme Admin et aller dans Jenkins lancer à nouveau mon analyse PL/SQL.

PLSQL_IssuesDrillDown2La page ‘Issues drilldown’ affiche maintenant de nouveaux défauts ‘Critical’ et une augmentation très importante du nombre de violations.

Nous allons ainsi pouvoir examiner toutes les règles PL/SQL disponibles dans SonarQube, et personnaliser notre nouveau Quality Profile.

Le prochain post sera consacré aux règles les plus importantes : les ‘Blockers’ et les ‘Critical’.

Ce article est également disponible en Leer este articulo en castellano et Read that post in english.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *