JavaParser, как получить исходный размер строки оператора блока? - PullRequest
0 голосов
/ 05 октября 2018

Я использую JavaParser для проекта анализа кода, где я читаю исходный файл Java и генерирую AST (абстрактное синтаксическое дерево) для анализа.Мне нужно определить исходное количество строк, охватываемых данным оператором блока из AST.

По сути, у меня есть метод, подобный этому:

int numberOfLines(Node astNode){
....
}

И мне нужно вернуть количество натянутых строк.Пример:

void something()
{
// hello world

}

Возвращает 5.

Я попытался преобразовать строку и сосчитать строки, например: new BufferedReader(new StringReader(nodeHere.toString())).lines().count(), но это не работает из-за отсутствия лексическогосохранение ... например, одной строке это нравится: "class TestClass {int x; int y; int zz (int a) {return a;}}" становится 10 строками:

class TestClass {

    int x;

    int y;

    int zz(int a) {
        return a;
    }
}

КогдаAST генерируется, затем преобразуется обратно в строку, в сущности, «украшая» его ... Однако JavaParser сохраняет оригинальные «координаты» в свойстве range, так что, может быть, это можно было бы как-то использовать?

Спасибо

1 Ответ

0 голосов
/ 24 октября 2018

Существует диапазон и tokenRange свойств, которые вы можете использовать.то есть что-то вроде range.end.line - range.begin.line

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