{"id":1463,"date":"2013-12-29T09:00:09","date_gmt":"2013-12-29T08:00:09","guid":{"rendered":"http:\/\/qualilogy.com\/fr\/?p=1463"},"modified":"2013-12-31T09:01:27","modified_gmt":"2013-12-31T08:01:27","slug":"analyse-plsql-sonarqube-quality-profile-plsql","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/fr\/analyse-plsql-sonarqube-quality-profile-plsql\/","title":{"rendered":"Analyse PL\/SQL avec SonarQube &#8211; Le Quality Profile PL\/SQL"},"content":{"rendered":"<p><a href=\"http:\/\/500px.com\/Vicken\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1467\" alt=\"SonarQubePLSQL3\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubePLSQL3.jpg\" width=\"375\" height=\"178\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubePLSQL3.jpg 375w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubePLSQL3-300x142.jpg 300w\" sizes=\"(max-width: 375px) 100vw, 375px\" \/><\/a>Apr\u00e8s avoir configur\u00e9 notre premi\u00e8re analyse PL\/SQL<\/a> depuis Jenkins, nous avons lanc\u00e9 celle-ci, et nous pouvons donc maintenant regarder les r\u00e9sultats dans le tableau de bord SonarQube.<\/p>\n<p>Ceci sera l\u2019occasion d\u2019examiner et d\u2019expliciter dans nos prochains posts, les r\u00e8gles propos\u00e9es par SonarQube en mati\u00e8re de bonnes pratiques de programmation PL\/SQL. Mais tout d&rsquo;abord, regardons ce que nous propose le \u2018profile\u2019 PL\/SQL de SonarQube. <!--more--><\/p>\n<p>Rappelons qu\u2019un Quality profile est un groupe de r\u00e8gles, chacune avec un poids (Blocker, Critical, Major, etc.). Nous pouvons personnaliser ce profile en activant ou d\u00e9sactivant certaines r\u00e8gles, ou en leur attribuant un niveau de criticit\u00e9 diff\u00e9rent, en fonction des bonnes pratiques personnelles d\u2019une \u00e9quipe ou d\u2019un client. Certaines r\u00e8gles, g\u00e9n\u00e9ralement les plus importantes, sont imp\u00e9ratives et personne ne pourra y d\u00e9roger, m\u00eame s&rsquo;il peut \u00eatre envisageable de modifier \u00e9ventuellement leur poids. D\u2019autres r\u00e8gles, g\u00e9n\u00e8ralement moins critiques, peuvent \u00eatre d\u00e9sactiv\u00e9es si un client a choisi de ne pas les inclure dans ses propres bonnes pratiques.<\/p>\n<p>Afin d\u2019effectuer ces choix, commen\u00e7ons par regarder ce que nous propose le Profile par d\u00e9faut de SonarQube.<\/p>\n<h2>Le Quality profile PL\/SQL de SonarQube<\/h2>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQL_IssuesDrillDown.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1471\" alt=\"PLSQL_IssuesDrillDown\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQL_IssuesDrillDown.jpg\" width=\"210\" height=\"138\" \/><\/a>Dans le tableau de bord SonarQube de notre projet, la page \u2018Issues drilldown&rsquo; liste les diff\u00e9rentes violations aux bonnes pratiques de programmation PL\/SQL en fonction de leurs criticit\u00e9.<\/p>\n<p>Nous constatons donc 17 infractions bloquantes (Blockers) mais z\u00e9ro d\u00e9fauts critiques (Critical). Assez surprenant.<\/p>\n<p>Il est tout \u00e0 fait possible de n\u2019avoir que 17 Blockers, cons\u00e9quence de possibles fautes d\u2019inattention de la part de l\u2019\u00e9quipe de projet, mais un score parfait sur les r\u00e8gles critiques avec une absence totale de d\u00e9faut est vraiment \u00e9tonnant.<\/p>\n<p>Allons voir le Quality profile par d\u00e9faut de SonarQube. Pour cela, nous activons le menu correspondant dans la barre de menu, afin d\u2019ouvrir la page de m\u00eame nom.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubeQualityProfileMenu.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1472\" alt=\"SonarQubeQualityProfileMenu\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubeQualityProfileMenu.jpg\" width=\"445\" height=\"100\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubeQualityProfileMenu.jpg 445w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/SonarQubeQualityProfileMenu-300x67.jpg 300w\" sizes=\"(max-width: 445px) 100vw, 445px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileSonarWay.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1473\" alt=\"PLSQLProfileSonarWay\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileSonarWay.jpg\" width=\"337\" height=\"104\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileSonarWay.jpg 337w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileSonarWay-300x92.jpg 300w\" sizes=\"(max-width: 337px) 100vw, 337px\" \/><\/a>Tout \u00e0 la fin de celle-ci, je rencontre le Profile PL\/SQL, nomm\u00e9 \u2018Sonar way\u2019, et qui comporte 74 r\u00e8gles.<\/p>\n<p>Un click sur ce lien nous permet d\u2019entrer dans la page qui d\u00e9taille ces r\u00e8gles.<\/p>\n<p>Dans celle-ci, nous allons d\u2019abord rechercher l\u2019ensemble des r\u00e8gles critiques, en s\u00e9lectionnant \u2018Critical\u2019 dans la combo-box \u2018Severity\u2019, puis en activant le bouton \u2018Search\u2019.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCriticalRules.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1477\" alt=\"PLSQLProfileCriticalRules\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCriticalRules.jpg\" width=\"754\" height=\"205\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCriticalRules.jpg 754w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCriticalRules-300x81.jpg 300w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCriticalRules-624x169.jpg 624w\" sizes=\"(max-width: 754px) 100vw, 754px\" \/><\/a><\/p>\n<p>Nous pouvons alors constater que ce Profile comporte uniquement 5 r\u00e8gles \u2018Critical\u2019 et qu\u2019elles sont toutes d\u00e9sactiv\u00e9es, puisqu\u2019aucune n\u2019est coch\u00e9e.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfile5CriticalRules.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1478\" alt=\"PLSQLProfile5CriticalRules\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfile5CriticalRules.jpg\" width=\"497\" height=\"212\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfile5CriticalRules.jpg 497w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfile5CriticalRules-300x127.jpg 300w\" sizes=\"(max-width: 497px) 100vw, 497px\" \/><\/a><\/p>\n<p>De m\u00eame, si nous recherchons toutes les r\u00e8gles de quelque criticit\u00e9 que ce soit mais qui sont inactives :<a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileInactiveRules.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1476\" alt=\"PLSQLProfileInactiveRules\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileInactiveRules.jpg\" width=\"567\" height=\"132\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileInactiveRules.jpg 567w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileInactiveRules-300x69.jpg 300w\" sizes=\"(max-width: 567px) 100vw, 567px\" \/><\/a><\/p>\n<p>Nous pouvons voir que 58 r\u00e8gles sont d\u00e9sactiv\u00e9es, en plus des 74 existantes.<\/p>\n<p>Certes toutes ne sont pas forc\u00e9ment applicables, mais rappelons que mon objectif dans cette s\u00e9rie de posts est de construire une d\u00e9mo qui me permette de montrer ce que SonarQube sait faire en mati\u00e8re d\u2019\u00e9valuation de la qualit\u00e9 de code PL\/SQL, et comment r\u00e9aliser un audit de ce code avec SonarQube. Pour cela, je souhaite bien s\u00fbr disposer du plus grand nombre de r\u00e8gles. Quitte \u00e0 en d\u00e9sactiver certaines ou \u00e0 changer leur criticit\u00e9 pour ma d\u00e9mo.<\/p>\n<h2>Cr\u00e9er un nouveau Quality Profile<\/h2>\n<p>Je vais donc cr\u00e9er un nouveau Quality Profile dans lequel je vais activer toutes les r\u00e8gles existantes. Je pourrai ensuite relancer une analyse et voir dans le tableau de bord si j\u2019obtiens des r\u00e9sultats int\u00e9ressants.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopy.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1480\" alt=\"PLSQLProfileCopy\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopy.jpg\" width=\"222\" height=\"64\" \/><\/a>Afin de cr\u00e9er un nouveau profile, il me faut tout d\u2019abord me connecter en \u2018Admin\u2019, de telle sorte que lorsque je reviens dans la page \u2018Quality Profile\u2019, de nouveaux menus sont apparus qui me permettent de copier le profile par d\u00e9faut, en cliquant sur le menu \u2018Copy\u2019.<\/p>\n<p>Un bo\u00ecte de dialogue appara\u00eet qui me permet de sp\u00e9cifier un nom pour ce nouveau Profile.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopyName.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1482\" alt=\"PLSQLProfileCopyName\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopyName.jpg\" width=\"543\" height=\"130\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopyName.jpg 543w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileCopyName-300x71.jpg 300w\" sizes=\"(max-width: 543px) 100vw, 543px\" \/><\/a><\/p>\n<p>Une fois celui-ci cr\u00e9\u00e9, il me suffit d&rsquo;entrer dans sa page de Profile et rechercher toutes les r\u00e9gles inactives, comme nous l\u2019avons d\u00e9j\u00e0 fait pr\u00e9c\u00e9demment.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileActivateAll.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1483\" alt=\"PLSQLProfileActivateAll\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileActivateAll.jpg\" width=\"223\" height=\"85\" \/><\/a>Et une fois les 58 r\u00e8gles affich\u00e9es, je peux toutes les activer gr\u00e2ce au \u2018Bulk Change\u2019 qui se trouve dans la partie sup\u00e9rieure droite de l\u2019\u00e9cran. Il suffit simplement de s\u00e9lectionner \u2018Activate all\u2019 pour que toutes les r\u00e9gles pr\u00e9sentes dans l\u2019\u00e9cran soient activ\u00e9es.<\/p>\n<p>A la suite de cette op\u00e9ration, SonarQube m\u2019indique que 132 r\u00e8gles sont maintenant disponibles dans mon nouveau profile : les 74 originellement actives et et les 58 que nous venons d&rsquo;activer. Le compte est bon.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/TabProjects.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1484\" alt=\"TabProjects\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/TabProjects.jpg\" width=\"254\" height=\"43\" \/><\/a>Il me reste une op\u00e9ration \u00e0 r\u00e9aliser : affecter ce profile \u00e0 mon analyse PL\/SQL. Pour cela, je vais aller dans l\u2019onglet &lsquo;Projects&rsquo; et rechercher le projet correspondant \u00e0 cette analyse. Il suffit de rentrer au minimum 2 caract\u00e8res pour que SonarQube affiche les projets comportant ces 2 caract\u00e8res et nous permette de choisir celui pour lequel nous souhaitons utiliser le nouveau profile.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileProjects.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1485\" alt=\"PLSQLProfileProjects\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileProjects.jpg\" width=\"490\" height=\"165\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileProjects.jpg 490w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQLProfileProjects-300x101.jpg 300w\" sizes=\"(max-width: 490px) 100vw, 490px\" \/><\/a><\/p>\n<p>Une fois ceci r\u00e9alis\u00e9, je vais me d\u00e9loguer comme Admin et aller dans Jenkins lancer \u00e0 nouveau mon analyse PL\/SQL.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQL_IssuesDrillDown2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1488\" alt=\"PLSQL_IssuesDrillDown2\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/01\/PLSQL_IssuesDrillDown2.jpg\" width=\"215\" height=\"124\" \/><\/a>La page &lsquo;Issues drilldown&rsquo; affiche maintenant de nouveaux d\u00e9fauts &lsquo;Critical&rsquo; et une augmentation tr\u00e8s importante du nombre de violations.<\/p>\n<p>Nous allons ainsi pouvoir examiner toutes les r\u00e8gles PL\/SQL disponibles dans SonarQube, et personnaliser notre nouveau Quality Profile.<\/p>\n<p>Le prochain post sera consacr\u00e9 aux r\u00e8gles les plus importantes : les &lsquo;Blockers&rsquo; et les &lsquo;Critical&rsquo;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s avoir configur\u00e9 notre premi\u00e8re analyse PL\/SQL depuis Jenkins, nous avons lanc\u00e9 celle-ci, et nous pouvons donc maintenant regarder les r\u00e9sultats dans le tableau de bord SonarQube. Ceci sera l\u2019occasion d\u2019examiner et d\u2019expliciter dans nos prochains posts, les r\u00e8gles propos\u00e9es par SonarQube en mati\u00e8re de bonnes pratiques de programmation PL\/SQL. Mais tout d&rsquo;abord, regardons ce [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-1463","post","type-post","status-publish","format-standard","hentry","category-sonarqube-plsql"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/1463"}],"collection":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/comments?post=1463"}],"version-history":[{"count":24,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/1463\/revisions"}],"predecessor-version":[{"id":1466,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/1463\/revisions\/1466"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/media?parent=1463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/categories?post=1463"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/tags?post=1463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}