为了账号安全,请及时绑定邮箱和手机立即绑定

JavaParser 如何获取块语句的原始行大小?

JavaParser 如何获取块语句的原始行大小?

慕田峪9158850 2021-10-28 14:42:36
我将 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 确实保留了范围属性中的原始“坐标”,所以也许可以以某种方式使用它?
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

范围tokenRange,您可以使用性能。即类似的东西range.end.line - range.begin.line


查看完整回答
反对 回复 2021-10-28
?
aluckdog

TA贡献1847条经验 获得超7个赞

这个答案可能很晚了,但这对我有用......


public void visit(MethodDeclaration method) {

     int methodBodyLength = method.getRange().map(range -> range.begin.line - range.end.line).orElse(0);

}


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 270 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信