2017-07-06 5 views
0

Für eine Weile habe ich mit der Erstellung eines Control-Flow-Diagramm mit Soot kämpfen und ich war irgendwie verloren in seiner tutorials. Anstatt Soot als Eclipse-Plugin zu verwenden, habe ich versucht, Soot als Bibliothek oder API zu verwenden.Wie erstellt man ein Kontrollflussdiagramm mit Soot?

Was ich tun möchte, ist, ich habe eine Reihe von Java-Projekten, und ich möchte ein Steuerelement-Flow-Diagramm dieser Projekte erstellen/generieren. Ich habe auch gesehen, dass es in Soot ein Feature gibt, mit dem ich Kontrollflussdiagramme im "DOT" -Format erstellen kann, was auch für mich akzeptabel ist.

Jede Anleitung oder Beispielcode, der zeigt, wie man ein Kontrollflussdiagramm mit Soot erstellt/erzeugt, wäre großartig!

Antwort

1

Sie können eine methodenlokale CFG erstellen, indem Sie einfach einen neuen ExceptionalUnitGraph erstellen und ihn an SootBody übergeben. Das Soot Tutorial im Wiki zeigt dir, wie das geht.

Um eine interVerfahrens CFG zu erhalten, das heißt, eine ICFG, können Sie die Soot Erweiterung Heros verwenden: https://github.com/Sable/heros/blob/develop/src/heros/InterproceduralCFG.java

+0

Sie für die Antwort danken. Allerdings habe ich mich gefragt, ob es eine Option gibt, das Java-Projekt als Eingabe zu geben und die Ausgabe als CFG zu erhalten. Denn was ich vom Javadoc gesehen habe, ist, dass ich jede Klasse als SoutClass und jede Methode als SootMethod zuweisen muss. Oder bin ich vielleicht auf dem falschen Weg? – Ekin

+0

Ja, Sie scheinen missverstanden zu haben. Soot konvertiert Klassen automatisch in SoutClasses. Bitte schauen Sie sich die Tutorials im Wiki auf Github an. – Eric

+0

Ich habe die Tutorials im Wiki auf Github verfolgt. Zuerst habe ich versucht, Soot auf der Kommandozeile auszuführen, indem ich den Anweisungen unter https://github.com/Sable/soot/wiki/Introduction:-Soot-as-a-command-line-tool folge. Es ist wichtig zu erwähnen, dass ich Soot auf Win7 laufen lasse. Wenn ich den gegebenen Befehl 'java -cp soot-2.5.0.jar soot.Main -cp. -process-dir .. \ MyProject' Ich bekomme einen 'Fehler beim Laden von java.util.regex.Pattern'. Wenn ich es jedoch mit '-pp' verwende, dann bekomme ich eine' Konnte Klassendatei nicht laden: java.io.ObjectInputStream' und leider konnte ich keinen Weg finden, um über die Probleme hinwegzukommen. – Ekin

Verwandte Themen