Step-By-Step Guide

Analyse statique de code à l'aide de SonarQube Community Build : guide étape par étape

L'analyse statique de code est un outil essentiel pour garantir la sécurité du code et se prémunir contre les pièges courants. Dans ce guide, vous découvrirez l'analyse statique de code et apprendrez à l'exécuter à l'aide de SonarQube Community Build.

Table des matières

  • Chevron right iconIntroduction
  • Chevron right iconQu'est-ce que l'analyse statique de code ?
  • Chevron right iconAnalyse statique de code avec SonarQube Server
  • Chevron right iconInstallation de SonarQube Community Build
  • Chevron right iconDécouverte de SonarQube Community Build
  • Chevron right iconExécution de l'analyse
  • Chevron right iconUtilisation du mode connecté
  • Chevron right iconRésumé

Introduction

L'analyse statique de code est une technique d'inspection automatisée largement utilisée qui identifie les bogues, les failles de sécurité, les code smells et autres problèmes dans le code qui ne correspondent pas aux normes de codage de votre entreprise. Elle est effectuée dès le début du processus de développement, ce qui contribue à améliorer la qualité et la maintenabilité du code.


L'utilisation d'outils tels que SonarQube Server pour l'analyse statique du code vous aide à détecter et à corriger les problèmes de code avant qu'ils ne deviennent des problèmes majeurs en production. La détection précoce des problèmes de codage dans le cycle de vie du développement logiciel (SDLC) permet d'obtenir des logiciels plus efficaces et plus fiables. De plus, la résolution des problèmes à un stade précoce du processus de développement permet de gagner du temps et coûte moins cher que si elle est effectuée plus tard, lors des tests d'application ou lorsque les applications sont en production.


Dans cet article, vous découvrirez comment fonctionne l'analyse statique de code, ce qu'elle peut apporter à la qualité de votre base de code et comment exécuter une analyse statique de code à l'aide de SonarQube Community Build et SonarQube for IDE.

Qu'est-ce que l'analyse statique de code ?

L'analyse statique de code est une technique fondamentale d'assurance qualité logicielle qui consiste à inspecter systématiquement le code source sans l'exécuter, dans le but de détecter les bogues, les vulnérabilités, les odeurs de code et les problèmes de conformité dès le début du cycle de vie du développement. En tirant parti de puissants outils et algorithmes d'analyse statique, les développeurs et les organisations peuvent identifier les risques de sécurité, maintenir l'intégrité du code, garantir le respect des normes de codage et minimiser la dette technique avant que le logiciel n'atteigne la phase de production.


Voici les principales raisons d'effectuer une analyse statique du code :

  • Détecter les bogues avant qu'ils n'affectent la production. Les bogues détectés au tout début du cycle de vie du développement logiciel (SDLC) sont beaucoup moins coûteux à corriger.
  • Révéler les vulnérabilités de sécurité et empêcher leur exploitation en production.
  • Améliorer la maintenabilité en éliminant les codes dupliqués et inutilisés.
  • Harmoniser le style de code entre les membres de l'équipe, afin que la révision du code se concentre davantage sur l'intention que sur les divergences cosmétiques.
  • Aider à définir la portée de la dette technique à traiter.

L'analyse statique du code peut être effectuée à différents stades précoces du développement. Les linters appliquent une analyse incrémentielle du code en temps réel, signalant les erreurs et les codes suspects au fur et à mesure que vous tapez. La post-validation dans le référentiel est une autre étape bénéfique du SDLC pour l'exécution de l'analyse du code.


Sonar recommande d'effectuer des vérifications d'analyse statique du code dans votre environnement de développement local avec SonarQube pour IDE et dans le cadre de votre pipeline CI avec SonarQube Server intégré à la plateforme DevOps de votre choix. Ces deux opérations peuvent sembler redondantes, mais elles répondent à deux objectifs. Le premier est de détecter les problèmes le plus tôt possible dans l'IDE, afin de minimiser les retouches. Le second est de trouver des problèmes profondément enfouis dans le code, difficiles à détecter dans l'IDE et qui ne peuvent être découverts dans le référentiel qu'en parcourant tout le code du projet et ses dépendances.

Mise en œuvre de l'analyse statique de code avec SonarQube Server

SonarQube Server est un outil d'analyse statique de code puissant et populaire qui aide les développeurs et les équipes à identifier et à éliminer les bogues, les vulnérabilités et les code smells dans plus de trente langages, dont Java, Python, Go, JavaScript, TypeScript, C, C++ et C#.


L'intégration de SonarQube Server dans votre workflow améliore la qualité et la maintenabilité du code, ce qui vous aide en fin de compte à fournir un produit plus fiable à vos utilisateurs. Son ensemble complet de règles et de paramètres personnalisables vous aide à écrire un code plus propre et plus efficace tout en respectant les meilleures pratiques du secteur.


SonarQube Server vous permet d'effectuer une analyse statique du code dans différents contextes :

  • Exécutez une analyse du code sur l'ensemble de votre base de code à la demande et à tout moment.
  • Configurez l'analyse du code pour qu'elle s'exécute chaque fois que vous validez et poussez des modifications vers votre référentiel de code sur une plateforme DevOps, telle que GitHub, GitLab ou Bitbucket.
  • Bénéficiez d'un retour instantané sur l'analyse du code lorsque vous apportez des modifications dans l'IDE, tel que JetBrains IDEs (IntelliJ), Visual Studio, VS Code, un IDE JetBrains ou Eclipse via SonarQube for IDE, une extension IDE qui utilise les règles de qualité du code configurées dans SonarQube Server.


Voyons ce qu'il faut pour effectuer une analyse de code statique avec SonarQube Community Build. SonarQube Server et Community Build étant des produits autogérés, vous devrez décider où héberger et installer le serveur. Vous pouvez également utiliser SonarQube Cloud si vous préférez une expérience SaaS hébergée dans le cloud. Dans cette présentation, nous vous montrons comment installer SonarQube Community Build, car il ne nécessite pas de licence pour fonctionner. Les étapes d'installation sont identiques pour SonarQube Server, mais nécessitent une étape supplémentaire pour installer une licence afin de lancer l'analyse.

Installation de SonarQube Community Build

Vous pouvez ignorer cette section si vous disposez déjà d'une instance SonarQube Server ou Community Build en cours d'exécution.

SonarQube Community Build peut être installé localement sur votre machine Windows, Mac ou Linux à partir d'un fichier ZIP ou exécuté en tant que conteneur à partir d'une image Docker.


Dans ce tutoriel, vous allez exécuter SonarQube Community Build dans un conteneur Docker, car c'est un moyen facile d'explorer la plateforme et la façon la plus courante de l'exécuter. L'autre avantage est que lorsque vous passez à l'exécution en production, vous pouvez utiliser les données de la base de données sans repartir de zéro.


Pour exécuter un conteneur Docker sur votre machine locale, vous devez avoir installé et lancé Docker Desktop.


Ensuite, créez un nouveau répertoire nommé « sq-community-build ». Dans celui-ci, créez un répertoire nommé « sq-logs » et un nouveau fichier nommé « docker-compose.yml », puis collez le script suivant dans le fichier :


version: "3"

services:
    sonarqube:
      image: sonarqube:community
      ports:
        - "9000:9000"
      depends_on:
        - db
      environment:
        SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
        SONAR_JDBC_USERNAME: sonar
        SONAR_JDBC_PASSWORD: sonar
      volumes:
        - sonarqube_data:/opt/sonarqube/data
        - sonarqube_extensions:/opt/sonarqube/extensions
        - ./sq-logs:/opt/sonarqube/logs

    db:
      image: postgres
      ports:
        - 5433:5432
      environment:
        POSTGRES_USER: sonar
        POSTGRES_PASSWORD: sonar
        POSTGRES_DB: sonar
      volumes:
        - postgresql:/var/lib/postgresql
        - postgresql_data:/var/lib/postgresql/data

  volumes:
    sonarqube_data:
    sonarqube_extensions:
    postgresql:
    postgresql_data:


Vous pouvez également utiliser notre exemple de fichier docker-compose.yml dans GitHub. Le script ci-dessus est un peu plus simple pour cet exercice, il est donc plus facile à expliquer.


Avant d'exécuter SonarQube Build, passons en revue quelques éléments définis par le script yml ci-dessus afin qu'il n'y ait pas de mystère.


Tout d'abord, il définit le service qui exécute SonarQube Community Build dans un conteneur Docker. Notez que l'image est « sonarqube:community » et qu'elle dépend d'une base de données. La base de données que vous utiliserez est PostgreSQL, et vous indiquez à SonarQube Community Build les identifiants de connexion à la base de données et l'URL de celle-ci, qui comprend le nom d'hôte, le port et le schéma de la base de données.


Vous définissez les trois volumes dont SonarQube Community Build a besoin et un mappage de port hôte vers le port du conteneur, qui est le port permettant d'accéder au serveur web que vous utiliserez pour interagir avec SonarQube Community Build. Notez que le script définit un dossier pour stocker les journaux de SonarQube Community Build. Si vous rencontrez des problèmes et que vous avez besoin de consulter les journaux, vous savez où les trouver. Ils se trouvent dans « sq-docker/sq-logs/ ».



Ensuite, le script yml définit le service permettant d'exécuter PostgreSQL dans un autre conteneur Docker. Le script définit le mappage entre le port hôte de la base de données et le port du conteneur. Vous lui fournissez des variables d'environnement pour définir le nom d'utilisateur et le mot de passe de connexion utilisés précédemment par SonarQube Community Build. De plus, le script configure un schéma dans la base de données appelé « sonar » que SonarQube Community Build utilisera. Enfin, le script définit où trouver les volumes dont la base de données a besoin pour fonctionner. Enfin, le script définit les volumes requis par les deux conteneurs.

Dans votre terminal, dans le répertoire « sq-community-build », exécutez la commande suivante :

docker compose up


Vous verrez s'afficher de nombreuses informations expliquant ce qui se passe dans SonarQube Community Build et PostgreSQL. Lorsque l'affichage ralentit et que le message « SonarQube Community Build is operational » (SonarQube Community Build est opérationnel) s'affiche, ouvrez SonarQube Community Build dans votre navigateur à l'adresse « localhost:9000/ ». Connectez-vous avec les identifiants par défaut, à savoir le nom d'utilisateur « admin » et le mot de passe « admin », puis modifiez le mot de passe par défaut lorsque vous y êtes invité.

Découvrir SonarQube Community Build

Une fois que vous avez modifié le mot de passe par défaut, SonarQube Community Build vous guidera tout au long de la création de votre premier projet. Si votre projet se trouve sur une plateforme DevOps CI, vous pouvez configurer une intégration avec celle-ci ou configurer SonarQube Community Build pour analyser un projet sur votre machine locale.



Avant de configurer et d'analyser votre premier projet, parcourons les différentes sections de cette page afin de comprendre ce que SonarQube Community Build vous montre.


Dans la partie principale de la page, vous pouvez effectuer l'une des opérations suivantes :

  1. Connectez SonarQube Community Build à une plateforme DevOps telle que GitHub, GitLab, Bitbucket ou Azure DevOps et spécifiez un projet dans le référentiel à analyser. SonarQube Community Build effectuera une analyse du code sur l'ensemble du projet et de manière incrémentielle à chaque commit sur la branche principale du référentiel.
  2. Connectez SonarQube Community Build à une copie de travail locale d'une base de code et exécutez une analyse de code à la demande localement.


Tous les projets que vous ajoutez à SonarQube Community Build, y compris ceux que vous ajoutez à l'aide de cet assistant, seront accessibles depuis la section Projects du menu de navigation de SonarQube Community Build.

The other sections on the navigation menu include:

  • Issues This section contains all of the issues SonarQube Community Build finds as a result of analyzing your projects. The issues are grouped by project and the file they were found in. Using the left-hand navigation, you can filter the list of issues to find what you are looking for.
  • Rules This is a comprehensive list of all static code analysis rules available in SonarQube Community Build across all supported programming languages.
  • Quality Profiles These are language-specific collections of rules applied during analysis. For each language, there's a default profile called Sonar way that contains the rules Sonar recommends for that language. You can create custom profiles to suit your company's needs, however the default Sonar way is most commonly used.
  • Quality Gates This section lists all your quality gates. Quality gates contain the conditions that will cause a code scan to fail. The default quality gate, called Sonar way, includes a set of conditions based on the Clean as You Code methodology that Sonar advocates. It differentiates between old code and new code to ensure new code added after you've begun using SonarQube Community Build is free of bugs, security vulnerabilities, and technical debt and has proper test coverage. Like the quality profiles, you can create custom quality gates with conditions to match your company's policies, but the conditions preset by SonarQube Community Build are the norm.


Les autres sections du menu de navigation comprennent :

  • Issues Cette section contient tous les problèmes détectés par SonarQube Community Build à la suite de l'analyse de vos projets. Les problèmes sont regroupés par projet et par fichier dans lequel ils ont été détectés. À l'aide du menu de navigation situé à gauche, vous pouvez filtrer la liste des problèmes afin de trouver celui qui vous intéresse.
  • Rules Il s'agit d'une liste complète de toutes les règles d'analyse de code statique disponibles dans SonarQube Community Build pour tous les langages de programmation pris en charge.
  • Quality Profiles Il s'agit d'ensembles de règles spécifiques à chaque langage qui sont appliquées lors de l'analyse. Pour chaque langage, il existe un profil par défaut appelé Sonar way qui contient les règles recommandées par Sonar pour ce langage. Vous pouvez créer des profils personnalisés adaptés aux besoins de votre entreprise, mais le profil par défaut Sonar way est le plus couramment utilisé.
  • Quality Gates Cette section répertorie toutes vos portes de qualité. Les portes de qualité contiennent les conditions qui entraîneront l'échec d'une analyse de code. La porte de qualité par défaut, appelée Sonar way, comprend un ensemble de conditions basées sur la méthodologie préconisée par Sonar. Elle fait la distinction entre l'ancien code et le nouveau code afin de garantir que le nouveau code ajouté après que vous ayez commencé à utiliser SonarQube Community Build est exempt de bogues, de vulnérabilités de sécurité et de dette technique, et qu'il bénéficie d'une couverture de test adéquate. Comme pour les profils de qualité, vous pouvez créer des portes de qualité personnalisées avec des conditions correspondant aux politiques de votre entreprise, mais les conditions prédéfinies par SonarQube Community Build constituent la norme.

Exécution de l'analyse SonarQube Community Build à la demande

Dans un environnement de production, vous connectez généralement SonarQube Community Build à votre plateforme DevOps et ajoutez les projets que vous souhaitez analyser. Par souci de concision, voyons comment exécuter une analyse de code locale à la demande avec SonarQube Community Build. Pour suivre cet exercice, vous avez uniquement besoin des conteneurs Docker SonarQube Community Build et PostgreSQL en cours d'exécution, ainsi que d'une copie locale d'un référentiel de projet.


Utilisons eShopOnWeb, une application ASP.NET Core de référence, comme cobaye. Sur GitHub, créez votre propre fork de `eShopOnWeb` et clonez-le localement sur votre machine.


Revenez à l'écran de création de projet de SonarQube Community Build, qui devrait être disponible à l'adresse `localhost:9000/projects/create` pour une installation locale. Cliquez sur Manually pour configurer une analyse à la demande de la copie de travail locale.


Dans l'écran suivant, entrez « eShopOnWeb » dans le champ Project display name. Cliquez sur Set Up.


Dans l'écran suivant, choisissez d'analyser votre copie de travail locale en cliquant sur Locally.


Dans l'écran suivant intitulé Analyze your project, sous Provide a token, acceptez les options de jeton par défaut et cliquez sur Generate. Une fois le jeton généré, cliquez sur Continue.


Sous Run analysis on your project, sélectionnez .NET. Sous Choose your build tool, conservez .NET Core sélectionné. SonarQube Community Build affichera les instructions pour exécuter les commandes supplémentaires nécessaires à la réalisation d'une analyse locale du code :


Si vous ne disposez pas d'une version récente de .NET installée sur votre machine, téléchargez et installez .NET Core SDK pour pouvoir suivre.


Installez l'outil Scanner .NET Core Global de SonarQube Community Build en exécutant la commande suivante dans le terminal:


dotnet tool install --global dotnet-sonarscanner


Si la sortie de la commande indique que le répertoire des outils .NET ne figure pas dans votre variable d'environnement PATH, suivez les instructions fournies dans la sortie pour l'ajouter à votre PATH.

Dans votre terminal, ouvrez le dossier racine de la copie locale de votre fork `eShopOnWeb` et exécutez les trois commandes répertoriées par SonarQube Community Build sous Execute the scanner. Remplacez la deuxième de ces commandes, `dotnet build`, par `dotnet build Everything.sln`.

Dès que toutes ces commandes sont terminées et que les résultats sont renvoyés à votre installation SonarQube Community Build, votre page de projet SonarQube Community Build affiche un aperçu des résultats de l'analyse initiale du code :



Comme vous pouvez le constater, SonarQube Community Build a détecté 20 bogues, 31 points sensibles en matière de sécurité et 151 odeurs de code dans les différents langages utilisés dans « eShopForWeb ». Si vous cliquez sur le nombre d'odeurs de code dans cet aperçu, vous verrez la liste des problèmes spécifiques. En cliquant sur le filtre Language à gauche, vous verrez de quels langages proviennent ces odeurs de code. Dans ce cas, la plupart proviennent du code C#, mais une odeur de code a été détectée dans un fichier CSS.



En revenant à la vue d'ensemble du projet, vous pouvez voir que le résumé concerne l'ensemble du code. L'onglet New Code est vide, car vous n'avez effectué qu'une analyse initiale du code:



Lorsque vous apportez des modifications au code, SonarQube Community Build utilise cette analyse initiale comme référence et signale les problèmes détectés dans votre nouveau code. Le contrôle qualité de votre nouveau code vous permet de le maintenir en bon état et empêche les problèmes d'entrer dans votre base de code. Ainsi, la qualité globale de votre base de code s'améliore progressivement au fil du temps.


Voici ce qui se passe si vous introduisez un nouveau bug dans `eShopOnWeb` en rendant le constructeur de la classe `UriComposer` privé et en exécutant à nouveau une analyse de code SonarQube Community Build:



Étant donné que le contrôle qualité par défaut de SonarQube Community Build exige qu'aucun nouveau bug ne soit introduit, le contrôle qualité pour le nouveau code échoue, vous invitant à apporter des corrections et à rendre SonarQube Community Build à nouveau vert.

Utilisation de SonarQube pour le mode connecté de l'IDE dans VS Code


Alors que SonarQube Community Build analyse votre code à la demande ou automatiquement lors de nouveaux pushs vers votre référentiel, vous pouvez également obtenir un retour instantané sur la qualité du code dans votre IDE grâce à SonarQube for IDE. Il s'agit d'une extension IDE avancée gratuite qui vous aide à maintenir la qualité du code au fur et à mesure que vous tapez et avant de valider votre code.



Si vous utilisez Visual Studio Code, installez SonarQube pour IDE : Visual Studio Code en ouvrant le volet Extensions, en recherchant SonarQube pour IDE et en installant l'extension SonarQube pour IDE à partir des résultats de recherche.



Vous verrez alors les résultats de l'analyse du code, comme ceux de SonarQube Community Build, dans l'IDE pendant que vous codez :




Si vous utilisez à la fois SonarQube for IDE pour l'analyse de code dans l'IDE et SonarQube Community Build pour l'analyse de code dans le référentiel, leConnected Mode débloque des fonctionnalités avancées qui ne sont disponibles que lorsque SonarQube for IDE et SonarQube Community Build sont associés. Par exemple, en mode connecté, SonarQube for IDE signale les problèmes de code en fonction des règles de qualité de code que vous configurez dans SonarQube Community Build.

Résumé

Quelle que soit la pile technologique que vous utilisez, l'introduction d'outils d'analyse de code statique dans votre flux de travail quotidien de programmation vous aide à maintenir un code propre et à éviter de passer trop de temps à rechercher des bogues en production.


Dans cet article, vous avez appris comment fonctionne l'analyse de code statique dans SonarQube Server, comment utiliser SonarQube for IDE dans l'IDE et comment faire fonctionner les deux outils ensemble.


Ce guide a été rédigé par Jura Gorohovsky.

  • 5 août 2024
  • Suivez SonarSource sur Twitter
  • Suivez SonarSource sur Linkedin
language switcher
Français (French)
  • Documentation juridique
  • Trust Center

© 2008-2024 SonarSource SA. Tous droits réservés. SONAR, SONARSOURCE, SONARLINT, SONARQUBE, SONARCLOUD et CLEAN AS YOU CODE sont des marques déposées de SonarSource SA.