2012-11-27 2 views
2

Eclipse JDT AST를 사용하여 주어진 Java 소스 코드를 구문 분석하고 있습니다. 코드를 구문 분석하는 동안 메서드 호출을 받으면 해당 메서드가 인스턴스 변수의 값을 반환하는지 또는 설정 하는지를 확인하려고합니다 (기본적으로 호출 수신자 메서드가 호출자와 동일한 클래스의 getter/setter인지 여부를 확인하기 위해 사용됨). 방법).Eclipse JDT AST : 호출 메소드를 찾는 방법이 인스턴스 변수의 값을 리턴합니까?

예컨대 : 나는 또한 나를 API에서 그것을 참조하는 데 유용한 가능한 경로를 찾을 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"); 
} 

만은 할 수 없습니다. 이것이 가능한지 여부를 알려주십시오. 그렇다면 어떤 방법을 통해 필요한 정보를 얻을 수 있는지 알려주십시오.

답변

0

메소드가 getter인지 세터인지 알려주는 API는 없다고 생각하십시오.

이렇게하려면 코드를 작성해야합니다. getter의 경우 메서드의 마지막 문이 인스턴스 변수를 반환하는 return 문인지 쉽게 확인할 수 있습니다.

+0

네, 평범한 getter/setters를 확인할 수 있습니다. 보다 복잡한 getter/setter는 실제로 설정을 수행하는 다른 클래스의 호출자 도우미 메서드를 포함하여 임의의 계산을 수행 할 수 있습니다. 이러한 종류의 getter/setter를 발견하려면 완전한 데이터 흐름 분석이 필요합니다. 나는 JDT가 그런 종류의 능력을 제공하는지 확신하지 못한다. 당신은 스스로 작성하고 싶지 않다. –

+0

게터/세터가 더 복잡한 경우, 처음에 게터/세터인지 아닌지 논쟁합니다. –