2011-02-28 2 views
0

프로젝트에서 Java 소스 코드를 구문 분석하기 위해 ASTParser를 사용하고 있습니다. 나는 자바 프로젝트의 다른 클래스에있는 모든 메소드의 이름과 리턴 타입을 얻을 수 있었다. 지금 자바 프로젝트를 실행할 때 메소드 호출 순서를 가질 수 있는지 궁금합니다.ASTParser 메서드 호출 순서

사실이 클래스의 모든 설명서는 약간 복잡하므로 조금 복잡합니다. 주 프로그램의 메소드에 액세스하는 순서를 처리하는지 알 수 있습니까? 그것이 사실이라면 간단한 예를 들어 주거나 ​​제가해야 할 일에 대한 지침을 줄 수 있습니까? 미리 감사드립니다.

답변

0

이것은 실제로 해결하기가 매우 어려운 문제입니다.

프로그램에 대한 AST를 얻으면 실제 프로그램 실행에 대한 동적 정보가 아닌 프로그램의 구조에 대한 정적 정보를 얻게됩니다. 사실, "이 프로그램의 소스 코드가 주어지면 어떤 종류의 메소드 호출이 만들어 지나요?"라는 일반적인 문제가 있습니다. 은 결정 불가능한입니다. 아무리 좋은 알고리즘이라도이 질문에 대한 답을 올바르게 얻을 수는 없습니다.

이 정보가 필요한 경우 몇 가지 옵션이 있습니다. 먼저, 일련의 메소드 호출을 근사값으로 계산하여 실제 답변에 가깝지만 모든 사례를 정확하게 다루지 않는 답을 얻을 수 있습니다. 둘째, 프로그램을 실행하고 JVMTI를 통해 일종의 JVM 플러그인을 작성하여 어떤 함수가 호출되는지 모니터 할 수있다.

+0

빠른 답변을 보내 주셔서 감사합니다. – bulldo

+0

죄송합니다. 다른 질문이 있습니다. 주 프로그램의 메서드 상호 연결에 대한 아이디어를 가질 수 있습니다. 소스 코드를 실행할 때 메소드를 호출하는 순서는 없지만 종속성의 트리 만 호출하고 싶습니다. – bulldo