Analyse von C#-Quellcode

Dieses Projekt ist als Bakkalaureatsprojekt (Studienkennzahl 521) gedacht.


Im Rahmen eines Projektes [1] mit der Shared Source Implementierung der Common Language Infrastructure (CLI) (Codename Rotor) [2] wurde der Compilergenerator Coco/R [3] dahingehend erweitert, dass er nun nicht mehr nur LL(1)-Grammatiken verwenden, sondern auch Schritte zur Auflösung von LL(1)-Konflikten setzen kann.

Für diese Version von Coco/R wurde auch eine attributierte Grammatik (ATG) für die Programmiersprache C# [4] entwickelt, aus der Coco/R einen vollständigen Top-Down-Parser für C#-Programme erzeugt. Durch Einfügen zusätzlicher semantischer Aktionen in diese Vorlage können nun beliebige Analyse- bzw. Compilerwerkzeuge für C#-Quellcode erzeugt werden.

Ziel

Das Ziel dieser Arbeit ist es, die C#-Grammatik-Vorlage so zu attributieren und mit semantischen Aktion zu versehen, dass der daraus generierte Parser aus C#-Programmen verschiedenste Quellcode-Metriken und andere interessante Eigenschaften (eigene Ideen sind willkommen) berechnet.
Hier einige Beispiele:

  • Lines of Code (mit/ohne Leerzeilen, Kommentare)
  • Anzahl der Anweisungen
  • Anzahl der Schleifen
  • Anzahl der Klassen, Methoden, Felder, Properties, ...
  • Anzahl der Parameter von Methoden
  • Anzahl der Methodenaufrufe
  • Anzahl des Auftretens der verschiedenen Schlüsselworte, Operatoren, ...
  • Durchschnittliche bzw. maximale Schachtelungstiefe von Anweisungsblöcken
  • Komplexitäsmaße nach
    • McCabe
    • Rechnenberg
    • McCall
    • Halstead
    • Levitin
    • Oviedo
    • Constantie & Yourdon
    • Henry & Kafura
    • ...
  • ...

Weitere Informationen zum Ergebnis

Referenzen

[1] SSCLI-Project: Compiler Generation Tools for C#
[2] .NET Rotor (SSCLI)
[3] Compiler Generator Coco/R
[4] C# Language Specification

Betreuer: Dipl.-Ing. Markus Löberbauer
Beginn der Arbeit: 2005-05-24
Bearbeiter: Thrainer Thomas (0356015)