2012-11-27 56 views
2

我使用Eclipse JDT AST來解析給定的Java源代碼。在解析代碼時,當它遇到方法調用時,我想知道該特定方法是返回還是設置實例變量的值(基本上是要找出被調用方法是否是同一類調用方的getter/setter方法)。Eclipse JDT AST:如何查找調用方法返回實例變量的值?

例如爲:

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是指它可能的路徑,但不能。 請讓我知道這是否可能,如果有的話,哪種方法可以幫助我獲得所需的信息。

回答

0

不要認爲有一個API告訴你一個方法是一個getter還是setter。

你將不得不編寫代碼來做到這一點。對於getter,你可以簡單地檢查方法中的最後一個語句是否是返回實例變量的返回語句。

+0

是的,你可以檢查微不足道的getter/setter,如果這足夠,那麼它足夠。更復雜的getter/setter可能會執行任意計算,包括調用者在另一個類中實際執行設置的輔助方法。要發現這種getter/setter,需要完整的數據流分析。我不確定JDT是否提供這種功能,而且您不想自己寫這些功能。 –

+0

如果獲得者/制定者更復雜,我會爭論他們是否是第一名的獲得者/制定者。 –

相關問題