Gestion de la qualité avec Sonar

Introduction

Sonar est un logiciel libre permettant de mesurer la qualité du code source sur les projets de développement java. Sonar est distribué selon les termes de la licence LGPL v3.

Site Officiel

Vous trouverez le site officiel de Sonar à l’adresse suivante : http://www.sonarsource.org/.

Wikipédia

Je vous invite à consulter les articles français et anglais de la célèbre encyclopédie Wikipédia à propos de Sonar.

Tutoriel

Nous verrons ici comment installer et utiliser Sonar. L’utilisation de sonar engendre l’installation d’une base de données, de la partie server de sonar et de la partie cliente.

Objectif

L’analyse du projet se fera avec Sonar par l’utilisant Maven.

Installation de la partie serveur

Ajoutez la source de mise à jour :

sudo sh -cecho deb http://downloads.sourceforge.net/project/sonar-pkg/deb binary/ > /etc/apt/sources.list’

Rechargez la liste des paquets :

sudo apt-get update

Installez le paquet :

sudo apt-get install sonar

Pour configurer cette adresse il faut éditer la configuration, dans notre cas nous allons modifier le port pour ne pas avoir de conflit avec le serveur d’application, par exemple :

sudo gedit /opt/sonar/conf/sonar.properties &

Modifiez les lignes suivantes :

#sonar.web.host:                           0.0.0.0
#sonar.web.port:                           9000
#sonar.web.context:                        /

par :

sonar.web.host:                           0.0.0.0
sonar.web.port:                           7223
sonar.web.context:                        /

Redémarrez le serveur sonar avec :

sudo /etc/init.d/sonar start

Copiez l’url suivante dans le navigateur :

http://localhost:7223/

Il y a un délais de quelques secondes avant la disponibilité du serveur sonar.

Installation de la base de données

Passez à l’utilisateur postgres :

sudo -s -u postgres

Créez l’utilisateur (avec le mot de passe : sonar):

createuser -P sonar

Créez la base de données avec pour propriétaire sonar:

createdb sonar -O sonar

Pour la configuration relative à la base de données, ouvrez le fichier /opt/sonar/conf/sonar.properties :

sudo gedit /opt/sonar/conf/sonar.properties &

Remplacez :

#----- PostgreSQL 8.x/9.x
# Comment the embedded database and uncomment the following property to use PostgreSQL
#sonar.jdbc.url:                            jdbc:postgresql://localhost/sonar
 
# Optional properties
#sonar.jdbc.driverClassName:                org.postgresql.Driver
 
# Uncomment the following property if the PostgreSQL account has permissions to access multiple schemas,
# for example sonar schemas with different versions. In that case, use the same property during project analysis
# (-Dsonar.jdbc.schema=)
#sonar.jdbc.schema:                         public

par :

#----- PostgreSQL 8.x/9.x
# Comment the embedded database and uncomment the following property to use PostgreSQL
sonar.jdbc.url:                            jdbc:postgresql://127.0.0.1:5432/sonar
 
# Optional properties
sonar.jdbc.driverClassName:          org.postgresql.Driver
 
# Uncomment the following property if the PostgreSQL account has permissions to access multiple schemas,
# for example sonar schemas with different versions. In that case, use the same property during project analysis
# (-Dsonar.jdbc.schema=)
#sonar.jdbc.schema:                         public

Enregistrez et fermez.

Installation et configuration de sonar runner

Téléchargez l’archive ici

Placez l’archive dans /opt/ :

sudo cp [chemin jusqu'à l'archive]/Téléchargements/sonar-runner-2.0.zip /opt/

Décompressez la :

sudo unzip /opt/sonar-runner-2.0.zip -d /opt/

Ouvrez le fichier de configuration de sonar-runner :

gedit /opt/sonar-runner-2.0/conf/sonar-runner.properties

Dans le fichier indiquez:

  • Le serveur de sonar :
    #----- Default Sonar server
    sonar.host.url=http://localhost:7223
  • Les informations sur la base de données :
    #----- PostgreSQL
    sonar.jdbc.url=jdbc:postgresql://127.0.0.1:5432/sonar
    sonar.jdbc.driver=org.postgresql.Driver
  • et :
    #----- Global database settings
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar
  • Le répertoire du projet (dans notre cas contact-manager-core-implementations) :
    #----- Default directory layout
    sonar.sources=/home/[votre chemin jusqu'au workspace]/sample_workspace/contact-manager-core-implementations/src/main/java
    sonar.tests=/home/[votre chemin jusqu'au workspace]/sample_workspace/contact-manager-core-implementations/src/test/java
    #sonar.binaries=target/classes
  • L’encodage :
    #----- Default source code encoding
    sonar.sourceEncoding=UTF-8

Enregistrez le fichier.

Créez la variable d’environnement suivante :

export SONAR_RUNNER_HOME=/opt/sonar-runner-2.0

Analyser avec Sonar Runer

A la racine du projet créez un fichier sonar-project.properties

# required metadata
sonar.projectKey=org.scub.foundation.contact.manager.core
sonar.projectName=contact-manager-core-implementations
sonar.projectVersion=1.0
 
# path to source directories (required)
sonar.sources=src/main/java
 
# The value of the property must be the key of the language.
sonar.language=java

Placez vous à la racine de votre projet

cd /home/<em>[votre chemin jusqu'au workspace]</em>/sample_workspace/contact-manager-core-implementations

Lancez l’analyse avec sonar-runner

sudo /opt/sonarRunner/bin/sonar-runner

Vous pouvez ensuite observer le rapport sur la qualité du code