콜 그래프에서 빌드 할 때 어떻게 사용합니까? 아니면 이것에 대한 더 좋은 프로그램이 있습니까? 답변을 찾고있는 동일한 5 페이지로 보내졌으며 찾고있는 것을 찾을 수 없습니다. Eclipse에 대한 플러그인 버전에도 문제가 있습니다. 그것은 올바른 설치되어 있지만 내가 코드를 실행하려면 그것을 선택할 수 없습니다.그루브에서 콜 그래프
0
A
답변
0
다음은 Java 용 호출 그래프를 포함하는 몇 가지 예입니다. http://www.brics.dk/SootGuide/
그리고 apk 용 그래프를 호출하십시오. https://github.com/secure-software-engineering/soot-infoflow/issues/38
도트 파일을 얻으려면 콜 그래프를 반복하고 내용을 다음과 같은 도트 형식으로 쓸 수 있습니다. 이전 대답
private static void visit(CallGraph cg, SootMethod method) {
String identifier = method.getSignature();
visited.put(method.getSignature(), true);
dot.drawNode(identifier);
// iterate over unvisited parents
Iterator<MethodOrMethodContext> ptargets = new Targets(cg.edgesInto(method));
if (ptargets != null) {
while (ptargets.hasNext()) {
SootMethod parent = (SootMethod) ptargets.next();
if (!visited.containsKey(parent.getSignature())) visit(cg, parent);
}
}
// iterate over unvisited children
Iterator<MethodOrMethodContext> ctargets = new Targets(cg.edgesOutOf(method));
if (ctargets != null) {
while (ctargets.hasNext()) {
SootMethod child = (SootMethod) ctargets.next();
dot.drawEdge(identifier, child.getSignature());
System.out.println(method + " may call " + child);
if (!visited.containsKey(child.getSignature())) visit(cg, child);
}
}
}
0
작은 수정
private static void visit(CallGraph cg, SootMethod method) {
String identifier = method.getSignature();
visited.put(method.getSignature(), true);
dot.drawNode(identifier);
// iterate over unvisited parents
Iterator<MethodOrMethodContext> ptargets = new Sources(cg.edgesInto(method));
if (ptargets != null) {
while (ptargets.hasNext()) {
SootMethod parent = (SootMethod) ptargets.next();
if (!visited.containsKey(parent.getSignature())) visit(cg, parent);
}
}