Codemetrikwerte

Mit zunehmender Komplexität moderner Softwareanwendungen erhöht sich auch die Schwierigkeit, den Code zuverlässig und verwaltbar zu halten. 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. Durch die Nutzung von Codemetriken können Entwickler*innen besser verstehen, welche Typen und/oder Methoden überarbeitet oder gründlicher getestet werden sollten. Entwicklungsteams können potenzielle Risiken ermitteln, den aktuellen Status eines Projekts verstehen und den Fortschritt während der Softwareentwicklung nachverfolgen.

Entwickler*innen können Visual Studio verwenden, um Codemetrikendaten zu generieren, mit denen die Komplexität und Verwaltbarkeit ihres verwalteten Codes gemessen wird. Codemetrikendaten können für eine vollständige Projektmappe oder ein einzelnes Projekt generiert werden.

Weitere Informationen zum Generieren von Codemetrikendaten in Visual Studio finden Sie unter Generieren von Codemetrikendaten.

Softwaremessungen

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

  • Wartbarkeitsindex: berechnet einen Indexwert zwischen 0 und 100, der die relative Einfachheit der Verwaltung des Codes darstellt. Ein hoher Wert bedeutet eine bessere Wartbarkeit. Mithilfe farbcodierter Bewertungen können Problemstellen im Code schnell identifiziert werden. Eine grüne Bewertung steht für einen Wert zwischen 20 und 100 und gibt an, dass der Code gut wartbar ist. Eine gelbe Bewertung steht für einen Wert zwischen 10 und 19 und gibt an, dass der Code mäßig gut wartbar ist. Eine rote Bewertung steht für eine Bewertung zwischen 0 und 9 und gibt eine geringe Wartbarkeit an. Weitere Informationen finden Sie unter Wartbarkeitsindexbereich und Bedeutung.

  • Zyklomatische Komplexität: misst die strukturelle Komplexität des Codes. Dazu wird die Anzahl der verschiedenen Codepfade im Fluss des Programms berechnet. Ein Programm mit einem komplexen Ablauf erfordert mehr Tests, um eine gute Code Coverage zu erreichen, und ist schlechter wartbar. Weitere Informationen finden Sie unter Zyklomatische Komplexität.

  • Vererbungstiefe: gibt die Anzahl der verschiedenen Klassen bis hin zur Basisklasse an, die voneinander erben. Die Vererbungstiefe ähnelt der Kopplung zwischen Klassen, da sich eine Änderung in einer Basisklasse auf jede der geerbten Klassen auswirken kann. Je höher dieser Wert ist, desto tiefer ist die Vererbung und desto höher ist damit das Potenzial, dass Änderungen in der Basisklasse zu Breaking Changes führen. Bei der Vererbungstiefe ist ein niedriger Wert gut und ein hoher Wert schlecht. Weitere Informationen finden Sie unter Vererbungstiefe.

  • Kopplung zwischen Klassen: misst die Kopplung mit eindeutigen Klassen über Parameter, lokale Variablen, Rückgabetypen, Methodenaufrufe, generische oder Vorlageninstanziierungen, Basisklassen, Schnittstellenimplementierungen, für externe Typen definierte Felder und Attributdekorationen. Ein guter Softwareentwurf schreibt vor, dass Typen und Methoden eine hohe Kohäsion und eine geringe Kopplung aufweisen sollten. Eine hohe Kopplung deutet auf einen Entwurf hin, der aufgrund seiner vielen Abhängigkeiten von anderen Typen nur schwierig wiederverwendet und gewartet werden kann. Weitere Informationen finden Sie unter Kopplung zwischen Klassen.

  • Zeilen von Quellcode: gibt die genaue Anzahl von Zeilen im Quellcode in der Quelldatei an, einschließlich leerer Zeilen. Diese Metrik ist seit Visual Studio 2019 Version 16.4 und Microsoft.CodeAnalysis.Metrics (2.9.5) verfügbar.

  • Zeilen von ausführbarem Code: gibt die ungefähre Anzahl ausführbarer Codezeilen oder Vorgänge an. Dies ist die Anzahl der Vorgänge in ausführbarem Code. Diese Metrik ist seit Visual Studio 2019 Version 16.4 und Microsoft.CodeAnalysis.Metrics (2.9.5) verfügbar. Der Wert ähnelt in der Regel der früheren Metrik (Codezeilen), die auf MSIL-Anweisungen basiert und im Legacymodus verwendet wird.

Anonymen Methoden

Eine anonyme Methode ist lediglich eine Methode, die keinen Namen hat. Anonyme Methoden werden meistens verwendet, um einen Codeblock als Delegatparameter zu übergeben. Codemetrikergebnisse für eine anonyme Methode, die in einem Member deklariert ist, z. B. eine Methode oder eine Zugriffsmethode, werden dem Member zugeordnet, der die Methode deklariert. Sie werden nicht dem Member zugeordnet, der die Methode aufruft.

Generierter Code

Einige Softwaretools und Compiler generieren Code, der einem Projekt hinzugefügt wird und den Projektentwickler*innen entweder nicht sehen oder nicht ändern sollten. In den meisten Fällen ignorieren Codemetriken generierten Code bei der Berechnung der Metrikwerte. Dadurch spiegeln die Metrikwerte wider, was Entwickler*innen sehen und ändern können.

Code, der für Windows Forms generiert wurde, wird nicht ignoriert, da es sich um Code handelt, den Entwickler*innen sehen und ändern können.