Генерация обратного среза для 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