Accueil/Docs/DevOps & CI/CD/Intégration SonarQube

Intégration SonarQube

Améliorez votre analyse de code C/C++ avec le plugin SonarQube CppDepend

Bienvenue dans notre guide complet sur l'intégration du plugin CppDepend SonarQube pour améliorer votre processus d'analyse de code C++. Le plugin CppDepend SonarQube offre une intégration transparente avec SonarQube, une plateforme largement utilisée pour l'inspection continue de la qualité du code. En intégrant les puissantes fonctionnalités de CppDepend dans votre flux de travail SonarQube, vous bénéficierez d'une meilleure maintenabilité du code, d'une dette technique réduite et d'insights précieux sur votre base de code. Lisez la suite pour en savoir plus sur les avantages du plugin CppDepend SonarQube et comment l'intégrer facilement à votre processus de développement.

CppDepend propose un langage de requête de code unique appelé PRQL, qui permet aux développeurs, concepteurs et architectes de traiter la base de code comme une base de données et de créer des règles personnalisées.

PRQL permet aux utilisateurs de fusionner des données provenant de métriques de code, de dépendances, de l'utilisation des API et d'autres informations du modèle pour établir des règles très sophistiquées.

Grâce à PRQL, CppDepend introduit la possibilité d'adapter sans effort les règles de qualité de code pour SonarQube, et il facilite deux méthodes de collaboration avec SonarQube :

  • CppDepend aux côtés du plugin communautaire C++ SonarQube : Cette intégration recommandée vous permet de tirer parti des fonctionnalités de CppDepend et du SonarQube Community Plugin. Pour des conseils sur cette intégration, consultez le Documentation de l’intégration SonarQube Community.
  • Plugin CppDepend en mode autonome : Avec cette option, il n'est pas nécessaire d'installer un plugin SonarQube C++ supplémentaire. Pour des instructions sur la mise en œuvre de cette intégration, consultez la Documentation de l'intégration SonarQube autonome.

Les ensembles de règles de CppDepend et SonarQube sont complémentaires

CppDepend et SonarQube sont tous deux des analyseurs statiques qui offrent un système basé sur des règles pour détecter les problèmes dans le code C/C++. Cependant, l'ensemble de règles par défaut de CppDepend a très peu de chevauchement avec les règles SonarQube

Fondamentalement, les règles SonarQube sont bonnes pour analyser ce qui se passe à l'intérieur d'une méthode, le flux de code, tandis que le modèle de code CppDepend, sur lequel reposent les règles CppDepend, est optimisé pour une vue à 360° de domaines de plus haut niveau, incluant la POO, les dépendances, les métriques, les breaking changes, la mutabilité, le nommage...

Concrètement, les règles SonarQube peuvent signaler des problèmes comme une référence qui n'a pas besoin d'être testée pour la nullité car dans la portée actuelle elle ne peut pas être null, tandis que CppDepend peut vous avertir des classes ou composants trop complexes et offrir des conseils sur la façon de refactoriser pour rendre le code plus propre et plus maintenable.

Un autre point qui rend le système de règles de CppDepend unique est comme il facilite l’écriture de règles personnalisées. Avec CppDepend, une règle est une requête LINQ qui interroge un modèle de code dédié à la qualité du code, éditée en direct dans Visual Studio, compilée et exécutée en direct au moment de l'édition.

Concrètement, ce morceau de code ci-dessous est une règle pleinement fonctionnelle — pourrait-elle être plus simple ?

// <Name>Classes must start with an I</Name>
warnif count > 0
  Application.Types.Where(t => t.IsClass && !t.SimpleName.StartsWith("C"))

Lors de la définition d'une règle personnalisée avec CppDepend, l'utilisateur n'a pas besoin de créer un projet Visual Studio, de créer un fichier source, d'entrer dans le cycle édition/compilation/débogage, ni de maintenir une DLL binaire dont le partage, la gestion de version et l'intégration demandent des efforts.

Avec CppDepend, les règles personnalisées sont des textes bruts, intégrés en CDATA XML dans les fichiers projet ou de règles CppDepend. De plus, la documentation et les guides de correction peuvent être intégrés dans le code source de la règle sous forme de commentaires.

Documentation des règles SonarQube

De plus, chaque règle CppDepend peut présenter ses problèmes avec des données supplémentaires qui aideront à comprendre et à corriger le problème.

De plus, chaque règle peut embarquer deux formules C# qui tentent d'estimer à la fois coût de correction du problème et le coût annuel pour laisser le problème non corrigé, aussi appelé dette-technique et le intérêt annuel du problème. Comme ces formules s'appuient sur ce qui compte vraiment au moment de la correction, les estimations de dette deviennent intelligentes.

Estimation de la dette technique SonarQube

Enfin, avec CppDepend, chaque règle s'exécute en quelques millisecondes, même sur une grande base de code. Par conséquent, toutes les règles peuvent être passées en quelques secondes (typiquement 2 ou 3 secondes sur une base de code réelle), à la fois dans Visual Studio et dans le système d'intégration continue.

En guise d'avantage, après chaque compilation et aussi au moment du check-in, le développeur connaît instantanément les problèmes nouveaux et corrigés depuis la baseline, ainsi que l'impact en termes de dette technique corrigée ou créée.

Essayez CppDepend aujourd'hui

Commencez votre essai gratuit de 14 jours avec accès complet à toutes les fonctionnalités de documentation. Sans carte bancaire.