logo of the SSW institute ;)
Computer Science
System Software

Home

General
Staff
Contact
Partners
Alumni

Research
Areas
Projects
Papers
Books
Reports
Awards

Teaching
Lectures
Exams
B.Projects
M.Theses
PhD Theses
Go Abroad

Misc
Talks
Library
Gallery
Links
Search

Webmaster


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)