Startseite/Dokumentation/Analyse/Code Diff in CppDepend

Code Diff in CppDepend

Quellcode-Unterschiede meistern mit CppDepend

Dieses Dokument erklärt die Verwendung der CppDepend-Build-Vergleichsfunktionen im Kontext der interaktiven Oberfläche. Das Dokument Reporting Code Diff erklärt die Verwendung der CppDepend-Build-Vergleichsfunktionen im Kontext der Berichterstattung.

Erste-Schritte-Video (2:30 Min.)

Sehen Sie das Erste-Schritte-Video (2:30 Min.)

Erfahren Sie, wie Sie die Code-Diff-Funktionen von CppDepend nutzen.

Einführung

Code-Evolution und Code-Wartung gehören zu den wichtigsten Merkmalen des Software-Engineerings.

CppDepend bietet seit Mitte 2009 einige fortschrittliche Code-Evolutions- und Code-Diff-Funktionen. Eines der coolsten Ergebnisse der Integration von CppDepend in Visual Studio ist, dass Entwickler nun von mehreren feingranularen Code-Diff-Funktionen profitieren – nur einen Klick von ihrer natürlichen Entwicklungsumgebung entfernt. Stellen wir 3 typische Code-Diff-Szenarien vor.

Code-Diff aus VisualCppDepend heraus

So kann man zum Beispiel im Code Browser mit der rechten Maustaste auf ein Projekt klicken und Wählen Sie Methoden (des Projekts), bei denen Code geändert wurde.

CppDepend-Klassenbrowser

Dies erzeugt eine CQLinq-Abfrage, die Wählen Sie Methoden (des Projekts), bei denen Code geändert wurde Natürlich kann man bei jeder gelisteten Methode direkt zur Quellcode-Deklaration springen oder einen Diff anfordern.

CQLinq-Abfrage

Nach oben

Codeänderungs-Review über das Suchpanel

Das Search Change Panel ist eigentlich nur ein CQLinq-Abfragegenerator für Codeänderungen. Im Screenshot unten sehen wir beispielsweise, dass die Abfrage nach Method + Change + Code was Changed or was Added generiert die CQLinq-Abfrage:

1from m in Application.Methods
2
3where m.CodeWasChanged() || m.WasAdded()
4
5select new { m, m.NbLinesOfCode }

Das gezeigte Ergebnis ist ideal für effizientes Codeänderungs-Review: nicht nur alle Codeänderungen sind auf einen Blick übersichtlich organisiert, sondern für jede refaktorisierte Methode ist der Entwickler nur einen Klick davon entfernt, den Diff in den Quelldateien zu sehen.

Code wurde geändert

Die Optionen des Search Change Panels bieten verschiedene Möglichkeiten, Diffs zu untersuchen, einschließlich der Suche nach Codeelementen, bei denen nur der Code (nicht der Kommentar) geändert wurde oder bei denen nur der Kommentar geändert wurde, bei denen die Sichtbarkeit geändert wurde, die hinzugefügt oder entfernt wurden usw....

Eine Bonus-Option ist die Diff-Suche im Tier-Code, etwa die Frage, welche Bibliothekstypen nicht mehr verwendet werden.

Typischerweise schreiben Entwickler gerne Tests, um refaktorisierten und neuen Code automatisch zu testen. Eine weitere coole Bonusoption ist die Suche nach Diffs in Kombination mit der Testabdeckungsquote, etwa die Abfrage nach Methoden, deren Code geändert wurde (d. h. refaktorisierte Methoden) und die nicht ausreichend durch Tests abgedeckt sind.

Nach oben

Code-Diff aus Visual Studio heraus

Wie wir gerade gesehen haben, gibt es ein CppDepend-Menü im Rechtsklickmenü des Quellcodes, aber auch ein CppDepend-Menü im Visual Studio-Quellcode-Editor. Da CppDepend das aktuell im Quellcode bearbeitete Codeelement erkennt, kann der Benutzer beispielsweise mit der rechten Maustaste auf eine Methode klicken und sehen, ob sie geändert wurde. Wurde der Methodencode tatsächlich geändert, erscheinen mehrere Optionen im CppDepend-Rechtsklickmenü. Eine der Optionen ist Ältere und neuere Version der Quelldatei vergleichen, was zum Öffnen einer textbasierten Diff-Anwendung führt, um Änderungen zu sehen

Code-Diff in Visual Studio

Hier ist zum Beispiel der VS-2012-Erweiterungs-Diff-Tool geöffnet durch Klicken auf Ältere und neuere Version der Quelldatei vergleichen auf dem NUnit v2.4.8 vs. v2.5.3 Methode IsPlatformSupported().

VS-2012-Erweiterungs-Diff-Tool

Schauen Sie noch einmal auf den ersten Screenshot oben — Sie sehen mehrere weitere interessante Optionen, darunter Meine Deklaration im älteren Quellcode öffnen.

Präzisieren wir, dass nicht nur Methodenänderungen berücksichtigt werden, sondern auch Namespace-, Typ- und Feldänderungen. Man kann beispielsweise mit der rechten Maustaste auf eine Namespace-Quellcode-Deklaration klicken und nach Typen oder Methoden des Namespaces fragen, die refaktorisiert oder hinzugefügt wurden.

An dieser Stelle fragen Sie sich vielleicht, woher CppDepend/Visual Studio die vorherige Version des Codes kennt, mit der verglichen wird (die sogenannte Baseline for Comparison). Dieses Konzept wird später in diesem Artikel erklärt – springen wir zum zweiten Code-Diff-Szenario.

Nach oben

Definieren der Baseline für den Vergleich

Weiter oben im Beitrag haben wir das Konzept von Baseline für den Vergleich. Dies stellt die vorherige Snapshot-Version der Codebasis dar, mit der der Vergleich durchgeführt wird. Typischerweise repräsentiert die Vergleichs-Baseline die neueste Version des Codes in der Produktion.

Die Baseline für den Vergleich kann über das Menü festgelegt werden: Diff > Define The Two Snapshots to Diff > Define the project's Baseline for Comparison. Der untenstehende Dialog erscheint und lässt Sie über verschiedene Optionen die Baseline definieren. Die Option Baseline for Comparison wird dann in der CppDepend-Projektdatei gespeichert.

Baseline-Vergleichseinstellungen

Schließlich kann jedes Diff-Tool über das Menü Diff > Quelldatei-Vergleichstools.

Testen Sie CppDepend noch heute

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