SonarQube-Integration

Verbessern Sie Ihre C/C++-Code-Analyse mit dem CppDepend-SonarQube-Plugin

Willkommen zu unserem umfassenden Leitfaden zur Integration des CppDepend SonarQube-Plugins zur Verbesserung Ihres C++-Codeanalyseprozesses. Das CppDepend SonarQube-Plugin bietet eine nahtlose Integration mit SonarQube, einer weit verbreiteten Plattform zur kontinuierlichen Inspektion der Codequalität. Indem Sie die mächtigen Funktionen von CppDepend in Ihren SonarQube-Workflow einbinden, profitieren Sie von verbesserter Codewartbarkeit, reduzierter technischer Schuld und wertvollen Einblicken in Ihre Codebasis. Lesen Sie weiter, um mehr über die Vorteile des CppDepend SonarQube-Plugins zu erfahren und wie Sie es einfach in Ihren Entwicklungsprozess integrieren.

CppDepend bietet eine einzigartige Codeabfragesprache namens PRQL, die es Entwicklern, Designern und Architekten ermöglicht, die Codebasis wie eine Datenbank zu behandeln und benutzerdefinierte Regeln zu erstellen.

PRQL ermöglicht es Benutzern, Daten aus Codemetriken, Abhängigkeiten, API-Nutzung und anderen Modellinformationen zu kombinieren, um hochentwickelte Regeln zu erstellen.

Über PRQL führt CppDepend die Möglichkeit ein, Codequalitätsregeln für SonarQube mühelos anzupassen, und es ermöglicht zwei Methoden der Zusammenarbeit mit SonarQube:

  • CppDepend zusammen mit dem C++ SonarQube Community Plugin: Diese empfohlene Integration ermöglicht es Ihnen, die Funktionen sowohl von CppDepend als auch des SonarQube Community Plugins zu nutzen. Hinweise zu dieser Integration finden Sie in der Dokumentation zur SonarQube-Community-Integration.
  • CppDepend-Plug-in im Standalone-Modus: Mit dieser Option ist es nicht erforderlich, ein zusätzliches C++-SonarQube-Plugin zu installieren. Anweisungen zur Implementierung dieser Integration finden Sie in der Dokumentation zur eigenständigen SonarQube-Integration.

Die Regelsätze von CppDepend und SonarQube ergänzen sich

Sowohl CppDepend als auch SonarQube sind statische Analysetools, die ein regelbasiertes System zur Erkennung von Problemen in C/C++-Code bieten. Der CppDepend-Standardregelsatz jedoch hat sehr wenig Überlappung mit den SonarQube-Regeln

Grundsätzlich sind die SonarQube-Regeln gut darin, zu analysieren, was innerhalb einer Methode passiert – den Codefluss –, während das CppDepend-Codemodell, auf dem die CppDepend-Regeln basieren, für eine 360-Grad-Sicht auf bestimmte Bereiche höherer Ebene optimiert ist, einschließlich OOP, Abhängigkeiten, Metriken, Breaking Changes, Veränderlichkeit, Benennung...

Konkret können SonarQube-Regeln vor Problemen warnen, wie etwa einer Referenz, die nicht auf Null geprüft werden muss, weil sie im aktuellen Gültigkeitsbereich nicht null, während CppDepend Sie vor zu komplexen Klassen oder Komponenten warnen und Ratschläge geben kann, wie Sie refaktorisieren können, um den Code sauberer und wartbarer zu machen.

Ein weiterer Punkt, der das CppDepend-Regelsystem einzigartig macht, ist wie einfach es das Schreiben eigener Regeln macht. Mit CppDepend ist eine Regel eine LINQ-Abfrage, die ein der Codequalität gewidmetes Codemodell abfragt, live in Visual Studio bearbeitet und zur Bearbeitungszeit live kompiliert und ausgeführt wird.

Konkret ist das folgende Code-Stück eine voll funktionsfähige Regel — könnte es einfacher sein?

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

Beim Definieren einer benutzerdefinierten Regel mit CppDepend muss der Benutzer kein Visual-Studio-Projekt erstellen, keine Quelldatei anlegen, keinen Editieren/Kompilieren/Debuggen-Zyklus durchlaufen und keine binäre DLL pflegen, deren Verteilung, Versionierung und Integration aufwendig ist.

Bei CppDepend sind benutzerdefinierte Regeln Rohtexte, die als XML-CDATA in die CppDepend-Projekt- oder Regeldateien eingebettet werden. Auch die Dokumentation und Anleitungen zur Fehlerbehebung können als Kommentare in den Regelquellcode eingebettet werden.

SonarQube-Regeldokumentation

Außerdem kann jede CppDepend-Regel ihre Issues mit Zusatzdaten präsentieren, die das Verstehen und Beheben des Problems erleichtern.

Darüber hinaus kann jede Regel zwei C#-Formeln einbetten, die versuchen, sowohl Kosten der Problembehebung und die jährliche Kosten, das Problem unbehoben zu lassen, auch genannt technische-schuld und die jährliche Zinsen des Problems. Da sich diese Formeln auf das stützen, was zur Behebungszeit wirklich zählt, werden die Schuldenschätzungen intelligent.

Schätzung der technischen Schuld in SonarQube

Schließlich wird mit CppDepend jede Regel in wenigen Millisekunden ausgeführt, selbst auf einer großen Codebasis. Folglich können alle Regeln in wenigen Sekunden durchlaufen werden (typischerweise 2 oder 3 Sekunden auf einer realen Codebasis), sowohl in Visual Studio als auch im Continuous-Integration-System.

Der Vorteil: Nach jeder Kompilierung und auch beim Einchecken erfährt der Entwickler sofort von den neuen und behobenen Problemen seit der Baseline sowie von den Auswirkungen in Form behobener oder neu geschaffener technischer Schulden.

Testen Sie CppDepend noch heute

Starten Sie Ihre 14-tägige kostenlose Testversion mit vollem Zugriff auf alle Dokumentationsfunktionen. Keine Kreditkarte erforderlich.