如何访问 INRIA-SPOON 中的 "this" 变量

How to gain access to "this" variable in INRIA-SPOON

我正在使用 INRIA Spoon。

我有一些动态方法调用,如下所示:

a.doSomething();

我可以使用 CtInvocation 实例的 getTarget() 方法获取 变量访问 a。我的任务是生成代码以将 a 存储到文件中。为此,我需要 a 的类型和源位置(class 名称、行等),以便我可以生成类似 logger.logSerializable(a, "My.Class:21")logger.logDoubleArrayList(a, "My.otherClass:23)" 的代码。

到目前为止一切顺利,我通过获取 CtInvocation 实例的 getTarget 方法的结果成功地做到了这一点。但是,当调用的目标等于 this 时,例如:

doSomething(); // equivalent to -> this.doSomething();

getTargetreturnsnull

如何获得 this 变量访问 给定 CtInvocation 的目标?

通过查找 CtThisAccess 的目标 (getTarget) 实例或直接处理 CtThisAccess