2011-03-01 2 views
0

ASTParser을 사용하여 프로젝트에서 Java 소스 코드를 구문 분석합니다. 나는 자바 프로젝트의 다른 클래스에있는 모든 메소드의 이름과 리턴 타입을 얻을 수 있었다. 지금은 방법 사이에 의존성을 가질 수 있는지 궁금해 지네 main. 사실이 클래스에 대한 모든 문서를 읽지는 못했지만 다소 복잡합니다. 주 프로그램에서 메소드의 상호 연관성에 대해 아이디어를 가질 수 있는지 알고 있습니까? 가능하지 않은 경우 사용할 수있는 다른 API가 있습니까?ASTParser 및 메서드 간 종속성

감사합니다.

답변

1

이 문제는 자바가 대부분의 메소드를 오버라이드 할 수 있기 때문에 어떤 특정 메소드가 호출 될지 결정하기가 어렵 기 때문에 매우 어렵다고 알려져 있습니다. 최악의 경우, 이것은 결정할 수 없으므로 얻을 수있는 최선의 방법은 보수적 인 방법입니다. 따라서 많은 연구 논문이 어느 정도 질문에 대답하려고 노력했지만이 문제를 해결하기위한 좋은 알고리즘은 없습니다.

BDDBDDB framework은 이러한 종류의 분석을 수행하는 데 사용할 수 있으며 프로그램에 대해 매우 정확한 호출 그래프를 얻을 수있었습니다. 그러나 이렇게하려면 지금 사용중인 ASTParser 대신 새 프레임 워크를 사용하는 방법을 배워야합니다.

This paper도 정적 메소드 분석을 허용하는 Java의 좋은 유형 분석을 개발했다고 주장합니다. Java 코드를 자체 중간 언어로 컴파일하여 작동하지만 ASTParser과 함께 작동하지 않을 수도 있습니다.