Wenn jemand SPOON API verwendet, können Sie mir einen Hinweis geben, wie Call-Graph erstellen und was ich tun muss?Wie Erstellen von Call-Graph mit SPOON API
Ich denke, dass ich einige Prozessor wie diese erstellen müssen: für Lauf analysieren
public void getCallers(){
final Launcher launcher = new Launcher();
launcher.setArgs("-i D:\\IntelliJ_projects\\ComprehensionTool\\ -p comprehensionTool.analyse.processor.InvocationProcessor".split(" "));
launcher.run();
}
public class InvocationProcessor extends AbstractProcessor<CtInvocation> {
@Override
public void process(CtInvocation element) {
System.out.println(element.getActualTypeArguments());
}
}
und verwenden Sie dann Launcher, aber ich bin nicht sicher, es ... und ich möchte zu fragen, brauche ich einige spezielle Abhängigkeiten für die Verwendung von Launcher?
Ich gehe davon aus, dass ich falsch bin, denn wenn ich es diesen Fehler Wurf ausgeführt:
Exception in thread "main" java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.batch.Main.<init>(Ljava/io/PrintWriter;Ljava/io/PrintWriter;ZLjava/util/Map;Lorg/eclipse/jdt/core/compiler/CompilationProgress;)V
at spoon.support.compiler.jdt.JDTBatchCompiler.<init>(JDTBatchCompiler.java:58)
at spoon.support.compiler.jdt.JDTBatchCompiler.<init>(JDTBatchCompiler.java:54)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.createBatchCompiler(JDTBasedSpoonCompiler.java:352)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.createBatchCompiler(JDTBasedSpoonCompiler.java:356)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildUnits(JDTBasedSpoonCompiler.java:388)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildUnitsAndModel(JDTBasedSpoonCompiler.java:372)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildSources(JDTBasedSpoonCompiler.java:348)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:119)
at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:102)
at spoon.Launcher.buildModel(Launcher.java:700)
at spoon.Launcher.run(Launcher.java:651)
Ok, aber hast du die Abhängigkeit für jdt-core hinzugefügt? Nebenfrage: Gibt es einen Grund für Sie, die Version 5.6.0 von Spoon zu verwenden? Ich empfehle Ihnen, die neueste Version zu verwenden: 5.5.0. –
Ja, ich habe es hinzugefügt, aber es gab ein anderes Problem mit Abhängigkeiten ... Jetzt funktioniert es gut. Vielen Dank. – Ondrej11