Logo Spiria

Sonar ou Comment contrôler la qualité de vos projets

1 mars 2016.
Sonar ? Qu’est-ce que c’est ? Sonar est un logiciel de lint de la sphère Java. Depuis plusieurs années, il existe des modules d’extension pour les langages de programmation les plus communs (par exemple, C++, C#, JavaScript ou Swift). Il est maintenant possible d’utiliser ce logiciel pour effectuer la vérification du code de ces modules.

Sonar ? Qu’est-ce que c’est ?

Sonar est un logiciel de lint de la sphère Java. Depuis plusieurs années, il existe des modules d’extension pour les langages de programmation les plus communs (par exemple, C++, C#, JavaScript ou Swift). Il est maintenant possible d’utiliser ce logiciel pour effectuer la vérification du code de ces modules.

Le principal objectif de Sonar est de vous donner de l’information précise sur les dettes techniques et la santé de votre projet, en posant quelques règles et en fixant la vitesse moyenne à laquelle votre développement devrait évoluer. Grâce à cette information, vous pourrez établir de bonnes pratiques de codage et vous éviter quelques problèmes futurs. Sonar est une application web qui s’exécute sur un serveur propre, lequel est déployé pendant l’installation. Voici la manière dont le tableau de bord s’affiche :

Sonar Dashboard

Comment l’installer ?

Prérequis

Vous devez d’abord obtenir la dernière version. Puis, il vous faudra un module d’exécution d’une base de données comme MySQL, par exemple.

Installation

Décompressez le fichier dans n’importe quel dossier et modifiez le fichier “sonar.properties”, situé dans le sous-dossier “conf”.

Selon votre choix de base de données, retirez le commentaire visant la ligne pertinente et assurez-vous que votre instance est correctement ciblée. Par exemple, pour les utilisateurs de MySQL, vous chercherez la ligne 33 (la version à jour de SonarQube lors de la publication de cet article est la 5.1.2.), vous devriez y trouver ceci :

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

Par la suite, démarrez le serveur qui se trouve dans le sous-dossier “bin”. Il y a un sous-dossier par système d’exploitation compatible, alors choisissez celui qui correspond à votre environnement et démarrez-le. Par exemple, si votre système d’exploitation est Windows 10 64 bits, ouvrez le sous-dossier “windows-x86-64”. Puis, démarrez le fichier de lot “StartSonar.bat” si vous souhaitez lancer le tout en mode console ou “InstallNTService.bat” pour établir le service.

Indépendamment de la manière dont le serveur est mis en place, il peut y avoir un délai de quelques minutes avant que Sonar ne soit prêt à démarrer. En vous référant aux exemples précédents, vous devriez obtenir ces lignes de code :

decorative

Le serveur est prêt quand la ligne “YYYY.MM.DD HH:MM:SS INFO app[o.s.p.m.Monitor] Process[web] is up” apparaît. Le tableau de bord est accessible grâce à votre navigateur web à l’adresse : http://localhost:9000/.

Maintenant, vous devez rassembler tous les modules d’extension pour votre langage. Tel qu’expliqué ci-haut, ils se trouvent ici. Téléchargez-les dans votre dossier “sonarqube-x.x.x\extensions\plugins”.

Comment le démarrer ?

Pour un projet Android utilisant ANT

Modifiez le fichier “build.xml” de votre projet pour inclure ce qui suit : “xmlns:sonar="antlib:org.sonar.ant”. Par exemple (pour un projet nommé MyAndroidProject) :

Juste après l’étiquette du projet, copiez-collez les lignes suivantes :















    
        
        
    
    
    

Portez une attention particulière aux propriétés qui se retrouvent dans ces lignes de code, celle qui contient votre connexion JDBC devra correspondre avec les paramètres de votre environnement. Vous pouvez changer le titre du projet affiché dans la webapp de Sonar en changeant la valeur propriétaire de “sonar.projectName”.
Une fois fait, vous pouvez lancer votre analyse avec ANT en invoquant la tâche : “ant Sonar”.

Pour un projet Javascript utilisant le “runner” Sonar

Pour un projet JavaScript, créer un fichier s’appelant “sonar-project.properties” à la racine de votre projet. Ce fichier doit contenir les lignes qui suivent :

# Required metadata
sonar.projectKey=org.codehaus.sonar:javascript-sonar-runner
sonar.projectName=JavaScript Project analyzed with the SonarQube Runner
sonar.projectVersion=1.0
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

# Comma-separated paths to directories with sources (required)
sonar.sources=js

# Language
sonar.language=js

# Encoding of sources files
sonar.sourceEncoding=UTF-8

Une fois de plus, la valeur JDBC doit être changée et vous pouvez spécifier le nom de votre projet. Pour commencer l’analyse, ouvrez une console dans ce fichier et tapez “sonar-runner”.

Pour un projet en C# utilisant l’exécutant MSBuild.SonarQube

Assurez-vous de télécharger le runner MsBuild de SonarQube et ajoutez-le aux variables de votre environnement.

Ouvrez une console à la racine de votre projet et entrez “MSBuild.SonarQube.Runner.exe begin /k:""MyCSharpProjectKey"" /n:""MyCSharpProjectName"" /v:""1.0"" /d:sonar.verbose=true”.

Après quelques secondes vous devriez être de retour à CMD. Vous pouvez maintenant créer votre projet en utilisant MsBuild.

Une fois le projet réalisé, vous devrez publier le résultat sur votre serveur/webapp Sonar en entrant la commande “MsBuild.SonarQube.Runner.exe end”.

Qu’est-ce que l’évaluation Sqale?

L’évaluation Sqale est plus ou moins une représentation de la “santé” de votre code. Sur une échelle de “A” à “E”, où “A” est la meilleure cote. Cette évaluation vous aide à déterminer la solution optimale entre le remaniement de votre code ou la réécriture pure et simple. Évidemment, si votre cote est de “E”, il est préférable de recommencer le projet plutôt que de tenter d’en compenser la dette technique.

Vous trouverez davantage de détails à ce sujet sur Wikipedia.

Conclusion

SonarQube fournit un outil complet d’évaluation de la qualité et peut même gérer les résultats de votre couverture de code (voir ici pour plus d’informations). Il est une bonne idée de faire une habitude de cette évaluation; vous améliorerez non seulement la qualité de votre code, mais également vos pratiques de programmation. Ce contrôle de la qualité pourrait éventuellement devenir un argument de vente ou, à tout le moins, un moyen de garantir la qualité de votre travail à votre clientèle.