【问题标题】:Eclipse JDT AST: how to find a calling method returns value of an instance variable?Eclipse JDT AST:如何找到调用方法返回实例变量的值?
【发布时间】:2012-11-27 19:08:38
【问题描述】:

我正在使用 Eclipse JDT AST 来解析给定的 java 源代码。在解析代码时,当它遇到方法调用时,我想知道该特定方法是否返回或设置实例变量的值(基本上是为了找出被调用者方法是否是同一类调用者的 getter/setter方法)。

例如:

public void test(){
  //when parsing the following line I want to check whether "getName"    
  //returns a value of an instance variable.
  String x = getName();

  //when parsing the following line I want to check whether "setName"          
  //sets the value of an instance variable.
  setName("some-name");
}

我使用了 AST 插件,还找到了一个可能的路径,可以帮助我从 API 中引用它,但不能。 请让我知道这是否可行,如果可行,哪种方法可以帮助我获得所需的信息。

【问题讨论】:

    标签: setter getter abstract-syntax-tree eclipse-jdt


    【解决方案1】:

    不要以为有一个 api 可以告诉你方法是 getter 还是 setter。

    您必须编写代码来执行此操作。对于 getter,您可以简单地检查方法中的最后一条语句是否是返回实例变量的 return 语句。

    【讨论】:

    • 是的,您可以检查琐碎的 getter/setter,如果这足够了,那就足够了。更复杂的 getter/setter 可能会进行任意计算,包括调用另一个实际执行设置的类中的辅助方法。要发现这种 getter/setter,需要进行完整的数据流分析。我不确定 JDT 是否提供了这种功能,您也不想自己编写。
    • 如果 getter/setter 更复杂,我会争论它们是否首先是 getter/setter。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多