0

コード分​​析プロジェクトに 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は範囲プロパティに元の「座標」を保持するため、それを何らかの形で使用できますか?

ありがとう

4

2 に答える 2