Генерация обратного среза для Java-файла

У меня есть Java-файл, и я хочу получить все строки, которые влияют на результат конкретной строки (Backward Slice Generation). Я знаю решение, но есть ли Java-код для этого?

В качестве примера можно указать следующий код:

System.out.println("Start")
Random r = new Random();
int i = r.nextInt(10);
int n = 0;
if(i<8)
{
    n = 1;
    System.out.println("In if");
}
int j = n * i;

Нужен код, который находит следующие строки, когда я запускаю его для строки 10:

Random r = new Random();
int i = r.nextInt(10);
int n = 0;
if(i<8)
{
    n = 1;
}
int j = n * i;

1 ответ

Похоже, что в теоретических работах обсуждается больше научных работ, чем реальных реализаций. (Особенно на Java)

Вы можете попробовать один из следующих вариантов:

Анализ однопоточных программ:

Java Slicer от Hammacher (@github). Насколько я помню, он дает вам фрагмент Java-байт-кода после того, как вы создали трассировку из вашей программы.

Также посмотрите на IBM Wala Slicer.

Анализ многопоточных программ:

Проблема в том, что сложность возрастает особенно при анализе многопоточных программ. Я думаю, что единственным, кто поддерживает это сейчас, является проект Инда. Они также предоставляют плагин Eclipse, называемый Kaveri, но вы должны были использовать его с Eclipse 3.1.2.

Тем не менее, ваш код должен быть совместим с Java 2 (J2SE 1.4.2). см. поддержку Java

Другие вопросы по тегам