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