Entwurf und Implementierung eines Plugin-Frameworks zur Quellcode Analyse

Student:Drescher Matthias
Title:Entwurf und Implementierung eines Plugin-Frameworks zur Quellcode Analyse
Type:bachelor thesis
Advisors:Dotzler, G.; Philippsen, M.
State:submitted on August 2, 2011
Prerequisits:

Ein großes Problem beim Umstieg auf Multicore-Rechner besteht darin, dass der sequentielle Quellcode erst aufwändig zur Unterstützung der Parallelverarbeitung umgeschrieben werden muss. Mit bekannten sowie neu zu erarbeitenden Übersetzerbau- und Codeanalysetechniken wird versucht, die erforderliche Parallelisierung automatisch durchzuführen. Da eingebettete Systeme aber oft aus Laufzeit- bzw. Ressourcengründen recht maschinennah programmiert werden, werden in der Regel viele Konstrukte verwendet, die kaum zu analysieren und damit nicht automatisch parallelisierbar sind. Deshalb muss ein Expertensystem entwickelt werden, das dem Programmierer aufzeigt, woran die automatische Parallelisierung genau scheitert. Befolgt er dann die Ratschläge des Expertensystems, soll er seinen Code per Hand so „re-engineeren" können, dass einer parallelen Ausführung auf Multicore-Rechnern nichts mehr im Wege steht.

Das entwickelte Expertensystem soll zusätzlich die Fähigkeit haben allgemeine Ratschläge zur Code-Verbesserung zu geben. Deshalb muss es möglich sein, neue Code-Muster und neue Analysemethoden mit wenig Aufwand in das System zu integrieren.

Topic:

Damit ein solches Unterstützungswerkzeug Konstrukte erkennt, die sich optimieren oder restrukturieren lassen, sind in vielen Fällen Compiler-Analysen nötig. Da je nach Anwendungsdomäne unterschiedliche Analysen zum Einsatz kommen können, müssen Nutzer des Expertensystem bei Bedarf neue Analysen selbständig hinzufügen können. Deshalb soll in dieser Arbeit eine flexible Plugin-Schnittstelle entwickelt werden, die es erlaubt, möglichst einfach neue Plugins für das System zu entwickeln. Dabei ist darauf zu achten, dass die Analysen der Plugins den AST nicht verändern und die Ergebnisse in eigenen Strukturen speichern. Um zu verhindern, dass bei kombinierten und komplexen Analysen Ergebnisse auf denselben Code-Stücken doppelt berechnet werden, ist eine Plugin-Verwaltung zu implementieren, die sich um die Interaktion der Plugins und die Organisation der Ergebnisse kümmert.
Zur Evaluation der Schnittstelle sind mehrere Plugins zu erstellen, die Standard-Analysen des Übersetzerbaus umsetzen. Unter anderem soll jeweils ein Plugin zur Erstellung einer Definitionstabelle, zur Typberechnung und zum Aufbau eines Dominatorbaumes implementiert werden. Die Plugins sollen sprachunabhängig auf einem AST, in einer im Expertensystem verwendeten Zwischensprache arbeiten und sich dadurch für die Analyse von C und Java Quellcode eignen.
Im Rahmen der Ausarbeitung soll die Plugin-Schnittstelle genau definiert und diskutiert werden. Weiterhin sollen die Implementierung der Plugin-Verwaltung und der Plugins im Detail beschrieben und damit die Schnittstelle evaluiert werden.

Meilensteine:

  • Definition der Plugin-Schnittstelle zur flexiblen Einbindung von Analysen in das Expertensystem
  • Implementierung einer Plugin-Verwaltung
  • Implementierung eines Plugins zum Aufbau einer Definitionstabelle
  • Implementierung eines Plugins zur Typberechnung
  • Implementierung eines Plugins zum Aufbau eines Dominatorbaumes
  • Implementierung weiterer Plugins zur Evaluation der Schnittstelle
  • Evaluation
  • Ausarbeitung.

Literatur:

watermark seal