2012-07-09 49 views
0

我正在尋找一種方法來定位哪個MethodInvocation表達式使用調用方法聲明的參數。使用Eclipse AST參數使用

例如:

public void caller(int param1, int param2){ 
    m1(param1) 
    m2(param2) 
    m3(param1, m4(param2)) 

} 

我希望能夠以確定的M1方法調用利用「參數1」,並且該平方米方法調用利用「參數2」,和M3利用「參數1」和「參數2」。我可以用ASTVisitor做到這一點嗎?我沒有運氣,因爲MethodDeclaration.parameters()提供了SingleVariableDeclaration的列表,而MethodInvocation.arguments()提供了一個Expression列表。我沒有看到SingleVariableDeclaration和Expression之間的鏈接。我可以用他們的名字來分析他們,但這太天真了。

回答

1

綁定是確定變量,字段,方法,類等的權威方法。在這裏,您需要比較參數聲明和參考的IVariableBinding。

+0

如何確保方法調用所持有的參數實際上是一個變量?對於上面提供的情況,m3方法調用包含一個只有一個變量的表達式,而另一個表達式具有另一個方法調用。 – HJM 2012-07-09 16:20:33

+0

你知道ASTView插件 - http://www.eclipse.org/jdt/ui/astview/index.php嗎?你應該能夠弄清楚使用這個插件如何識別表達式是否是一個變量。 – 2012-07-09 16:29:34

+0

是的,我一直在努力。我沒有看到直接連接,但我想我可以嘗試解決它的IVariableBinding,並忽略空返回。謝謝。 – HJM 2012-07-09 16:50:16