Я использую 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, так что, может быть, это можно было бы как-то использовать?
Спасибо