2016-06-29 3 views
0

바이트 코드 분석을 위해 ByteBuddy를 사용하는 메소드 내에서 얼마나 많은 객체가 호출되는지 계산하는 방법을 찾고 있습니다. 문자열 파싱을 시도했지만 절대적으로 불가능합니다. 또한 AST에 대해 확인했지만 코드를 작성해야합니다. 그렇게하려면 많은 시간이 필요합니다. 이것으로 에이전트를 만들면 더 좋을 것입니다.ByteBuddy를 사용하는 메소드 내부의 객체를 카운트하는 에이전트

@Test 
public void myMethod(){ 
    Boolean myObj = false; 
    assertTrue(myObj).isTrue(); 
    assertTrue(myObj2).isTrue(); 
} 

이 방법 분석에 대한 출력이 될 것이다 : (myObj로, myObj2)

다음 코드를 감안. JavaBuddy를 처음 접했을 때 내 접근 방식은 다음과 같습니다.

@Test로 주석 된 메소드를 찾을 수있는 요소 일치자를 만듭니다. 가로 채기 .... 여기에 문제가 있습니다. 어떻게 그 개체를 계산해야하는지 모르고 메서드 문을 반복해야합니다.

누구나 내게 샘플이나 샘플에 대한 링크를 줄 수 있습니까?

답변

1

메소드 내에서 코드를 계측하기 위해 Byte Buddy는 ASM을 사용하여 지침에 따라 코드를 계측 할 수 있습니다. 그 이유는 ASM이 이미 바이트 코드 처리를위한 매우 우수한 API이기 때문에 다소 비슷하게 끝날 수있는 무언가로 대체 할 실질적인 이유가 없습니다.

ASM에 대해 자세히 알고 싶다면 their webpage에서 훌륭한 설명서를 얻을 수 있습니다.

그럼에도 불구하고 의도하는 것은 꽤 복잡합니다. 기본적으로 메서드의 제어 흐름을 따라 어떤 시점에 어떤 개체가 어떤 변수에 할당되는지 확인해야합니다. 또한 일부 클래스는 Boolean 클래스와 같이 계측 할 수 없으므로 문제에 대한 다른 접근 방법을 찾으시는 것이 좋습니다.

관련 문제