SonarQube
1 juin 2019

SonarQube, un outil d’analyse de code source surpuissant

Par Jean-Marc Amon

Autrefois appelé Sonar, SonarQube est un logiciel libre, sous licence GNU LGPL, qui sert à analyser et mesurer continuellement la qualité du code source. Il peut analyser plus de vingt-cinq langages tels que JAVA, Objective-C, C#, PHP et tant d’autres. Pendant l’analyse, SonarQube permet de:

  • Identifier les duplications des codes
  • Mesurer le niveau de documentation
  • Montrer le respect des règles de programmation
  • Détecter les bugs potentiels
  • Evaluer la couverture de code par des tests unitaires
  • Analyser la répartition de la complexité
  • Analyser les designs et l’architecture

L’analyse avec SonarQube peut être entièrement automatisée en l’intégrant dans Maven, Ant, Gradle ou d’autres serveurs d’intégration continue tels que Gitlab CI.

SonarQube est extensible. En effet, on peut augmenter ses fonctionnalités (ajout de règles de programmation, ajout d’un nouveau langage, …) en installant des plugins

SonarQube

Avantages de SonarQube

SonarQube est une application web Java qui repose sur une base de données (par défaut H2, dans notre cas, nous utiliserons une base PostGreSQL). Les resultats de l’analyse sont stockés dans la base de données, ce qui permet de suivre dans le temps l’évolution de la qualité du projet. La plateforme SonarQube est constituée de plusieurs composants :

  • un exécuteur qui lance les outils d’anlause de code sources externes et internes
  • une soixantaine de plugins étendent SonarQub : support d’autres langages(PHP) métriques supplémentaires(couplage avec jDepend), utilisation d’analyseurs externes (PMD, FindBugs, … ;
  • Un serveur qui :
    • agrège les résultats des analyses et les enregistre dans la base ;
    • permet aux dévéloppeurs de consulter les resultats des analyses des projets depuis un serveur web(tableaux de bords) ;
    • gère les recherches faites depuis l’interface web(Elasticsearch)
  • Une base de données pour stocker :
    • les réglages de configuration ;
    • l’historique des analyses des projets surveillés

Il est possible d’automatiser l’analyse avec un serveur d’intégration continue comme nous allons le faire avec Gitlab CI.

SonarQube permet l’inspection de code en continu(intégration dans les IDE, vérification de la qualité depuis la dernière version de la dernière analyse, notifications par email, ce qui permet de détecter les problèmes dès leur introduction dans le code avant que le coût de rémédiation soit elevé.

Architecture

Pour utiliser et exploiter une solution technoloqigue telle que SonarQube, il est préférale de connaître son architecture. L’architecture de SonarQube est composée de 4 éléments majeurs :

  • La partie Serveur qui démarre 2 principaux processus :
    1. Le serveur Web pour les développeurs, qui leur permet de parcourir les snapshots des resultats et configurer l’instance du SonarQube
    2. Le serveur de recherche basé sur Elasticsearch qui permet de sauvearder les recherches à partir de l’interface utilisateur
  • La base de données SonarQube qui permet de stocker :
    1. La configuration de l’instance SonarQube tels que la sécurité, les paramètres des plugins,
    2. Les resultats des analyses, les vues,
  • Les plugins installés sur le serveur qui contiennent entre autres les types de langages, l’intégration ou encore l’authentification
  • Et enfin, les scanners qui se chargent de l’analyse des codes proprement dit.

Pour ne faire trop long, nous parlerons dans un prochain billet des scanners.

Sources : https://www.sonarqube.org/