Code Metrics in Visual Studio

In diesem kurzen Artikel möchten wir dir die Code Metrics Funktion von Visual Studio näher bringen. Für diesen Artikel verwenden wir die Visual Studio 2015 Community Edition. Dieses Tool analysiert deinen geschriebenen Code und gibt dir Feedback über den Zustand deiner geschriebenen Klassen und Methoden. Das Tool erreichst du über Analyze -> Calculate Code Metrics -> For [Projektname]. In unserem Beispiel lautet das Project Arc14



Nach kurzer Zeit (abhängig von Projektgröße) erhältst du am unteren Bildschirmrand das Ergebnis:


Über die Hierarchie kannst du das Ergebnis auf Namespace-, Klassen- oder bis auf Methodenebene herunterbrechen.


Was bedeuten diese Zahlen jetzt?

Maintainability Index:
Eine Zahl zwischen 0 und 100 gibt die Wartbarkeit des Codes an. Je höher umso besser. Zwischen 20 und 100 ist alles im grünen Bereich, 10 – 19 ist gerade noch OK.
Unter 10 wird Rot dargestellt und als kritisch gewertet, hier besteht Handlungsbedarf!
Dieser Wert errechnet sich aus den anderen Parametern und sogenannten Halstead complexity measures

Cyclomatic Complexity:
Dieser Wert wird auf Methoden-Ebene errechnet und gibt die strukturelle Komplexität wider. Je mehr Wege ein Code durchlaufen kann (If- Statements, Schleifen, switch/case Anweisungen) umso höher seine Komplexität. Eine Methode ohne solche Verzweigungen hat eine Komplexität von 1.
Gewertet wird wie folgt: 1-10 grün, 11-20 noch ok, >20 kritisch.
Auf diesen Wert sollte man besonders Wert legen. Eine zu hohe Komplexität erschwert das Testen und mehrfach verschachtelte Schleifen machen den „Lesefluss“ zunichte.

Depth of Inheritance:
Je tiefer die Vererbung umso höher der Wert. Eine flache Hierarchie wird als besser eingestuft: 1-2 grün, 3-4 noch ok, >4 kritisch.
Bei einer zu tiefen Vererbung sollte das Klassendesign überdacht werden.

Class Coupling:
Misst die Verknüpfungen von verschiedenen Klassen. Auch die Verwendung von Methoden oder Interfaces wird hier mit berücksichtigt. Es gilt als gute Programmierpraxis eine möglichst niedrige „Kupplung“ zwischen seinen Klassen zu haben.
Auch hier gilt, je niedriger der Wert, umso besser: 0-9 grün, 10-30 auf member-Level oder 10-80 auf Typ-Level ok, >30 bzw. >80 kritisch.

Lines of Code:
Diese Kennzahl gibt die Anzahl an Codezeilen an. Allerdings nicht die, die du selber geschrieben hast, sondern die des IL-Codes der von dem Compiler erstellt wird. Kommentare oder Leerzeilen werden also nicht berücksichtigt.
Besteht eine Methode aus zu vielen Zeilen, so weist das darauf hin, dass diese Methode mehr als nur den vorgesehenen Zweck erfüllt und daher überarbeitet werden sollte.
Als Richtwert gilt: 1-10 grün, 10-20 noch ok, >20 kritisch.