Treemap-Visualisierung von Codemetriken
Treemap-Visualisierung von Codemetriken
Der Metrikansicht in CppDepend bietet eine leistungsstarke Treemap-Visualisierung, die Ihnen hilft, Ihre Codebasis auf einen Blick zu verstehen. Durch die Darstellung von Codeelementen als verschachtelte Rechtecke macht es die Treemap einfach, Muster zu erkennen, Problembereiche zu identifizieren und Ihre Codestruktur visuell zu erkunden.
Erste-Schritte-Video
Sehen Sie das Erste-Schritte-Video (2:14 Min.)
Erfahren Sie, wie Sie die Treemap-Visualisierung zur Erkundung Ihrer Codebasis nutzen.
Einführung
In der Metrikansicht, wird die Codebasis dargestellt durch Treemap. Treemapping ist eine Methode zur Darstellung baumstrukturierter Daten mithilfe verschachtelter Rechtecke. Die in der CppDepend-Treemap verwendete Baumstruktur ist die übliche Codehierarchie:
- C/C++-Projekte enthalten Namespaces,
- Namespaces enthalten Typen,
- Typen enthalten Methoden und Felder.
Bei der Treemap stellen Rechtecke Code-Elemente dar. Die Option Stufe bestimmt die Art des Code-Elements, das durch Einheitsrechtecke dargestellt wird. Die Option Stufe kann die 5 Werte annehmen: Projekt, Namespace, Typ, Methode und Feld Die beiden Screenshots unten zeigen dieselbe Codebasis — links auf Typebene, rechts auf Namespace-Ebene dargestellt.

Die Option Codemetrik der Treemap bestimmt die Größe der Rechtecke. Wenn zum Beispiel die Ebene auf Typ und die Metrik gesetzt ist auf Anzahl der Codezeilen, wobei jedes Einheitsrechteck einen Typ darstellt und die Größe eines Einheitsrechtecks proportional zur Anzahl der Codezeilen des entsprechenden Typs ist.
Wenn gerade eine PRQL-Abfrage bearbeitet wird, wird die Menge der von der Abfrage getroffenen Codeelemente auf der Treemap als Menge blauer Rechtecke angezeigt. Im Screenshot unten trifft eine PRQL-Abfrage die 200 größten Methoden. Hier ist die Treemap-Ebene Methode und die Metrik ist Anzahl der Codezeilen Wie erwartet sehen wir, dass blaue Rechtecke die 200 größten Einheitsrechtecke der Treemap darstellen.
Der Screenshot unten zeigt außerdem, dass das aktuell ausgewählte Code-Element (hier das Projekt XML) wird als rotes Rechteck auf der Treemap angezeigt.

Häufige Szenarien
Durch Wahl einer geeigneten Kombination von Metrik und Stufe Werte, die Metrikansicht hilft, Muster zu erkennen, die mit anderen Mitteln schwer zu erkennen wären.
Zu groß, zu komplex
CppDepend bietet viele Codemetriken, um zu großen und zu komplexen Code zu erkennen. Methoden mit zu vielen Parametern, zu vielen Variablen, zu vielen Codezeilen, zu hoher zyklomatischer Komplexität usw. sollten verbannt werden. Ebenso sollten Typen mit zu vielen Codezeilen verbannt werden.
Im Screenshot unten ist die Treemap-Ebene eingestellt auf Typ und die Metrik ist Anzahl der Codezeilen. Große Rechtecke repräsentieren große Typen der Codebasis. Das Überfahren eines Rechtecks mit der Maus zeigt die Metrikwerte des Typs an, hier die Anzahl der Codezeilen des Typs. Code-Treemapping hilft eindeutig nicht nur dabei, zu große und zu komplexe Codeelemente zu erkennen, sondern auch, deren jeweilige Größe und Komplexität zu vergleichen.

Fehlerlokalisierung
Im Screenshot unten fragen wir mit einer PRQL-Abfrage nach Methoden mit zu vielen Parametern und zu vielen Variablen. Blaue Rechtecke zeigen die gefundenen Methoden auf der Treemap. Interessant ist hier, dass einige gefundene Methoden gruppiert erscheinen. Da die Treemap eine hierarchische Ansicht ist, bedeutet eine Gruppierung von Codeelementen, dass sie demselben Elternteil angehören. Und tatsächlich gehören die 12 gruppierten Methoden hier demselben Typ an.
Die Elterntypen dieser 12 Methoden zu finden, wäre ohne Treemapping schwierig gewesen. Nun kann der Codequalitätsprüfer seine Aufmerksamkeit auf diese Region richten, die mehr Mängel zu enthalten scheint als andere Teile der Codebasis.

Top-Down-Codeerkundung
Die CppDepend-Treemap-Metrikansicht unterstützt Vergrößern und Verkleinern. So lässt sich leicht auf ein bestimmtes Projekt, einen Namespace oder eine Klasse zoomen. Dies kann besonders nützlich sein, um das Volumen von Komponenten in Codezeilen zu untersuchen und zu vergleichen.
Produktivität sollte keinesfalls in Codezeilen gemessen werden. Das Zählen von Codezeilen hat sich jedoch – im jeweiligen Kontext einer Organisation – als nützliche Metrik erwiesen, um Software präzise einzuschätzen. Die Funktionen der Codebasis sind gewissermaßen auf Assemblies, Namespaces und Typen aufgeteilt. Mit Treemapping werden diese Artefakte zu nebeneinanderliegenden Rechtecken. Rechtecksflächen, also das Gewicht der Funktionen, lassen sich visuell vergleichen. Die Möglichkeit, die Codegröße regelmäßig per Treemapping zu erkunden, ist eine einzigartige Art, ein präzises Gespür für Funktionsgewicht und Funktionskosten zu entwickeln.
Machen Sie das Experiment und visualisieren Sie die Treemap auf einer Ihnen bekannten Codebasis — Sie werden überrascht sein, unerwartete Feature-Größen zu entdecken.

Beobachtungen zur Codestruktur
Wenn Sie sich für die Verwendung entscheiden Metrikansicht mit einer anderen Metrik als dem Volumen (Codezeilen, Anzahl der Parameter bei Methoden...) oder der Komplexität kann interessante Beobachtungen offenbaren.
Der Rangfolgemetrik ist eine Codemetrik, die die Popularität eines Typs oder einer Methode in einer Codebasis misst. Die Verwendung von Treemapping mit der Ranking-Metrik gibt einen klaren Überblick darüber, wo beliebte Typen deklariert sind. Dies liefert schnell Informationen darüber, was in der Codebasis wichtig ist.
Der Screenshot unten zeigt Typen von Microsoft DLR (Dynamic Language Runtime) Codebasis, mit der Ranking-Metrik als Treemap dargestellt. Die Treemap zeigt, dass CallSite und Ausdruck sind beliebte Konzepte der DLR, und das ist hier tatsächlich der Fall.
Die gleiche Art interessanter Beobachtungen zur Codestruktur kann mit Code-Metriken gemacht werden wie Afferente/Efferente Kopplung oder Stufe.

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