2016-06-29 4 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, поэтому я бы рекомендовал вам найти другой подход к вашей проблеме.

 Смежные вопросы

  • Нет связанных вопросов^_^