CodeSurfer ist ein kommerzielles Tool zur Programmanalyse. Damit kann man ein bestehendes C Projekt über Methodengrenzen hinweg analysieren und sich z.B. anzeigen lassen welche Eingaben eine bestimmte Berechnung beeinflussen können, welche Auswirkungen eine if-Anweisung hat, usw.
Zu diesem Zweck erstellt CodeSurfer einen sogenannten Systemabhängigkeitsgraphen (System Dependence Graph - kurz SDG). Dieser bildet die Zusammenhänge im Projekt in Form eines Graphen ab. Dabei entsprechen die Knoten den einzelnen Anweisungen (Programmzeilen) und die Kanten zwischen den Knoten sind entsprechende Abhängigkeiten zwischen den Anweisungen.
void main() { int sum = 0; int i = 1; while (i < 11) { sum = add(sum, i); i = add(i, 1); } printf("sum=%d\n", sum); printf("i=%d\n", i); } static int add(int a, int b) { return (a + b); } |
=> |
So kann eine Kante von int i = 1; zu while (i < 11) bedeuten, dass eine Datenabhängigkeit besteht, da die Bedingung der while-Schleife den Wert der Variable i liest, welcher in der anderen Anweisung zuvor gesetzt wurde. Neben Datenabhängigkeiten gibt es noch weitere Abhängigkeiten, wie etwa Kontrollabhängigkeiten, die in SDGs als Kanten dargestellt werden.
Im Rahmen unserer Forschungsarbeit haben wir bereits ein entsprechendes Konvertierungsplugin implementiert. Da inzwischen einiges an CodeSurfer verbessert und erweitert wurde, muss dieses Plugin entsprechend erweitert und optimiert werden.
Aufgabe:
- Einarbeitung in das CodeSurfer Tool
- Konvertieren des CodeSurfer SDGs Formats in unser SDG Format
- Vergleich zwischen CodeSurfer und unserem SDG Tool Joana - welches Format ist besser?
Voraussetzungen
- Interesse an Programmiersprachen, Kenntnisse in Java oder C
- Kenntnisse in Programmanalyse/Compilerbau sind vorteilhaft, aber nicht notwendig
Literatur
- Klassiker zu Systemabhängigkeitsgraphen: Susan Horwitz, Thomas Reps, and David Binkley. 2004. Interprocedural slicing using dependence graphs. SIGPLAN Not. 39, 4 (April 2004), 229-243. http://doi.acm.org/10.1145/989393.989419
- CodeSurfer Homepage: http://www.grammatech.com/products/codesurfer/overview.html
Schlüsselworte
SDG, CodeSurfer, Joana, System Dependence Graph, Program Analysis, Converter, Evaluation Veröffentlichungen
Veröffentlichung |
Konvertierung von Systemabhängigkeitsgraphen aus dem kommerziellen Tool CodeSurfer |
Betreuer
Ehemalige Studenten |
---|
Tobias Blaschke |
Ehemalige Mitarbeiter |
---|
Dr.-Ing. Jürgen Graf |