Как получить точный график вызовов для веб-приложения с помощью Spring FrameWork от soot SPARK? - PullRequest
0 голосов
/ 07 августа 2020

Я хочу получить точный граф вызовов (с использованием сажи SPARK) при анализе веб-приложения с помощью Spring FrameWork, но у меня есть одна большая проблема, которую нужно решить: Spring использует DI (внедрение зависимостей) для управления bean-компонентами, что означает, что мы не нужно создать объект. В этом случае я не могу получить точный граф вызовов (используя SPARK) для некоторого интерфейса.

Пример: когда я использую сажу для получения графа вызовов с помощью SPARK (mainClass = AnimalMain.main (String [] args) ), он не может найти класс реализации «Животное свинья» и «Животное человека», поэтому результат не содержит никаких преимуществ по поводу «pig.eat ()». Поэтому для веб-приложений, использующих Spring FrameWork, это нецелесообразно。

Как я могу получить точный граф вызовов?

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 ……");
}
}

1 Ответ

0 голосов
/ 12 августа 2020

У нас (команда Soot) пока нет хорошо работающего решения для этого, но мы работаем над этим в настоящий момент.

...