SonarQube - Installation & Utilisation
SonarQube (anciennement Sonar) est un logiciel libre distribué sous licence LGPL v3 permettant de mesurer la qualité d'un code source, en continu.
Son analyse s'oriente sur 7 axes distincts :
SonarQube supporte plus de 25 langages comme : Java, C/C++, C#, PHP, Flex, Groovy, JavaScript, Python, PL/SQL, COBOL, etc
Il permet de créer des compte rendus sur :
- identification des duplications de code
- mesure du niveau de documentation
- respect des règles de programmation
- détection des bugs potentiels
- évaluation de la couverture de code par les tests unitaires
- analyse de la répartition de la complexité
- analyse du design et de l'architecture d'une application
Nous allons voir dans cet article comment installer un tel outil sur une Debian Wheezy et dans un deuxième temps comment utiliser SonarQube pour analyser ses propres projets.
Installation
Pour l'installation de SonarQube un seul prérequis est nécessaire, à savoir l'installation d'un JRE 6 (minimum) sur votre système. Cet article se base sur la version 3.7.3 de SonarQube.
- Prérequis
Sous Debian Wheezy, l'installation du JRE apportera les dépendances suivantes :
- icedtea-7-jre-jamvm
- openjdk-7-jre-headless
- openjdk-7-jre-lib
$ sudo apt-get update $ sudo apt-get install openjdj-7-jre
Une fois le JRE installé il vous faudra télécharger SonarQube. Pour se faire il vous faudra récupérer deux archives :
- SonarQube 3.7.3 : http://dist.sonar.codehaus.org/sonar-3.7.3.zip
- SonarQube runner 2.3 : http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.3/sonar-runner-dist-2.3.zip
Pour mirroring, ces archives sont présentes sur ce site :
J'ai aussi rajouté l'archive d'exemple proposé par Sonar.
- Décompression des archives
une fois les archives téléchargées, nous allons les installer dans un dossier spécifique : /opt (libre à vous de le changer)
$ sudo mkdir /opt (optionnel)
$ sudo cp sonar-3.7.3.zip sonar-runner-dist-2.3.zip /opt
$ cd /opt
$ sudo unzip sonar-3.7.3.zip
$ sudo unzip sonar-runner-dist-2.3.zip
Le dossier /opt contient à présent deux dossiers sonar-3.7.3 et sonar-runner-dist-2.3
Vous pouvez à présent effacer les archives zip présentent dans /opt.
$ sudo rm sonarqube-3.7.3.zip sonar-runner-dist-2.3.zip
Utilisation - Première analyse
Une fois SonarQube installé nous allons pouvoir lancer notre première analyse sur un projet, dans notre exemple nous avons prit un projet Java, tout simple, sans l'utilisation de Maven, par exemple, qui impose une autre approche. Pour se faire nous avons besoin d'avoir les sources, généralement ces fichiers sont dans le dossier src de votre projet.
Remarque : Si pour les besoins du test, vous n'avez pas de source disponible, vous pouvez toujours prendre les projets d'exemple présents dans l'archive d'exemple.
Avant de lancer l'analyse, nous allons créer dans le dossier de votre projet, un fichier sonar-project.properties permettant de paramètrer SonarQube, ce fichier pourra être modifié selon vos besoins, mais il devra au moins contenir une configuration basique, comme la configuration suivante.
Vous pouvez retrouver plus d'information sur la configuration de ce fichier ici.
Prenons un fichier de configuration tout simple :
# Required metadata sonar.projectKey=java-sonar-simple sonar.projectName=Simple Java project analyzed with the SonarQube Runner sonar.projectVersion=1.0 # Comma-separated paths to directories with sources (required) sonar.sources=src # Language sonar.language=java # Encoding of the source files sonar.sourceEncoding=UTF-8
Cette configuration minimale indique :
- Les propriétés de notre projet que l'on retrouvera sur le tableau de bord Sonar
- Où se trouve les sources de notre projet (par rapport au dossier courant, à savoir le dossier de notre projet)
- Quel type de langage utilise notre projet, dans notre cas c'est un projet Java
- Le support UTF-8.
- Démarrage de SonarQube
$ cd /opt/sonar-3.7.3/bin/linux-x86-32 (choisir le dossier en fonction de votre architecture) $ sudo ./sonar.sh start
Si tout se passe bien vous devriez avoir la trace suivante :
$ Starting sonar... $ Sonar started.
Une fois sonar démarré, nous allons procéder à l'analyse de notre projet d'exemple.
$ cd <dossier_projet> (faire un cd dans le dossier contenant votre projet, dossier parent au dossier src, dossier contenant le .properties)
$ /opt/sonar-runner-2.3/bin/sonar-runner
L'analyse peut prendre quelques minutes selon la taille de votre projet.
Une fois l'analyse complète, le script vous indique l'URL à laquelle vous pouvez consulter le résultat d'analyse.
Dans notre exemple : http://localhost:9000/dashboard/index/java-sonar-simple
Une fois la page chargée vous pouvez voir les résultats d'analyse comme le montre le tableau de bord suivant :
Le tableau de bord présente via des widgets (personnalisable) un ensemble d'information :
- nombre de ligne de code de votre projet,
- le nombre de problème soulevé selon leur criticité
- la complexité de certaines méthodes, classes, ...
- le code dupliqué
- etc
Toutes ces informations sont étroitement liées au type de profil utilisé, par défaut, sonar-way. Le résultat d'analyse pourra être grandement changé, si vous ajoutez des contraintes supplémentaires, comme par exemple des règles de codage spécifique etc.
Vous pouvez personnaliser Sonar via ses pages d'administration, via le compte administrator (par défaut, login : admin, mot de passe : admin).
En espérant que cette petite et brève présentation de SonarQube vous aidera et que surtout vous permettra de mieux gérer vos différents projets.
L'utilisation de ce type d'outil devient une obligation dès lors que les projets informatiques se complexifie.
En savoir plus ...
- Sonarqube Administration Guide
- Sonarqube User Guide
- Contrôler la qualité de ses projets avec Sonar (developpez.com)
- Tableau des règles Checkstyle et PMD (fr)
- Règles Checkstyle
- Règles PMD
- Règles FindBugs