{"id":1415,"date":"2013-12-22T09:17:16","date_gmt":"2013-12-22T08:17:16","guid":{"rendered":"http:\/\/qualilogy.com\/fr\/?p=1415"},"modified":"2013-12-22T17:07:49","modified_gmt":"2013-12-22T16:07:49","slug":"analyse-plsql-sonarqube-organisation","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/fr\/analyse-plsql-sonarqube-organisation\/","title":{"rendered":"Analyse PL\/SQL avec SonarQube &#8211; Organisation"},"content":{"rendered":"<p><a href=\"http:\/\/500px.com\/Vicken\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1416\" alt=\"SonarQubePLSQL1\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/12\/SonarQubePLSQL1.jpg\" width=\"380\" height=\"181\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/12\/SonarQubePLSQL1.jpg 380w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/12\/SonarQubePLSQL1-300x142.jpg 300w\" sizes=\"(max-width: 380px) 100vw, 380px\" \/><\/a>Maintenant que j\u2019ai mis \u00e0 jour mon environnement d\u2019analyse de code au complet, avec les <a href=\"http:\/\/qualilogy.com\/fr\/sonarqube-upgrade-4-0\/\" target=\"_blank\">upgrades de SonarQube<\/a>, du <a href=\"http:\/\/qualilogy.com\/fr\/upgrade-sonarqube-runner-jenkins\/\" target=\"_blank\">SonarQube-Runner et de Jenkins<\/a> dans leurs derni\u00e8res versions, le moment est venu de mettre \u00e0 jour \u00e9galement mon repository d\u2019applications et mes d\u00e9mos. <!--more--><\/p>\n<p>En tant que Consultant Qualit\u00e9, j\u2019ai toutes sortes de \u2018projets\u2019, c\u2019est-\u00e0-dire d\u2019analyses de code source, r\u00e9pondant \u00e0 divers types de processus Qualit\u00e9 (Continuous Integration, Quality Gate, Quality Assessment, etc.) et ce pour tous types de technologies. Rappelons que SonarQube n\u2019est pas juste un outil Open Source qui analyse du Java ou des languages de programmation objet : il est aussi tr\u00e8s utile pour des applications Legacy Cobol, SAP-ABAP, client-serveur, etc.<\/p>\n<p>J\u2019ai donc d\u00e9cid\u00e9 de mettre \u00e0 profit la relative baisse d\u2019activit\u00e9 de fin d\u2019ann\u00e9e pour faire le m\u00e9nage dans mes d\u00e9mos \u2026 en commen\u00e7ant par le PL\/SQL. Au fil du temps, j\u2019ai amass\u00e9 toutes sortes de scripts de cr\u00e9ation de base de donn\u00e9es, ou de programmes de traitement de bases de donn\u00e9es, et nous allons en profiter pour :<\/p>\n<ul>\n<li>Rappeler comment, en tant que Consultant Qualit\u00e9, j\u2019organise mon environnement d\u2019analyse de code.<\/li>\n<li>Param\u00e9trer et effectuer une analyse PL\/SQL avec SonarQube.<\/li>\n<li>Voir comment personnaliser le profile de r\u00e8gles PL\/SQL fourni par SonarQube.<\/li>\n<li>Examiner plus en d\u00e9tail les diff\u00e8rentes r\u00e8gles et m\u00e9triques de bases de donn\u00e9es propos\u00e9es par SonarQube, et comment les utiliser.<\/li>\n<\/ul>\n<p>Je ne sais pas encore combien de posts seront n\u00e9cessaires pour couvrir ce th\u00e8me \u2018SonarQube et PL\/SQL\u2019, j\u2019ai tendance \u00e0 les \u00e9crire au fur et \u00e0 mesure de mes p\u00e9r\u00e9nigrations dans l\u2019outil et j\u2019aime laisser un peu de marge \u00e0 l\u2019improvisation. De plus, il me faudra probablement interrompre cette s\u00e9rie pour un post consacr\u00e9 aux v\u0153ux de nouvelle ann\u00e9e (et des f\u00eates en famille), donc il est probable que cela nous emm\u00e8nera jusqu\u2019en Janvier.<\/p>\n<h2>Organisation de l\u2019environnement d\u2019analyse<\/h2>\n<p>Tout d\u2019abord, quelques rappels sur la mani\u00e8re dont j\u2019ai organis\u00e9 mon environnement d\u2019analyse de code source. Il n\u2019est \u00e9videmment pas absolument indispensable de proc\u00e9der de m\u00eame, mais je vous recommande n\u00e9anmoins d\u2019adopter un minimum de r\u00e8gles d\u2019organisation.<\/p>\n<p>Notamment si vous travaillez en \u00e9quipe. Vous n\u2019avez pas envie qu\u2019on vous appelle pendant les vacances parce que personne n\u2019est capable de reprendre cet audit de code que vous n\u2019avez pas pu terminer \u00e0 cause du retard pris par le client pour livrer \u00e0 temps le code de son application. Et le pauvre malheureux qui doit continuer cette t\u00e2che ne sait pas comment vous avez l\u2019habitude de travailler, comment vous configurer une analyse, si vous utilisez des r\u00e8gles ou m\u00e9triques particuli\u00e8res, etc.<\/p>\n<p>Et m\u00eame si vous travaillez seul, comme moi en freelance par exemple, il reste souhaitable de toujours suivre les m\u00eames processus, au risque de ne pas vous rappeler o\u00fa diable vous avez gard\u00e9 ce fichier de configuration de cette analyse, men\u00e9e il y a 2 ans, et que vous aimeriez retrouver maintenant.<\/p>\n<p>Enfin bref, voici comment je travaille, sur mon portable :<\/p>\n<ul>\n<li>Un r\u00e9pertoire d\u00e9di\u00e9 \u00e0 mon environnement d\u2019analyse \u2018C:\\SRC\u2019.<\/li>\n<li>Divers sous-r\u00e9pertoires organis\u00e9s essentiellement par technos (J2EE, ABAP, Cobol, Repository des autres technos, \u2026) et surtour un dossier consacr\u00e9 exclusivement \u00e0 mes d\u00e9mos : \u2018C:\\SRC\\Demo\u2019.<\/li>\n<li>Au sein de ce dossier, un sous-r\u00e9pertoire par technologie :\u2018C:\\SRC\\Demo\\J2EE\u2019, \u2018C:\\SRC\\Demo\\Cobol\u2019,\u00a0 \u2026, \u2018C:\\SRC\\Demo\\PLSQL\u2019 pour notre d\u00e9mo consacr\u00e9 au language de programmation de traitements de base de donn\u00e9es Oracle.<\/li>\n<\/ul>\n<p>Au sein de chaque dossier, j\u2019utiliser 3 sous-r\u00e9pertoires :<\/p>\n<ul>\n<li>\u2018Delivery\u2019 pour stocker les versions d\u2019applications qui me sont livr\u00e9es pour audit.<\/li>\n<li>\u2018Conf\u2019 pour g\u00e9rer tous les fichiers de configuration, documentations du client, documents d\u2019analyse, rapport d\u2019audits, feuilles de calcul, pr\u00e9sentations, etc.<\/li>\n<li>\u2018Source\u2019 pour copier le code \u00e0 analyser.<\/li>\n<\/ul>\n<p>Pourquoi ne pas disposer d\u2019un r\u00e9pertoire unique pour analyser une version ? D\u2019abord parce que je peux avoir plusieurs versions successives \u00e0 analyser. Par exemple, un client souhaite un audit car il n\u2019est pas tr\u00e8s content de son outsourceur et aimerait v\u00e9rifier la qualit\u00e9 du code que celui-ci lui fournit. Nous allons d\u2019abord analyser la version initiale confi\u00e9e pour maintenance \u00e0 cet outsourceur, puis la version finale que celui-ci a retourn\u00e9e au client. En analysant ces deux versions successivement, nous pourrons d\u00e9terminer les diff\u00e9rences \u2013 pour le meilleur ou pour le pire \u2013 en termes de d\u00e9fauts, de complexit\u00e9 et de maintenabilit\u00e9, entre ces deux versions.<\/p>\n<p>Mais surtout, il peut m\u2019arriver de devoir transformer le code livr\u00e9 par le client, pour diff\u00e9rentes raisons :<\/p>\n<ul>\n<li>Un fichier pose un probl\u00e8me au parser qui stoppe l\u2019analyse. Par exemple, la version livr\u00e9e par le client contient un vieux programme, qui n\u2019est plus utilis\u00e9, mais qui ne compile pas non plus.<\/li>\n<li>Je dois r\u00e9organiser le code diff\u00e9remment. Incroyable le nombre d\u2019architectes \u2018Nouvelles-Technologies\u2019 qui ont r\u00e9invent\u00e9 les bonnes pratiques en mati\u00e8re d\u2019organisation de packages et de r\u00e9pertoires.<\/li>\n<li>La livraison contient une foultitude de r\u00e9pertoires .svn qui \u00e9videmment occupent de l\u2019espace disque dur mais aussi ralentissent les analyses.<\/li>\n<\/ul>\n<p>Si vous disposez d\u2019un serveur, je vous recommande d\u2019utiliser un disque dur pour vos softwares et le disque dur le plus performant pour stocker le code source et effectuer vos analyses.<\/p>\n<p>Bien s\u00fbr, si vous travaillez au sein d\u2019une \u00e9quipe de projet, vous disposez certainement d\u2019un outil de gestion de configuration (SCM) et donc votre environnement sera diff\u00e9rent. Retenons simplement que\u00a0 mon r\u00e9pertoire d\u2019analyse de code PL\/SQL sera : &lsquo;C:\\SRC\\Demo\\PLSQL\\Source&rsquo;.<\/p>\n<p>Le prochain post sera consacr\u00e9 \u00e0 la configuration de cette analyse.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Maintenant que j\u2019ai mis \u00e0 jour mon environnement d\u2019analyse de code au complet, avec les upgrades de SonarQube, du SonarQube-Runner et de Jenkins dans leurs derni\u00e8res versions, le moment est venu de mettre \u00e0 jour \u00e9galement mon repository d\u2019applications et mes d\u00e9mos.<\/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-1415","post","type-post","status-publish","format-standard","hentry","category-sonarqube-plsql"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/1415"}],"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=1415"}],"version-history":[{"count":12,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/1415\/revisions"}],"predecessor-version":[{"id":1418,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/1415\/revisions\/1418"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/media?parent=1415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/categories?post=1415"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/tags?post=1415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}