Interaktive Berichte zur Transformation Ihrer Code-Metriken

Interaktive Berichte zur Transformation Ihrer Code-Metriken

Understand 7.0s neue interaktive Berichte verwandeln rohe Code-Metriken in aufschlussreiche und ansprechende Visualisierungen und bieten Anpassungsoptionen, um die Analyse auf Ihre spezifischen Bedürfnisse zuzuschneiden und die wahre Geschichte hinter Ihrem Code zu enthüllen.

Ich möchte, dass mein Code dieses Jahr besser wird. Großartig! Was bedeutet „besser“? Um meinen Fortschritt zu verfolgen, benötige ich eine Möglichkeit, meinen Code zu messen. Hier kommen die Metriken von Understand ins Spiel. Understand bietet viele integrierte Metriken, von einer einfachen Zeilenzählung bis zur zyklomatischen Komplexität.

Allerdings würden Zahlen allein mich nicht bei der Stange halten. Das Problem ist die Präsentation. Ich kann mit ganzem Herzen wissen, dass es gut für mich ist, Gemüse zu essen, aber bis es als Salat oder anderes Gericht präsentiert wird, esse ich es nicht. Hier kommen die neuen interaktiven Berichte von Understand 7.0 ins Spiel. Sie sind die „köstlichen Gerichte“, die Ihre Code-Metriken sowohl aufschlussreich als auch ansprechend machen – und genau wie ein guter Koch können Sie diese „Gerichte“ nach Ihrem Geschmack anpassen. In diesem Artikel werden wir untersuchen, wie Sie diese anpassbaren Berichte nutzen können, einschließlich der Erstellung eigener Plugins, um sie genau auf Ihre Bedürfnisse zuzuschneiden, damit Sie Ihren Code visualisieren und verstehen können, über rohe Zahlen hinaus, um die wahre Geschichte hinter Ihren Metriken zu enthüllen.

Inspiration für Inhalte

Wie oben erwähnt, interessiert mich in diesem Artikel die Präsentation mehr als der Inhalt. Daher werde ich meine Inspiration für Inhalte aus einigen bestehenden Ansichten von Understand nehmen. Lassen Sie uns kurz alle vorhandenen Metrikberichte und -ansichten in Understand besuchen:

  • Die offensichtlichste Metrikansicht ist die Willkommensseite mit ihrem Diagramm zur Aufschlüsselung der Zeilen, dem Diagramm der komplexesten Funktionen und dem Diagramm zur Verzeichnisstruktur nach Codezeilen.
  • Die Projekt-Startseite erweitert diese mit weiteren Diagrammen, viele davon in Bezug auf Codezeilen und Komplexität.

Von diesen Standardseiten ausgehend, sind die sichtbarsten Ansichten der Metriken der Metrik-Browser und der CSV-Export der Metriken, beide zugänglich über das Metrik-Menü. Es gibt auch einen etwas weniger sichtbaren HTML-Export der Metriken, der über den Metrik-Browser zugänglich ist. Alle drei Ansichten sind umfassend und zeigen alle aktivierten integrierten Metriken in der Projekt-Konfiguration und alle aktivierten Metrik-Plugins an.

Schließlich gibt es in den klassischen Berichten Metriktabellen. Diese Berichte, obwohl sie in die Jahre gekommen sind, sind beliebt genug, um immer wieder in der Anwendung aufzutauchen, trotz wiederholter Versuche, sie zu entfernen oder zu ersetzen. Die Übersichtsseite der HTML-Berichte hat Metrikdiagramme, die eine frühere Version der Diagramme auf der Projekt-Startseite sind. Es gibt auch fünf Metrikberichte, zumindest für mein OpenSSL-Projekt.

Line Metrics Report Plugin

Quellcodezeilen (SLOC) und andere Zeilenzählmetriken sind ein großartiger Ausgangspunkt für mein erstes neues Plugin. Sie stehen in Beziehung zu Zeit, Kosten und sogar zur Codequalität. Hier ist mein Gedankengang:

  • Zeilen -> Zeit -> Geld. Je mehr Zeilen vorhanden sind, desto mehr Zeit erwarte ich, um den Code zu verstehen, zu ändern, zu nutzen oder zu reparieren. Und Zeit ist natürlich Geld.
  • Zeilen bringen Bedeutung in Architekturen (Gruppen). Understand lässt Sie Ihren Code in Architekturen gruppieren. Zum Beispiel kann Understand Ihren Code nach Lizenztyp mit einem automatischen Architektur-Plugin gruppieren. Aber die Architektur selbst ist für mich nicht sehr nützlich, bis ich sie nutzen kann, um zu wissen, wie viel von meinem Projekt zu jedem Lizenztyp gehört. Zeilenmetriken beantworten diese Frage.
  • Zeilen deuten auf Qualität hin. Eine sehr lange Funktion oder eine sehr lange Datei ist wahrscheinlich schwer zu verstehen. Das Verhältnis von Kommentar zu Code steht ebenfalls in Zusammenhang mit der Qualität.

Wie kann ich also Zeilenmetriken präsentieren? Ich werde einige Elemente aus den vorhandenen Displays in Understand übernehmen:

  • Diagramm – Ich mag das Diagramm zur Aufschlüsselung der Zeilen von der Willkommensseite und der Projekt-Startseite. Es gibt einen schnellen, grafischen Überblick.
  • Tabellen – Ich mag die Tabellenansicht der klassischen Berichte, um Zeilendetails anzusehen. Und interaktive Berichtstabellen können noch cooler sein mit der Hinzufügung von Filtern.
  • Hierarchie – Ich mag die Idee, tiefer in einen interessanten Punkt eintauchen zu können. Also ist die Baumstruktur des HTML-Exports der Metriken eine nützliche Struktur. Aber sie nimmt zu viel Platz ein und zeigt zu viele Informationen. Daher wurden interaktive Berichte mit einem Brotkrümelsystem von Seiten im Sinn gebaut, inspiriert von lcov-Abdeckungsberichten.

Das resultierende Line Metric Interactive Report-Plugin kann auf jede Architektur (oder Datei oder das gesamte Projekt) angewendet werden, zeigt das Diagramm zur Aufschlüsselung der Zeilen für die aktuelle Ebene, zeigt eine Tabelle, die alle Kinder und ihre Werte anzeigt, und navigiert die Architekturhierarchie unter Verwendung der Kindernamen in der Tabelle, um tiefer zu graben, und der Brotkrumen oben, um zurückzukehren. Sie können diese neuen Berichte im Plugin-Manager in Understand aktivieren.

Komplexitätsmetriken

Die nächst häufigsten Metriken sind Komplexitätsmetriken. Zyklomatische Komplexität wird verwendet, um zu sehen, wie schwer Code zu testen ist. Je mehr Entscheidungspunkte, desto mehr Testfälle müssen geschrieben werden, um sie alle zu üben. Mehr Entscheidungspunkte können auch dazu führen, dass Code schwerer zu verstehen und zu warten ist. Daher kommt die McCabe-Zyklomatische Komplexität mit empfohlenen Schwellenwerten, und Standards wie die Herstellerinitiative Software (HIS) Metriken empfehlen ebenfalls Schwellenwerte.

Das Tolle an interaktiven Berichten ist, dass Python-Plugins leicht angepasst werden können. Also kann ich meinen Line Metrics-Bericht nehmen und ein paar Änderungen vornehmen, um ihn in einen Komplexitätsbericht umzuwandeln. Zuerst werde ich das Diagramm zur Aufschlüsselung der Zeilen durch das Diagramm der „komplexesten Funktionen“ von der Willkommensseite und der Startseite ersetzen.

Dann werde ich die Zeilenmetriken der Funktion durch Komplexitätsmetriken der Funktion ersetzen, einschließlich des Cognitive Complexity-Metrik-Plugins, weil ich denke, dass es cool ist. Schließlich werde ich die Datei- und Architekturmetriken austauschen, aber Komplexitätsmetriken haben nicht die gleichen Namen für Dateien und Architekturen wie Zeilenmetriken. Dateien und Architekturen können das Maximum, die Summe oder den Durchschnitt der Komplexitätswerte für die Funktionen in ihnen melden. Ich werde standardmäßig die Summe verwenden.

Der „Complexity Metrics“-interaktive Bericht für GitAhead (verfügbar im Plugin-Manager)

Andere Berichte

Nun, das macht Spaß. Welchen Bericht soll ich als nächstes machen? An diesem Punkt habe ich alle Informationen in drei der klassischen Berichte und zwei Drittel der Diagramme der Willkommensseite integriert. Ich könnte das Äquivalent des CSV-Exports der Metriken oder des HTML-Berichts der Metriken machen. Ich müsste nur einen meiner vorherigen zwei interaktiven Berichte nehmen und jede mögliche Metrik hinzufügen. Aber das klingt überwältigend und hässlich.

Also mache ich die Metriken aus dem „File Averages“-Bericht. Die Metriken sind eine Mischung aus Komplexitäts- und Zeilenmetriken, also sind sie bereits aus den zwei vorherigen Berichten verfügbar. Aber jemand muss gedacht haben, dass sie zusammen cool wären. Das macht meinen Tisch, aber was soll ich für ein Diagramm machen? Ich habe noch kein Zwei-Metrik-Diagramm gemacht, also probieren wir eines davon. Ich mache die Größe nach AvgCountLine und die Farbe nach AvgCyclomatic und lasse das Layout als flache Blasen, da ich den Kontrast von Kreisen mit dem quadratischen Tisch unten mag.

Schlussfolgerung

Die integrierten Metrikansichten von Understand sind großartige Ausgangspunkte, um Metriken zu erkunden. Aber der wahre Spaß und die Macht kommen von der Anpassung. Wählen Sie die Metriken, die Sie möchten, für die Entitäten, die Sie möchten, auf Ihre Weise angezeigt. Beschränken Sie sich nicht auf CSV-Datenexporte oder veraltete HTML-Berichte. Nutzen Sie interaktive Berichte, um Ihre Daten auf Ihre Weise zu erhalten, komplett mit Diagrammen, Tabellen, mehreren Seiten und Synchronisation mit anderen Understand-Ansichten.