C# - Quellcode - Analyzer


Überblick

Der C#-Analyzer ist im Rahmen einer Bakkalaureatsarbeit entstanden und analysiert C#-Quellcode mit Hilfe des CoCo/R Compiler-Gernerators, der am SSW entwickelt wurde. Dazu wurde eine C#-Grammatik, die ebenfalls vom SSW erstellt wurde, attributiert um die gewünschten Quellcodemetriken zu berechnen. Diese Informationen werden dann in geeigneten Datenstrukturen gespeichert und dem Benutzer in einer grafischen Oberfläche präsentiert. Dort hat der Benutzer auch die Möglichkeit, die Informationen zu exportieren (per Kommentar in den Quellcode oder in eine seperate Datei). Alternativ dazu existiert eine Kommandozeilen-Oberfläche, in der der C#-Analyzer alle berechneten Kennzahlen und Metriken als Liste ausgibt.


Berechnete Kennzahlen und Metriken:

  • Lines of Code
    • Codezeilen
    • Kommentarzeilen
    • Leerzeilen
    • Gesammtzeilen
    • Verhältnis Kommentarzeilen / Codezeilen
  • Codezeichen
    • Codezeichen
    • Kommentarzeichen
    • "Leer"-zeichen (Whitespaces)
    • Gesamtzeichen
    • Verhältnis Kommentarzeichen / Codezeichen
  • Anzahl der Anweisungen
  • Anzahl der Schleifen, geordnet nach Typ
  • Anzahl der Verzweigungen
  • Anzahl der Namespaces, Klassen, Felder, Methoden
  • Durchschnittliche und Maximale Anzahl der Parameter von Methoden
  • Durchschnittliche und Maximale Anzahl der lokalen Variablen von Methoden
  • Anzahl der Methodenaufrufe, die in einer Methode gemacht werden
  • Schätzung der Anzahl, wie oft eine Methode aufgerufen wird
  • Anzahl der Schlüsselwörter und Operatoren
  • Durchschnittliche und Maximale Schachtelungstiefe von Anweisungeblöcken
  • DIT (depth of inheritance tree) Vererbungstiefe von Klassen
  • NOC (number of children) Anzahl der Kindern von Klassen
  • Komplexitätsmaße nach
    • McCabe
    • Rechenberg
    • Halstead
    • Henry & Kafura

All diese Kennzahlen werden, soweit sinnvoll, für Methoden, Klassen, Namespaces und die gesamte Datei getrennt berechnet. Man kann sich somit z.B. die Anzahl der Zeilen einer Klasse anzeigen lassen, oder auch die Gesamtanzahl der Zeilfen für dieselbe Klasse mit allen Methoden und inneren Klassen. Für Komplexitätsmaße werden für Klassen, Namespaces und die Datei der Durchschnitts- und der Maximalwert berechnet.


Screenshot:

Screenshot von C#-Analyzer

Downloads:

Bakkalaureatsarbeit
Sourcecode (+ CoCo/R zur compilieren der ATG + Visual Studio .NET Projekt)
Ausführbare Datei