簡體   English   中英

JavaParser如何獲取塊語句的原始行大小?

[英]JavaParser how to get the original line-size of a block-statement?

我將JavaParser用於代碼分析項目,在該項目中,我讀取Java源文件並生成AST(抽象語法樹)進行分析。 我需要確定AST的給定塊語句所跨越的原始行數。

本質上我有這樣的方法:

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

我需要返回跨越的行數。 例:

void something()
{
// hello world

}

將返回5。

我嘗試過轉換為字符串並計數行,如下所示: new BufferedReader(new StringReader(nodeHere.toString())).lines().count() ,但是由於缺少詞法保留,因此無法正常工作。例如,一行這樣:“類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屬性中保留了原始的“坐標”,所以也許可以以某種方式使用它?

謝謝

您可以使用rangetokenRange屬性。 即像range.end.line - range.begin.line東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM