SonarQube est une plateforme open-source pour l'analyse continue de la qualité du code. Elle permet de détecter les bugs, les vulnérabilités de sécurité et les problèmes de code technique dans les projets logiciels. SonarQube est particulièrement utile pour les équipes de développement qui souhaitent améliorer la qualité et la sécurité de leur code en intégrant des vérifications de qualité dans leur processus de développement.

Présentation de SonarQube

Qu'est-ce que SonarQube ?

SonarQube est un outil de qualité de code qui vous permet de :

  • Analyser le code : Détecter les bugs, les vulnérabilités de sécurité et les problèmes de code technique.
  • Suivre les métriques de qualité : Mesurer la couverture de code, la complexité cyclomatique, la duplication de code, etc.
  • Générer des rapports détaillés : Produire des rapports détaillés sur les problèmes de qualité et de sécurité.
  • Intégrer dans les pipelines CI/CD : Automatiser les vérifications de qualité dans le processus de développement.

Installation de SonarQube

Pour installer SonarQube, vous pouvez suivre les instructions spécifiques à votre système d'exploitation. Voici un exemple d'installation sur un système Linux :

Installation sur Linux

  • Télécharger SonarQube :

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.3.0.51895.zip

  • Décompresser l'archive :

unzip sonarqube-9.3.0.51895.zip

  • Accéder au répertoire SonarQube :

cd sonarqube-9.3.0.51895/bin/linux-x86-64

  • Démarrer SonarQube :

./sonar.sh start

  • Accéder à l'interface web de SonarQube :

Ouvrez un navigateur web et accédez à http://localhost:9000. Connectez-vous avec les identifiants par défaut (utilisateur : admin, mot de passe : admin).

Exemples de Ligne de Commande

Voici quelques exemples de commandes avancées pour utiliser SonarQube.

Démarrer SonarQube

Pour démarrer SonarQube :

./sonar.sh start

Arrêter SonarQube

Pour arrêter SonarQube :

./sonar.sh stop

Analyser un Projet Maven

Pour analyser un projet Maven avec SonarQube, vous pouvez utiliser le plugin SonarQube pour Maven. Ajoutez le plugin dans votre fichier pom.xml :

<properties>
    <sonar.projectKey>my-project</sonar.projectKey>
    <sonar.host.url>http://localhost:9000</sonar.host.url>
    <sonar.login>your-sonar-token</sonar.login>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>3.9.1.2184</version>
        </plugin>
    </plugins>
</build>

 

Ensuite, exécutez la commande Maven pour analyser le projet :

mvn clean verify sonar:sonar

Analyser un Projet Gradle

Pour analyser un projet Gradle avec SonarQube, vous pouvez utiliser le plugin SonarQube pour Gradle. Ajoutez le plugin dans votre fichier build.gradle :

plugins {
    id "org.sonarqube" version "3.3"
}

sonarqube {
    properties {
        property "sonar.projectKey", "my-project"
        property "sonar.host.url", "http://localhost:9000"
        property "sonar.login", "your-sonar-token"
    }
}

 

Ensuite, exécutez la commande Gradle pour analyser le projet :

./gradlew sonarqube

Analyser un Projet Python

Pour analyser un projet Python avec SonarQube, vous pouvez utiliser le scanner SonarQube. Installez le scanner :

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
unzip sonar-scanner-cli-4.6.2.2472-linux.zip
export PATH=$PATH:$PWD/sonar-scanner-4.6.2.2472-linux/bin/

Ensuite, créez un fichier sonar-project.properties dans le répertoire de votre projet :

sonar.projectKey=my-project
sonar.host.url=http://localhost:9000
sonar.login=your-sonar-token
sonar.sources=.

Exécutez la commande pour analyser le projet :

sonar-scanner

Intégrer SonarQube dans un Pipeline CI/CD

Pour intégrer SonarQube dans un pipeline CI/CD, vous pouvez ajouter une étape d'analyse de code dans votre fichier de configuration CI/CD. Par exemple, pour GitHub Actions, vous pouvez ajouter une étape comme suit :

name: SonarQube Analysis

on: [push, pull_request]

jobs:
  sonarqube:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'
    - name: Cache SonarQube packages
      uses: actions/cache@v2
      with:
        path: ~/.sonar/cache
        key: ${{ runner.os }}-sonar
        restore-keys: ${{ runner.os }}-sonar
    - name: Install SonarQube Scanner
      run: |
        wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
        unzip sonar-scanner-cli-4.6.2.2472-linux.zip
        export PATH=$PATH:$PWD/sonar-scanner-4.6.2.2472-linux/bin/
    - name: Run SonarQube Scanner
      env:
        SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
      run: |
        sonar-scanner \
          -Dsonar.projectKey=my-project \
          -Dsonar.host.url=http://localhost:9000 \
          -Dsonar.login=$SONAR_TOKEN

 

Conclusion

SonarQube est un outil puissant pour l'analyse continue de la qualité du code. En utilisant SonarQube, vous pouvez détecter les bugs, les vulnérabilités de sécurité et les problèmes de code technique, et améliorer la qualité et la sécurité de vos projets logiciels. Ces exemples de commandes et de configurations vous donnent un bon point de départ pour commencer à utiliser SonarQube.


Mise en garde concernant l'utilisation des outils de cybersécurité

L'utilisation des outils de cybersécurité présentés sur ce site est soumise à des considérations légales et éthiques importantes. Avant d'utiliser ces outils, nous vous encourageons à prendre en compte les points suivants :

- Cadre légal : L'utilisation de certains outils de cybersécurité peut être réglementée par la loi dans votre pays ou région. Il est de votre responsabilité de vous informer sur les lois en vigueur concernant la cybersécurité, la protection des données et la vie privée. L'utilisation non autorisée de ces outils peut entraîner des poursuites judiciaires et des sanctions pénales.

- Consentement : Assurez-vous d'obtenir le consentement explicite des parties concernées avant d'utiliser des outils qui pourraient intercepter, surveiller ou analyser des données. Le respect de la vie privée des individus est primordial.

- Utilisation éthique : Les outils de cybersécurité doivent être utilisés de manière éthique et responsable. Ils ne doivent pas être employés à des fins malveillantes, telles que le piratage, le vol de données ou toute autre activité illégale.

- Responsabilité : En utilisant ces outils, vous reconnaissez que vous le faites à vos propres risques. Nous ne saurions être tenus responsables des conséquences résultant de l'utilisation de ces outils, y compris, mais sans s'y limiter, les dommages matériels, les pertes de données ou les poursuites judiciaires.

- Formation et expertise : Il est recommandé de suivre une formation adéquate et de posséder les compétences nécessaires avant d'utiliser des outils de cybersécurité. Une mauvaise utilisation peut entraîner des résultats indésirables et des risques pour la sécurité.

En utilisant ce site et les outils qui y sont présentés, vous acceptez de respecter ces conditions et de vous conformer à toutes les lois applicables.

Formateur

Bertrand LECLERCQ

Consultant DevSecOps & Data Engineer


Avec 25 ans d'expérience dans le développement logiciel et une certification en Data Engineering de l'École des Mines Paris - PSL, je suis passionné par la cybersécurité, le big data et le DevOps. J'aime partager mes connaissances et aider la communauté à renforcer sa posture de sécurité.

J'ai créé une base de vulnérabilités librement accessible et je me forme en continu sur des plateformes comme TryHackMe. Mon objectif ? Démocratiser la cybersécurité et permettre à chacun de mieux comprendre les enjeux.

J'ai une solide expertise dans la conception et le déploiement de solutions sécurisées, ainsi qu'une expérience éprouvée dans la gestion de projets complexes. Maîtrisant un large éventail de technologies (Python, Go, Java, Docker, Kubernetes, etc.), je suis convaincu que la sécurité doit être intégrée dès le début du cycle de développement.

Le projet NoHackMe vous permet d'effectuer une veille Cyber, vous permet de découvrir le monde de la Cybersécurité ainsi qu'une section formation Cyber

Soutenez No Hack Me sur Tipeee