{"id":716,"date":"2013-04-21T09:54:38","date_gmt":"2013-04-21T08:54:38","guid":{"rendered":"http:\/\/qualilogy.com\/fr\/?p=716"},"modified":"2013-09-01T18:36:23","modified_gmt":"2013-09-01T17:36:23","slug":"installer-sonarqube-analyse-avec-sonarqube-runner","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/fr\/installer-sonarqube-analyse-avec-sonarqube-runner\/","title":{"rendered":"Installer SonarQube &#8211; Analyse avec SonarQube Runner"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-718\" alt=\"SonarRunner1\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunner1A.jpg\" width=\"350\" height=\"305\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunner1A.jpg 350w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunner1A-300x261.jpg 300w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/a>Nous avons pr\u00e9c\u00e9demment install\u00e9 le <a title=\"Le portail Sonar\" href=\"http:\/\/qualilogy.com\/fr\/installer-sonar-la-webapp-sonar\/\" target=\"_blank\">portail SonarQube<\/a>\u00a0sous Tomcat, ainsi que le <a title=\"Sonar Runner\" href=\"http:\/\/qualilogy.com\/fr\/installer-sonar-sonar-runner\/\" target=\"_blank\">SonarQube Runner<\/a>, qui va nous permettre de r\u00e9aliser aujourd\u2019hui notre premi\u00e8re analyse.<\/p>\n<p>Dans le dossier d\u2019installation du SonarQube Runner, nous trouvons 3 r\u00e9pertoires :<\/p>\n<ul>\n<li>Un r\u00e9pertoire &lsquo;..\\lib&rsquo; d\u00e9d\u00ed\u00e9 au .jar n\u00e9cessaire \u00e0 l\u2019ex\u00e9cution du SonarQube-Runner.<\/li>\n<li>Un r\u00e9pertoire &lsquo;..\\conf&rsquo; avec le fichier \u2018sonar-runner.properties\u2019 d\u00e9di\u00e9 \u00e0 la connexion \u00e0 SonarQube et \u00e0 notre base de donn\u00e9es.<\/li>\n<li>Un r\u00e9pertoire &lsquo;..\\bin&rsquo; dans lequel se trouve le fichier \u2018sonar-runner.bat`qui nous permet de lancer une analyse.<\/li>\n<\/ul>\n<p>Avant de configurer celle-ci, arr\u00eatons nous un instant afin de r\u00e9fl\u00e9chir \u00e0 l\u2019organisation de notre environnement d\u2019analyse. <!--more--><\/p>\n<h2>Environnement d\u2019analyse<\/h2>\n<p>Lorsque vous installez un serveur d\u2019analyse de code, il est important de bien diff\u00e9rencier les diff\u00e9rents espaces en fonction de leur objet :<\/p>\n<ul>\n<li>L\u2019espace consacr\u00e9 aux diff\u00e9rents logiciels et leurs diff\u00e9rentes versions : Oracle, Java, Tomcat, SonarQube, etc.<\/li>\n<li>L\u2019espace d\u00e9di\u00e9 \u00e0 la livraison et l\u2019installation du code source \u00e0 analyser.<\/li>\n<li>L\u2019espace d\u00e9di\u00e9 \u00e0 l\u2019impl\u00e9mentation des analyses : configuration, backups, customisations, cr\u00e9ation de rapports, extraction de donn\u00e9es, documentation de vos analyses (utile lorsque celles-ci se multiplient ou qu\u2019on doit revenir sur une analyse ancienne ou que notre serveur d\u2019analyse est utilis\u00e9 par diff\u00e9rents op\u00e9rateurs), etc.<\/li>\n<\/ul>\n<p>SonarQube nous permet de sp\u00e9cifier cet espace dans le fichier &lsquo;sonar-runner.bat&rsquo;, avec la variable \u2018PROJECT HOME\u2019.<\/p>\n<p>Nous allons donc rechercher dans ce fichier la ligne suivante :<\/p>\n<p style=\"padding-left: 30px\"><strong>set PROJECT_HOME= %CD%<\/strong><\/p>\n<p>et la modifier de fa\u00e7on \u00e0 indiquer un sous-r\u00e9pertoire \u2018\\Projects\u2019 dans lequel nous placerons les fichiers de configuration de nos analyses. Dans la r\u00e9alit\u00e9, je ne localiserais pas cet espace sous le r\u00e9pertoire du SonarQube Runner, c\u2019est uniquement \u00e0 titre de d\u00e9monstration.<\/p>\n<p>J\u2019ai modifi\u00e9 le fichier \u2018sonar-runner.bat\u2019 pour ins\u00e9rer les 3 lignes suivantes :<\/p>\n<ul>\n<li>Afficher le r\u00e9pertoire \u2018SONAR RUNNER HOME\u2019 du Sonar Runner :<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><strong>echo \u201dSONAR_RUNNER_HOME = %SONAR_RUNNER_HOME%\u201d<\/strong><\/p>\n<ul>\n<li>Sp\u00e9cifier le r\u00e9pertoire d\u2019analyse \u2018PROJECT HOME\u2019 dans un dossier \u2018\\Projects\u2019 que nous cr\u00e9ons sous le r\u00e9pertoire pr\u00e9c\u00e9dent, et l\u2019afficher :<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><strong>set PROJECT_HOME=%SONAR_RUNNER_HOME%\\Projects<\/strong><br \/>\n<strong> echo \u201dPROJECT_HOME = %PROJECT_HOME%\u201d<\/strong><\/p>\n<h2>Configuration de notre premi\u00e8re analyse<\/h2>\n<p>Afin d\u2019effectuer une analyse, le SonarQube Runner se base sur le fichier \u2018sonar-project.properties\u2019 situ\u00e9 dans notre environnement d\u2019analyse : le r\u00e9pertoire \u2018Projects\u2019 cr\u00e9\u00e9 pr\u00e9c\u00e9demment. Notre objectif est d\u2019analyser une application Java localis\u00e9e dans un r\u00e9pertoire \u2018C:\\SRC\\Demo\\J2EE\\Source\\Extranet\\\u2019.<br \/>\nSi vous ne disposez pas de code source, vous pouvez r\u00e9cup\u00e9rer un example de code et sa configuration d\u2019analyse depuis cette page : <a title=\"Page d'exemples Sonar\" href=\"http:\/\/docs.codehaus.org\/display\/SONAR\/Sonar+Project+Examples\" target=\"_blank\">http:\/\/docs.codehaus.org\/display\/SONAR\/Sonar+Project+Examples<\/a>.<\/p>\n<p>Sans entrer dans le d\u00e9tail des param\u00e8tres pour une analyse de code java, nous allons cr\u00e9er le fichier \u2018sonar-project.properties\u2019 avec les attributs suivants :<\/p>\n<ul>\n<li>Tout d\u2019abord, les donn\u00e9es obligatoires : un nom \/ une cl\u00e9 pour cette application, objet de notre premi\u00e8re analyse, ainsi qu\u2019un num\u00e9ro de version :<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><strong># required metadata<\/strong><br \/>\n<strong> sonar.projectKey=EXT<\/strong><br \/>\n<strong> sonar.projectName=Extranet<\/strong><br \/>\n<strong> sonar.projectVersion=1.0<\/strong><\/p>\n<ul>\n<li>Et bien s\u00fbr, l\u2019emplacement des fichiers \u00e0 analyser :<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><strong>sonar.sources=C:\/SRC\/Demo\/J2EE\/Source\/Extranet\/WEB-INF\/src\/<\/strong><\/p>\n<ul>\n<li>Dernier param\u00e8tre : le langage de programmation qui d\u00e9cidera du parser SonarQube pour analyser cette application :<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><strong>#The value of the property must be the key of the language.<\/strong><br \/>\n<strong> sonar.language=java<\/strong><\/p>\n<h2>Packages et classes Java<\/h2>\n<p>Un point \u00e0 pr\u00e9ciser si le langage Java ne vous est pas familier. Les classes Java sont organis\u00e9es en packages, correspondant aux r\u00e9pertoires dans lesquels se trouvent les fichiers .java pour ces classes. Ce package est indiqu\u00e9 sur la premi\u00e8re ligne du fichier java.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/PackageDeclare.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-726\" alt=\"D\u00e9claration de package\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/PackageDeclare.jpg\" width=\"332\" height=\"98\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/PackageDeclare.jpg 332w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/PackageDeclare-300x88.jpg 300w\" sizes=\"(max-width: 332px) 100vw, 332px\" \/><\/a>Dans cet exemple, le fichier \u2018J2EEConnection.java\u2019 se trouve dans le r\u00e9pertoire &lsquo;C:\\SRC\\Demo\\J2EE\\Source\\Extranet\\WEB-INF\\src\\com\\extranet\\common\u2019. Le r\u00e9pertoire source \u2013 encore appel\u00e9 \u2018root\u2019 ou r\u00e9pertoire racine \u2013 \u00e0 indiquer dans notre fichier de configuration d\u2019analyse, est celui imm\u00e9diatement au-dessus de tous les r\u00e9pertoires \/ packages.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/PackageOrg.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-727\" alt=\"Organisation des packages\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/PackageOrg.jpg\" width=\"393\" height=\"147\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/PackageOrg.jpg 393w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/PackageOrg-300x112.jpg 300w\" sizes=\"(max-width: 393px) 100vw, 393px\" \/><\/a><\/p>\n<p>Si vous avez un doute, ouvrez un fichier java de l\u2019application \u00e0 analyser et regardez la premi\u00e8re ligne. Puis recherchez le r\u00e9pertoire \u2018p\u00e8re\u2019 du package : c\u2019est celui que vous devez indiquer dans le fichier de configuration d\u2019analyse du SonarQube Runner.<\/p>\n<p>Normalement, il est mat\u00e9rialis\u00e9 par un r\u00e9pertoire \u2018src\u2019, mais il arrive parfois que cette convention ne soit pas respect\u00e9e, et que les packages soient organis\u00e9s dans diff\u00e9rents dossiers. Dans ce cas, vous devrez sp\u00e9cifier ceux-ci dans le fichier \u2018sonar-project.properties\u2019, en les s\u00e9parant par une virgule, comme dans l\u2019exemple suivant :<\/p>\n<p style=\"padding-left: 30px\"><strong>sources=..\/src1\/,..\/src2\/<\/strong><\/p>\n<h2>Ex\u00e9cution de notre premi\u00e8re analyse<\/h2>\n<p>Dans une fen\u00eatre de commande DOS, nous lan\u00e7ons le fichier sonar-runner.bat.<br \/>\nNous voyons bien s\u2019afficher les 2 variables d\u00e9signant le r\u00e9pertoire du SonarQube Runner et de notre espace &lsquo;Projects&rsquo;, ainsi que le fichier de configuration de notre analyse :<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-729\" alt=\"Ex\u00e9cution Sonar Runner\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec1.jpg\" width=\"684\" height=\"291\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec1.jpg 684w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec1-300x127.jpg 300w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec1-624x265.jpg 624w\" sizes=\"(max-width: 684px) 100vw, 684px\" \/><\/a><\/p>\n<p>Plus loin, nous pouvons voir la mention du nom du projet indiqu\u00e9 dans le fichier sonar-project.properties, ainsi que le r\u00e9pertoire correspondant au param\u00e8tre &lsquo;sonar.sources&rsquo;.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-730\" alt=\"SonarRunnerExec2\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec2.jpg\" width=\"685\" height=\"253\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec2.jpg 685w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec2-300x110.jpg 300w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExec2-624x230.jpg 624w\" sizes=\"(max-width: 685px) 100vw, 685px\" \/><\/a><\/p>\n<p>Comme vu dans le paragraphe pr\u00e9c\u00e9dent, v\u00e9rifiez que vous avez bien indiqu\u00e9 le r\u00e9pertoire racine de tous les packages.<\/p>\n<p>Lorsque vous verrez dans le log d\u2019analyse, le message \u2018ANALYSIS SUCCESFULL\u2019 :<br \/>\n<a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExecFin.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-731\" alt=\"SonarRunnerExecFin\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExecFin.jpg\" width=\"685\" height=\"90\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExecFin.jpg 685w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExecFin-300x39.jpg 300w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerExecFin-624x81.jpg 624w\" sizes=\"(max-width: 685px) 100vw, 685px\" \/><\/a><\/p>\n<p>vous pouvez consulter le portail SonarQube et voir s\u2019afficher les r\u00e9sultats de votre premi\u00e8re analyse.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerResults.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-732\" alt=\"1\u00e8re analyse avec Sonar Runner\" src=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerResults.jpg\" width=\"332\" height=\"136\" srcset=\"http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerResults.jpg 332w, http:\/\/qualilogy.com\/fr\/wp-content\/uploads\/sites\/2\/2013\/04\/SonarRunnerResults-300x122.jpg 300w\" sizes=\"(max-width: 332px) 100vw, 332px\" \/><\/a>Nous retrouvons le nom du projet et sa version tels qu&rsquo;indiqu\u00e9s dans fichier de configuration d&rsquo;analyse \u2018sonar-project.properties\u2019.<\/p>\n<p>Nous n&rsquo;avons vu ici que les param\u00e8tres les plus simples, n\u00e9cessaires \u00e0 l&rsquo;ex\u00e9cution d&rsquo;une analyse. Il en existe bien d&rsquo;autres, que vous pouvez consulter sur cette page <a title=\"Analyzing with Sonar Runner\" href=\"http:\/\/docs.codehaus.org\/display\/SONAR\/Analyzing+with+Sonar+Runner\" target=\"_blank\">Analyzing with SonarQube Runner<\/a>.<\/p>\n<p>Nous avons donc pu mener \u00e0 bien notre premi\u00e8re analyse de la fa\u00e7on la plus simple qui soit, en configurant les quelques param\u00e8tres requis dans le fichier sonar-project.properties, sans n\u00e9cessit\u00e9 de g\u00e9rer des fichiers xml type Maven \u00e0 la syntaxe parfois longue et complexe.<\/p>\n<p>Cette mani\u00e8re de proc\u00e9der pr\u00e9sente cependant un inconv\u00e9nient : consulter les erreurs dans une fen\u00eatre de commande DOS n\u2019est pas des plus convivial, surtout pour des analyses assez longues et\/ou rencontrant beaucoup d\u2019erreurs.<\/p>\n<p>Heureusement, nous allons voir comment rem\u00e9dier \u00e0 cela, gr\u00e2ce \u00e0 notre ami Jenkins.<\/p>\n<p>Prochain article : comment installer et configurer Jenkins. A bient\u00f4t.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nous avons pr\u00e9c\u00e9demment install\u00e9 le portail SonarQube\u00a0sous Tomcat, ainsi que le SonarQube Runner, qui va nous permettre de r\u00e9aliser aujourd\u2019hui notre premi\u00e8re analyse. Dans le dossier d\u2019installation du SonarQube Runner, nous trouvons 3 r\u00e9pertoires : Un r\u00e9pertoire &lsquo;..\\lib&rsquo; d\u00e9d\u00ed\u00e9 au .jar n\u00e9cessaire \u00e0 l\u2019ex\u00e9cution du SonarQube-Runner. Un r\u00e9pertoire &lsquo;..\\conf&rsquo; avec le fichier \u2018sonar-runner.properties\u2019 d\u00e9di\u00e9 \u00e0 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-716","post","type-post","status-publish","format-standard","hentry","category-sonar-installation"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/716"}],"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=716"}],"version-history":[{"count":24,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/716\/revisions"}],"predecessor-version":[{"id":721,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/716\/revisions\/721"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/media?parent=716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/categories?post=716"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/tags?post=716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}