Présentation

Ce tutoriel concerne le logiciel d'analyse de code source : SonarQube.

Dans ce tutoriel, je vous présente :

  • son installation par docker
  • l'analyse d'un code C++

    1. Installation de SonarQube par la méthode Docker
    2. Cette méthode est bien plus rapide car le container docker SonarQube est déjà tout prêt Tout d'abord, il faut installer docker

      apt-get install docker

      Une fois réalisé, il faut chercher l'image docker SonarQube
      docker search sonarqube

      Il existe plusieurs images de SonarQube. J'ai pris l'image officielle. Vous pouvez selon votre convenance, prendre une image différente.
      docker pull sonarqube

      Pour lancer le container, vous tapez cette commande
      docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube

      Au bout de quelques secondes, votre instance SonarQube est disponible dans votre navigateur à l'adresse http://localhost:9000 ou votre_adresse_ip_locale:9000 Pour de logguer à l'interface, tapez admin en login et admin en mot de passe. En regardant les plugins disponibles dans Administration/MarketPlace, on s'aperçoit que le plugin pour analyser le code source C++ est en licence privée. Pour pouvoir analyser le code C++, on va télécharger le plugin sonar-cxx
      wget https://github.com/SonarOpenCommunity/sonar-cxx/releases/download/cxx-1.2.1/sonar-cxx-plugin-1.2.1.1569.jar

      Il faudra en fonction de la version, modifier l'URL du fichier à télécharger Une fois téléchargé, il faut intégré l'analyseur dans le containeur docker
      docker cp sonar-cxx-plugin-1.2.1.1569.jar sonarqube:/opt/sonarqube/extensions/plugins/sonar-cxx-plugin-1.2.1.1569.jar

      puis redémarrer le containeur SonarQube
      docker restart sonarqube

      L'initialisation de SonarQube est assez longue pour la prise en compte du plugin installé. En allant fouiller dans les plugins, on vérifie que sonar-cxx est installé (C++ Community) Pour les prochains démarrage de SonarQube, il suffira de lancer cette commande
      docker start sonarqube

    3. Installation de sonar-scanner et analyse d'un code source C++
    4. Votre logiciel d'analyse est installé mais il faut désormais installer un scanneur de projets Il faut récupérer une archive à cette adresse https://binaries.sonarsource.com/Distribution/sonar-scanner-cli. Nous allons prendre la plus récente :

      wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip

      Code à adapter selon la version de sonar-scanner Lorsqu'il est téléchargé, on le déplace dans le dossier /opt et on extrait l'archive
      mv sonar-scanner-cli-3.3.0.1492-linux.zip /opt && cd /opt

      unzip sonar-scanner-cli-3.3.0.1492-linux.zip

      Puis, il faut modifier le fichier de configuration sonar-scanner.properties de sonar-scanner dans le dossier /opt/sonar-scanner-3.3.0.1492-linux/conf/ Pour cela, il faut supprimer le caractère # de la ligne commençant par sonar.host.url et de paramétrer l'adresse de démarrage de SonarQube. Vous devriez avoir quelque chose comme cela :
      sonar.host.url=192.168.0.5:9000

      ou 192.168.0.5 est l'adresse ip locale de l'ordinateur Maintenant on va faire connaitre au système l'emplacement ou est installé sonar-scanner :
      export PATH=$PATH:/opt/sonar-scanner-3.3.0.1492-linux/bin

      Vous pouvez vérifier que l'emplacement a bien été pris en compte :
      echo $PATH

      Pour vérifier que votre analyseur fonctionne correctement, on va créer un projet dans SonarQube. Vous remplissez les champs et vous conservez le code fourni juste avant la validation de votre nouveau projet Vous créez un fichier se nommant sonar-project.properties dans la racine de votre projet. Vous renseignez ce fichier de cette façon
      sonar.projectKey=Test
      # this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
      sonar.projectNam=Test
      sonar.projectVersion=1.0
      # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
      # This property is optional if sonar.modules is set.
      sonar.sources=.
      # Encoding of the source code. Default is default system encoding
      #sonar.sourceEncoding=UTF-8
      sonar.host.url=http://192.168.0.5:9000
      sonar.login=de16f9f0cf02258b06d02346efacf3bbef889abe

      Vous adaptez les informations du fichier selon les données copiées du code fourni juste avant la validation de votre nouveau projet Vous lancez sonar-scanner dans le dossier racine de votre projet
      sonar-scanner

      Pour voir le résultat de l'analyse, vous retournez dans le logiciel SonarQube et vous cliquez sur "Finish this tutorial" et vous verrez l'analyse du code effectué par sonar-cxx

      Sonarqube