PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Codeanalyse, wie?


HellHorse
2004-07-25, 15:53:17
Hi

Folgendes Problem:
Ich muss Java Code analysieren. Ob Source- oder Bytecode als Ausgangspunkt ist egal. Das heisst ich kann nehmen, was einfacher geht. Im Moment sieht es so aus, als wäre es Sourcecode. Ich suche ein nun Tool, mit dem dies möglichst einfach geht.

Konkret gehts um folgendes:
Methoden nach bestimmen Methodenaufrufen druchforsten.
Die Parameter rausfinden, die obigen Methoden übergeben würden.
Rausfinden wie diesen Parmetern Werte zuwegiesen wurden. Falls es ein Rückgabewert einer Methode war, die Methode und die Klasse rausfinden.

Idee Nummer 1 war den AST des JDT (Eclipse) zu verwenden. Sieht ganz nett aus, und lässt sich problemlos ausserhalb von Eclipse einsetzen.
Allerdings scheitert es jedoch schon an folgendem Code aus der Doku.

Document doc = new Document("import java.util.List;\nclass X {}\n");
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(doc.get().toCharArray());
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.recordModifications();
AST ast = cu.getAST();
...

Das Problem ist das Document, ich vermute es ist ein org.eclipse.jface.text.Document :bonk:
Diese Klasse taucht zwar in der Doku auf, liegt aber weder der jfacetext.jar noch der jfacetextsrc.zip bei, die mit Eclipse kamen (3.0).

Als nächstes habe ich mir bcel angeschaut. Das scheint aber für meinen Verwendungszweck zu low-level zu sein.

Dann fand ich folgede Übersicht:
http://www.program-transformation.org/Transform/JavaAbstractSyntax
SableCC ist nun der oberste Kandidat auf der Liste.

Anmerkungen, Erfahrungen, Ideen, Vorschläge?