我在单击位置时遇到问题。我所做的事情是从具有该函数的方法创建一个 AST:
getMethodASTEclipse(method, model=projectModel);
其中方法只是一个实例
methods(projectModel);
例如,当我访问那棵树并想要获取 if 语句时,我可以调用
case i: \if(_, _, _):println(i@src);
源代码将被打印出来,我可以点击它,eclipse 将使用正确的 if 语句进入正确的类。表格是这样的:
|project://MyProject/src/MyClass.java|(2836,143,<104,1>,<109,2>)
但是当我使用以下方法从文件中获取 AST 时:
createAstFromFile(class, true);
并提供一个方法甚至一个文件的类,我也可以访问它并获得相同的 if 语句并打印它,但它的形式不同,我无法点击它。为什么不 ?
它的形式如下所示:
|java+class:///MyClass/src/MyClass|(17938,1105,<544,4>,<570,5>)
我还注意到,在打印每个位置后,偏移量会大幅增加。
如何使其可点击到正确的位置?我认为它必须与偏移量和位置的形式有关。我尝试使用以下方法:
resolveJava(loc l);
来自 Registry 类,但这也不起作用,并试图查看 |loc 定义的声明,但也不存在。
提前致谢。