在使用spring FrameWork分析web应用程序时,我想获得一个精确的调用图(使用smoat SPARK(,但我有一个大问题需要解决:Spring使用DI(依赖注入(来管理bean,这意味着我们不需要创建Object。对于这个例子,我无法获得某些接口的精确调用图(使用SPARK(。
示例:当我使用烟炱通过SPARK(mainClass=AnimalMain.main(String[]args((获取调用图时,它找不到"的实现类;动物猪";以及";动物-人";,因此结果不包含关于"0"的任何边;pig.eat((;。因此,对于使用Spring FrameWork的Web应用程序来说,这是不现实的
如何获得精确的调用图
public class AnimalMain {
@Autowired
Animal pig;
@Autowired
Animal human;
Tree pineTree = new PineTree();
public static void main(String[] args) {
AnimalMain animalMain = new AnimalMain();
animalMain.eat();
}
void eat() {
pig.eat();
pineTree.grow();
}
}
public interface Animal {
void eat();
}
@component(value = "pig")
public class Pig implements Animal {
@Override
public void eat() {
System.out.println(doEat());
}
private String doEat() {
return "pig eat";
}
}
@component(value = "human")
public class Human implements Animal {
@override
public void eat() {
System.out.println("human eat ……");
}
}
我们(Soot团队(还没有一个有效的解决方案,但我们目前正在努力。