Я ищу способ синтаксического анализа метода Java с использованием JavaParser и извлечения информации о появлении statements
в коде. Первая часть выполнена, то есть я могу успешно разобрать код, но вторая часть была немного хитрой. Чтобы быть более точным c, я пытаюсь добиться следующего:
- Разобрать код и определить, является ли текущий
statement
значением if-statement
. DONE - Найти, находится ли ток
if-statement
внутри while-statement
, и, если да, определить, если, не удовлетворяя его условию, while
l oop повторно инициируется.
Некоторые примеры кода, чтобы сделать его более понятным:
Пример 1 - if
возвращает обратно к while
l oop, если его условие не выполняется
int testMethod(int x) {
int y=1;
while (x < 4) {
y++;
if (y < 5) {
x++;
}
}
return y;
}
Пример 2 - if
переходит к следующему оператору внутри l oop, если его условие не выполняется
int testMethod(int x) {
int y=1;
while (x < 4) {
if (y < 5) {
x++;
}
y++;
}
return y;
}
Подводя итог, я хочу иметь возможность определить, когда первый случай происходит. Мой код до сих пор, наряду с некоторыми комментариями, можно увидеть ниже. Часть, которую я не уверен, как реализовать, - это идентификация того, что родитель является while
l oop и что оператор if
является последним дочерним элементом.
\\find if the if-statement has a parent node
if (currIf.getParentNode().isPresent()) {
\\find if the parent Node is a While loop
Node parent = currIf.getParentNodeForChildren();
if () {
}
}