02 Juillet 2024
SonarQube est une plateforme open source utilisée pour évaluer automatiquement la qualité du code source, détectant les bugs, les vulnérabilités et les mauvaises pratiques,tout en fournissant des métriques pour améliorer la maintenabilité et la sécurité des applications.
La version Developer Edition de SonarQube offre un ensemble robuste de fonctionnalités pour les développeurs, leur permettant d'optimiser la qualité et la sécurité de leur code tout au long du cycle de développement.
Cette section explore en détail les capacités offertes par SonarQube Developer Edition, mettant en lumière ses fonctionnalités clés, son support multi-langages et son intégration transparente avec les outils de développement.
De plus, nous aborderons les avantages de cette édition, ainsi que les limitations potentielles pour vous aider à prendre des décisions éclairées quant à son utilisation dans vos projets.
La version gratuite de SonarQube est disponible indéfiniment. Vous pouvez l'utiliser aussi longtemps que nécessaire sans frais supplémentaires.
Analyse du Code Source
Reporting et Tableaux de Bord
Support Multi-langages
Prise en charge de nombreux langages de programmation y compris Java, C#, JavaScript, Python, etc.
Intégration avec les Outils de Développement
Gestion des Pull Requests
Analyse automatique des pull requests pour détecter les problèmes potentiels avant leur intégration au code principal.
Branche
Extensions Communautaires
Accès à un écosystème d'extensions et de plugins gratuits développés par la communauté.
Limitations
Bien que la version gratuite soit riche en fonctionnalités, certaines fonctionnalités avancées telles que la détection de duplications de code avancée ou l'analyse approfondie des vulnérabilités peuvent être disponibles dans les versions payantes.
Fonctionnalité | Communauté (Gratuit) | Developer Edition | Enterprise Edition | Data Center Edition |
---|---|---|---|---|
Licensing | Gratuit open-source | Licence commerciale | Licence commerciale | Licence commerciale |
Nombre d'utilisateurs | Illimité | Illimité | Illimité | Illimité |
Nombre de projets | Illimité | Illimité | Illimité | Illimité |
Analyse du code | Oui avec limitations | Oui avec plus de fonctionnalités | Oui avec toutes les fonctionnalités | Oui avec toutes les fonctionnalités |
Langages supportés | Limité (ex. Java, C#, Python) | Étendu (ex. ajoute C++, JavaScript) | Tous les langages (ex. ajoute PHP, Ruby) | Tous les langages |
Code Smells | Limité | Étendu | Tous | Tous |
Vulnérabilités | Limité | Étendu | Tous | Tous |
Points de sécurité | Non | Oui | Oui | Oui |
Duplication de code | Limitée | Étendue | Tous | Tous |
Portail de support | Communauté | Support commercial | Support commercial | Support commercial |
Fonctionnalités de sécurité avancées | Non | Oui | Oui | Oui |
Fonctionnalités de test | Non | Oui | Oui | Oui |
Analyse de branche | Non | Oui | Oui | Oui |
Support pull request | Non | Oui | Oui | Oui |
Support commercial | Non | Oui | Oui | Oui |
Il y a deux étapes pour l'installation de SonarQube. La première étape consiste à utiliser Docker ( qui est une plateforme logicielle permettant de créer et gérer des conteneurs) pour créer un conteneur SonarQube.
Ensuite, la deuxième étape consiste à installer le système proprement dit. Nous allons examiner ces deux étapes en détail
Assurez-vous que Docker est installé sur votre système. Vous pouvez télécharger Docker à partir de leur site officiel et suivre les instructions d'installation appropriées pour votre système d'exploitation.
- Ouvrez un terminal ou une invite de commande.
- Utilisez la commande suivante pour télécharger l'image SonarQube depuis Docker Hub :
- Dans Docker Desktop, dans la section ‘Containers’ (conteneurs), pour visualiser le conteneur.
- Accès à SonarQube :
http://localhost:8094/
Dans le tableau ci-dessous :
‘conf’
, puis éditez le fichier ‘sonar.properties’
. Vous devrez changer l'utilisateur et le mot de passe de la base de données ainsi que le chemin vers la base de données. Dans notre cas, SQL Server.
(StartSonar.bat)
pour démarrer l'application SonarQube.
http://localhost:9000/
Avant de passer aux étapes de création du projet, commençons par une brève présentation des différentes plateformes prises en charge par SonarQube :
Dans notre cas, nous allons utiliser la dernière option : la création d'un nouveau projet qui n'est pas hébergé sur une plateforme externe de gestion de code source.
Après avoir cliqué sur ‘Créer un projet local’, une nouvelle fenêtre s'affiche. Saisissez le nom du projet, la clé du projet, et le nom de la branche à scanner. Dans notre cas, nous allons nous baser sur la branche master après avoir cliqué sur ‘Suivante’ (Next).
Donc, à cette étape, nous devons configurer le projet pour le scanner. Nous avons deux options : ‘Utiliser les paramètres globaux’ qui correspond à la configuration globale, et nous avons ‘Définir des paramètres spécifiques pour ce projet’ qui nous permet de spécifier les versions, le nombre de jours, ainsi que la branche de référence.
Cliquer sur ‘Create Project’.
Dans cette étape, choisissez ‘Localement’, c'est-à-dire que le code à scanner et à analyser doit être disponible en local.
Génération du projet token
Un ‘project token’ sur SonarQube est une clé d'authentification utilisée pour permettre à des outils externes ou à des services d'accéder au projet sur SonarQube pour effectuer des analyses ou des opérations spécifiques.
Lorsque vous créez un projet dans SonarQube, un ‘project token’ est généré. Ce token est ensuite utilisé pour permettre l'accès au projet à partir de l'extérieur, par exemple, pour des outils d'intégration continue, des scripts d'analyse, des services d'intégration, etc.
Le ‘project token’ est souvent utilisé dans les systèmes de build automatisés pour permettre à ces systèmes d'envoyer les résultats des analyses de code à SonarQube. Il est important de garder ce token sécurisé, car il donne accès au projet dans SonarQube.
Dans la deuxième partie, il faut suivre les étapes pour lancer l'analyse de code et lier le projet avec SonarQube. Il suffit de lancer les commandes sur le répertoire du projet pour démarrer l'analyse du code. Dans notre cas, nous allons choisir un projet utilisant .NET Core.
Veuillez noter qu'une fois l'analyse lancée, plusieurs fichiers sont ajoutés au niveau du projet contenant la configuration et les paramètres affectés au projet, comme indiqué dans l'image ci-dessous.
Une fois l'analyse du code terminée, les résultats sont envoyés vers SonarQube et le détail de l'analyse du code est affiché.
Tout d'abord, nous allons expliquer les résultats cités dans le tableau de bord du projet :
L’image affiche un tableau de bord avec diverses métriques liées à la qualité et à la maintenance du code informatique. Il y a des sections intitulées ‘Nouveau code’ et ‘Code global’, chacune avec des sous-catégories telles que ‘Fiabilité’, ‘Sécurité’ et ‘Maintenabilité’. Les métriques incluent le nombre de problèmes ouverts, le pourcentage de duplications, les points chauds de sécurité et un pourcentage de couverture qui est à 0,0 %. Cette image est intéressante car elle offre un aperçu de la santé et de la qualité d’une base de code, ce qui est essentiel pour que les développeurs comprennent les domaines nécessitant des améliorations.
La différence entre les sections ‘Nouveau code’ et ‘Code global’ est la suivante :
En résumé, la section ‘Nouveau code’ se concentre sur les modifications récentes, tandis que la section ‘Code global’ englobe l’ensemble du code.
Avant d'aborder la section expliquant les métriques mentionnées dans le tableau de bord du projet, nous allons parler un peu de la partie ‘projects’ qui existe dans le menu global :
La section ‘Projets’ dans SonarQube est l’endroit où vous pouvez gérer et suivre tous vos projets logiciels. Vous pouvez y ajouter des projets, afficher leurs analyses, vérifier les métriques de qualité du code et surveiller leur progression. C’est essentiellement le tableau de bord central pour la gestion de vos projets dans SonarQube.
Dans notre exemple, nous avons un seul projet nommé ‘demo’. L'analyse du code du projet ‘demo’ a réussi, comme mentionné. Cependant, il y a plusieurs parties du code qui doivent être prises en charge, mais globalement, le projet est accepté du point de vue de la qualité.
Voici une explication pour chaque section :
Premièrement, naviguez vers la section où vous souhaitez afficher les problématiques, comme indiqué dans l'image ci-dessous :
Dans notre exemple, nous avons 3 problématiques côté sécurité.
Après l'affichage de la liste des problématiques, elles sont triées par fichier. Dans notre cas,
le fichier ‘appsettings.Development.json’
(surligné en vert) contient 3 problématiques.
Pour voir les détails de chaque problème, il suffit de cliquer sur le titre du problème, comme indiqué dans l'image.
Tout d'abord, examinons les détails du problème. Dans notre exemple avec SonarQube, il détecte qu'il y a un mot de passe de base de données affiché en clair dans ce fichier. SonarQube propose de supprimer le code, mais vous devez vous assurer que le mot de passe de la base de données a été modifié dans un autre endroit, par exemple dans le déploiement.
Finalement, après avoir corrigé le problème dans le code source du projet, vous devez informer SonarQube que le problème est résolu. Parfois, SonarQube peut signaler des résultats erronés, c'est pourquoi il propose un bouton ‘Ouvrir’. Vous pouvez confirmer que le problème est résolu. Si SonarQube donne un résultat erroné, vous pouvez sélectionner ‘False Positive’ et ajouter un commentaire pour expliquer que c'est un problème. Pour les prochaines analyses, SonarQube ne prendra pas en compte les ‘false positives’.
Mr anas
Excellent article, très intéressant, merci