JavaParser: определение иерархии и типа операторов внутри метода Java - PullRequest
0 голосов
/ 19 февраля 2020

Я ищу способ синтаксического анализа метода Java с использованием JavaParser и извлечения информации о появлении statements в коде. Первая часть выполнена, то есть я могу успешно разобрать код, но вторая часть была немного хитрой. Чтобы быть более точным c, я пытаюсь добиться следующего:

  1. Разобрать код и определить, является ли текущий statement значением if-statement. DONE
  2. Найти, находится ли ток 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 () {

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...