C++ Refactoring Support für Eclipse-CDT
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 Arbeit
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.
Diplomarbeitsausstellung an der HSR
Der offizielle Text aus dem Ankündigungsmail: "Am Freitagnachmittag, 15. Dezember 2006, werden zwischen 15.00 - 19.00 Uhr in den Labors der Abteilungen Informatik und Elektrotechnik die Diplomarbeiten gezeigt und vorgeführt. Neu werden die Besucher auch am Samstag, 16. Dezember 2006 von 9.00 - 12.00 Uhr die Gelegenheit haben, die Diplomausstellung der Abteilung Elektrotechnik zu besuchen."
Der Besuch am Samstag ist wohl nicht zu empfehlen, erstens werden dann die Diplomarbeitsplätze der Informatiker verlassen sein und ich bezweifle das um diese Zeit am Morgen viele Elektrotechniker in nüchternem Zustand (Stichwort Christmas Bar) anzutreffen sein werden.
Die offiziele Ankündigung (PDF), die Liste der Informatikarbeiten und die Liste der Arbeiten beider Abteilungen (PDF).
1 Blogpost
Wir sind momentan mit unser Diplomarbeit wieder im Zeitplan. Und damit es nicht immer nur beim trocken jammern über zu wenig Zeit bleibt, habe ich mal ein Screencast online gestellt, weitere werden hoffenflich bald folgen. Unsere Diplomarbeiten werden 15. Dezember am späteren Nachmittag direkt in der "Werkstatt" ausgestellt, mehr dazu ebenfalls zu einerem späteren Zeitpunkt hier.





