2012-07-09 3 views
0

호출자 메서드에 의해 선언 된 매개 변수를 사용하는 MethodInvocation 식을 찾는 방법을 찾고 있습니다. 예를 들어매개 변수 사용을 위해 Eclipse AST 사용

:

나는 M1 메소드 호출은 'PARAM1'를 활용하는 것이, 그리고 m2 메소드 호출은 'PARAM2'를 활용하는 것이, 그리고 그 'PARAM1'를 활용 M3 식별 할 수 있도록하려면
public void caller(int param1, int param2){ 
    m1(param1) 
    m2(param2) 
    m3(param1, m4(param2)) 

} 

및 'param2'. ASTVisitor와 함께이 작업을 수행 할 수 있습니까? MethodDeclaration.parameters()는 SingleVariableDeclaration의 목록을 제공하고 MethodInvocation.arguments()는 Expression 목록을 제공하므로 아무런 운이 없었습니다. SingleVariableDeclaration과 Expression 사이에 링크가 표시되지 않습니다. 나는 그 이름으로 분석 할 수는 있지만 너무 순진하다.

답변

1

바인딩은 변수, 필드, 메서드, 클래스 등을 식별하는 확실한 방법입니다. 여기서는 매개 변수 선언과 참조의 IVariableBinding을 비교해야합니다.

+0

메소드 호출에 의해 보유 된 인수가 실제로 변수인지 확신 할 수 있습니까? 위에 제공된 경우에 대해 m3 메서드 호출에는 변수가있는식이 하나 있지만 다른 메서드 호출이있는식이 하나 있습니다. – HJM

+0

ASTView 플러그인을 알고 있습니까? - http://www.eclipse.org/jdt/ui/astview/index.php? 이 플러그인을 사용하여 표현식이 변수인지 식별하는 방법을 알아낼 수 있어야합니다. –

+0

네, 저도 함께 일해 왔습니다. 나는 직접적인 연결을 보지 못했지만, 나는 그것이 IVariableBinding이라는 것을 해결하려고 노력할 수 있다고 생각하고 null 반환을 무시한다. 감사. – HJM