Я очень новичок в WALA и стараюсь проработать некоторые простые примеры, чтобы почувствовать это. Я пытаюсь построить граф вызовов для очень простого класса нижеWALA Call Graph
public class Example {
public static void main(String[] args) {
int x = 1;
int y = 1;
int z = x + y;
Math.pow(x, y); // issue here
}
}
Моего кода WALA (упрощенного несколько) является:
import com.ibm.wala.ipa.callgraph.*;
import com.ibm.wala.ipa.callgraph.impl.Util;
import com.ibm.wala.ipa.cha.ClassHierarchy;
import com.ibm.wala.util.WalaException;
import com.ibm.wala.util.config.AnalysisScopeReader;
...
AnalysisScope scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope(jar, null);
ClassHierarchy cha = ClassHierarchy.make(scope);
Iterable<Entrypoint> entryPoints = Util.makeMainEntrypoints(scope, cha);
AnalysisOptions opts = new AnalysisOptions(scope, entryPoints);
AnalysisCache cache = new AnalysisCache();
CallGraphBuilder cgBuilder = Util.makeZeroCFABuilder(opts, cache, cha, scope);
CallGraph cg = cgBuilder.makeCallGraph(opts, null);
Он отлично работает, когда пример не имеет никаких вызовов к другим методам внутри основного, но просто зависает иначе (застрял cgBuilder.makeCallGraph
).
Любые советы очень ценятся.
У вас есть импорт в вашем примере java-файла? –
Я этого не сделал, но добавил 'import java.lang.Math' и снова запустил, но все еще видел зависание. – JPC