BlogKontaktTagcloud

C++ Refactoring Support für Eclipse-CDT

Nur knapp 5 Tage dauert unsere Diplomarbeit noch. Inzwischen ist zumindest unser Broschürentext fertig, den ich hier exklusiv vorab publiziere. Dieser Text wird zusammen mit den Texten der anderen Diplomarbeiten des Fachbereichs Informatik der HSR in der im Januar erscheinenden Diplomarbeitsbroschüre gedruckt. Diese Broschüre erhalten dann die Eltern und andere interessierte Personen wir haben deshalb versucht den Text nicht allzu technisch werden zu lasen. Wer es also genauer wissen will muss an die Diplomarbeitsaustellung kommen.

Aufgabenstellung

Eclipse ist eine professionelle Software-Entwicklungsumgebung. Die Programmiersprache Java wird von Eclipse standardmässig unterstützt, allerdings existiert mit dem CDT (C/C++ Development Tooling) auch eine Erweiterung für die Entwicklung mit den Programmiersprachen C und C++.

Während in den Eclipse Java Development Tools (JDT) verschiedene Refactorings angeboten werden, steht für CDT erst ein automatisiertes Refactoring zur Verfügung.

Unter Refactoring versteht man eine Vorgehensweise in der Softwareentwicklung bei der die Qualität von Quellcode gesteigert wird, ohne dabei dessen Funktionalität zu verändern. Refactoring reduziert mittelfristig den Aufwand für die Fehleranalyse und für funktionale Erweiterun-gen. Refactorings sind in klar definierte Schritte aufgeteilt. Wenn diese automatisch ausgeführt werden können, erleichtert dies die Arbeit der Entwickler und ist deshalb für Entwicklungs-umgebungen ein starker Wettbewerbsvorteil.

Ziel der ArbeitExtract Method Refactoring

Es sollen verschiedene Refactorings implementiert werden um den Entwicklern ihre Alltagsarbeit zu erleichtern. Die Refactorings sollen möglichst viele Eigenschaften von C++ unterstützen, Kommentare und Makros sollen bei den Codetransformationen behandelt werden und wieder richtig zurückgeschrieben werden. Die bestehende Infrastruktur von Eclipse im Allgemeinen und CDT im Speziellen soll verwendet werden und wo nötig erweitert werden.

Lösung

Der bestehende Code des CDT wurde so erweitert, dass die Refactorings „Replace Magic Number with Symbolic Constant“, „Move Field“, „Move Method“, „Extract Subclass“ und „Extract Method“ automatisiert möglich sind.

Durch das Erweitern des Parsers und des Abstract-Syntax-Tree war es uns möglich auch von Eclipse CDT nicht behandelte Codestellen zu parsen und korrekt zu erkennen. Durch diese Erweiterung der bestehenden Infrastruktur können nun auch Kommentare und Makros erkannt und während der Durchführung des Refactorings korrekt behandelt werden.

Damit der Code aus dem Abstract-Syntax-Tree wieder in Quellcode umgewandelt werden kann, wurde ein Codegenerator implementiert.

Um die Refactorings effizient zu testen, wurde das Testingframework JUnit so erweitert, dass die Testdefinitionen aus einer Datei gelesen werden können. Um die Testdefinitionen möglichst einfach zu bearbeiten, wurde ein kleiner Editor für Eclipse entwickelt. Mit CruiseControl wurde die von uns angepasste Version von Eclipse CDT bei jeder Änderung getestet und für sieben verschiedene Plattformen übersetzt.

Ähnliche Beiträge:
Diplomarbeitsausstellung an der HSR
Diplomarbeiten an der HSR
Ruby on Rails Coding Weekend
ROFL Prog 1
I dit it!
Comments (6)  Permalink