Sdílet prostřednictvím


Übersicht über Codemetrik

Aktualisiert: November 2007

Bei der Codemetrik handelt es sich um eine Reihe von Softwaremaßstäben, die Entwicklern einen besseren Einblick in den von ihnen entwickelten Code bieten. Die Codemetrikergebnisse vermitteln Entwicklern ein Verständnis dafür, welche Typen und/oder Methoden überarbeitet oder gründlicher getestet werden sollten. Entwicklerteams können potenzielle Risiken erkennen, den aktuellen Zustand eines Projekts feststellen und den Fortschritt bei der Softwareentwicklung verfolgen.

Softwaremaßstäben

Die folgende Liste enthält die von Visual Studio berechneten Codemetrikergebnisse:

  • Wartbarkeitsindex – Berechnet einen relativen Indexwert zwischen 0 und 100, der angibt, wie einfach der Code zu verwalten ist. Ein hoher Wert steht für bessere Verwaltbarkeit. Die Berechnung basiert auf dem Halstead/Volumen, der zyklomatischen Komplexität und Codezeilen. Mit farbcodierten Bewertungen können problematische Stellen im Code schnell ermittelt werden. Eine grüne Bewertung liegt zwischen 20 und 100 und gibt an, dass der Code über ein gute Wartbarkeit verfügt. Eine gelbe Bewertung liegt zwischen 10 und 19 und gibt an, dass der Code über eine mäßige Wartbarkeit verfügt. Eine rote Bewertung liegt zwischen 0 und 9 und gibt eine niedrige Wartbarkeit an.

  • Zyklomatische Komplexität – Misst die strukturelle Komplexität des Codes. Wird durch Berechnen der Anzahl verschiedener Codepfade im Programmfluss erstellt, wie z. B. if-Blöcke, switch-case-Anweisungen, und do-, while-, foreach- und for-Schleifen. Anschließend wird 1 zur Gesamtsumme addiert. Für ein Programm mit komplexer Ablaufsteuerung sind mehr Komponententests erforderlich, um eine gute Codeabdeckung zu erzielen, und auch die Verwaltbarkeit verschlechtert sich.

  • Vererbungstiefe – Gibt die Anzahl der Klassendefinitionen an, die sich bis zum Stamm der Klassenhierarchie erstrecken. Je tiefer die Hierarchie, umso schwieriger ist u. U. zu erkennen, wo bestimmte Methoden und Felder definiert oder/und neu definiert werden. Auf Klassenebene wird die Anzahl erstellt, indem die Anzahl der Typen berechnet wird, die sich in der Vererbungsstruktur (beginnend bei 0) oberhalb des Typs befinden, wobei Schnittstellen ausgeschlossen werden. Auf Namespace- und Projektebene besteht die Berechnung aus der Berechnung der höchsten Vererbungstiefe aller Typen innerhalb des Namespace oder Projekts.

  • Klassenkopplung – Misst die Kopplung an eindeutige Klassen durch Parameter, lokale Variablen, Rückgabetypen, Methodenaufrufe, generische oder Vorlageninstanziierungen, Basisklassen, Schnittstellenimplementierungen, für externe Typen definierte Felder sowie Attributdekorationen. Die Berechnung schließt primitiven und integrierte Datentypen, z. B. int32, Zeichenfolge und Objekt, aus. Gute Softwareentwürfe zeichnen sich durch Typen und Methoden mit hoher Kohäsion und loser Kopplung aus. Eine enge Kopplung deutet auf einen Entwurf hin, der aufgrund zahlreicher gegenseitiger Abhängigkeiten zwischen anderen Typen nur schwer wiederzuverwenden und zu verwalten ist.

  • Codezeilen – Gibt die ungefähre Anzahl von Zeilen im Code an. Da die Anzahl auf dem IL-Code basiert, entspricht der Wert nicht der exakten Anzahl von Zeilen in der Quellcodedatei. Die Berechnung schließt Leerstellen, Kommentare, geschweifte Klammern und die Deklarationen von Membern, Typen und Namespaces aus. Ein sehr hoher Wert kann darauf hinweisen, dass ein Typ oder eine Methode zu viele Aufgaben ausführt und aufgeteilt werden sollte. Er könnte auch darauf hindeuten, dass der Typ oder die Methode schwer zu verwalten ist.

Anonyme Methoden

Eine anonyme Methode ist einfach eine Methode ohne Namen. Anonyme Methoden werden am häufigsten verwendet, um einen Codeblock als Delegatparameter zu übergeben. Metrikergebnisse für eine anonyme Methode, die in einem Member deklariert ist, z. B. als Methode oder Accessor, sind mit dem Member verknüpft, der die Methode deklariert. Mit dem Member, der die Methode aufruft, sind sie nicht verknüpft.

Weitere Informationen dazu, wie anonyme Methoden in der Codemetrik behandelt werden, finden Sie unter Anonyme Methoden und Codeanalyse.

Generierter Code

Einige Softwaretools und -compiler generieren Code, der einem Projekt hinzugefügt wird und für den Projektentwickler entweder nicht sichtbar ist oder von ihm nicht geändert werden sollte. In den meisten Fällen wird generierter Code bei der Berechnung der Metrikwerte von der Codemetrik ignoriert. Auf diese Weise spiegeln die Metrikwerte nur den Code wider, der vom Entwickler eingesehen und geändert werden kann.

Für Windows Forms generierter Code wird nicht ignoriert, da dieser Code vom Entwickler angezeigt und geändert werden kann.

Fenster Codemetrikergebnisse

Nachdem der Code von Visual Studio analysiert wurde, werden die Ergebnisse im Fenster Codemetrikergebnisse angezeigt. Das Fenster verfügt über eine Symbolleiste im oberen Bereich sowie über Spalten, in denen die berechneten Ergebnisse angezeigt werden.

In der Spalte Hierarchie wird eine Strukturansicht der Codehierarchie angezeigt, die Sie je nach gewünschter Detailebene erweitern oder reduzieren können. In den übrigen Spalten werden die berechneten Ergebnisse angezeigt. Sie können die Ergebnisspalten beliebig ausblenden oder anordnen. Weitere Informationen hierzu finden Sie unter Gewusst wie: Hinzufügen, Entfernen oder Neuanordnen von Spalten.

Die Spalte Verwaltbarkeit enthält zusätzlich zum numerischen Ergebnis ein Symbol. Ein grünes Symbol weist auf einen relativ hohen Grad an Verwaltbarkeit hin. Ein gelbes Symbol gibt eine mäßige Verwaltbarkeit an. Ein rotes Symbol deutet auf geringe Verwaltbarkeit und potenzielle Problemstellen hin. Diese Farbindikatoren entsprechen Schweregradkategorien, die von der FxCop-Regel AvoidUnmaintainableCode verwendet werden. Bei einem Wartbarkeitsindex unter 10 wird von dieser Regel ein Fehler ausgelöst, zwischen 10 und 20 eine Warnung und über 20 keines von beidem. Der Wartbarkeitsindex ist eine Synthese aus drei Metriken: zyklomatische Komplexität, Anzahl der Codezeilen und Rechenkomplexität. Seine Werte werden nicht in Einheiten ausgedrückt.

Sie können die Ergebnisse im Fenster nach einer beliebigen Spalte sortieren. Klicken Sie dazu auf die Spaltenüberschrift. Klicken Sie erneut auf die Spaltenüberschrift, um das Fenster in umgekehrter Reihenfolge zu sortieren.

Siehe auch

Weitere Ressourcen

Messen von Komplexität und Verwaltbarkeit verwalteten Codes