[英]How to get original packages names or classes of parsed by JavaParser method parameters
[英]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屬性中保留了原始的“坐標”,所以也許可以以某種方式使用它?
謝謝
您可以使用range和tokenRange屬性。 即像range.end.line - range.begin.line
東西
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.