Сведения о вопросе

Codeliver

16:03, 1st July, 2020

Теги

Как начать писать инструмент покрытия кода?

Просмотров: 537   Ответов: 5

Поиск книг или других ссылок, в которых обсуждается, как на самом деле написать инструмент покрытия кода в Java; некоторые из различных методов или трюков - исходный код против инструментария байтового кода.

Это для скриптового языка, который генерирует байтовый код Java под капотом.



  Сведения об ответе

dump

18:03, 1st July, 2020

Генерирует ли ваш скриптовый язык байт-код? Генерирует ли он метаданные отладки? Если это так, то инструментирование байт-кода-это, вероятно, правильный путь. На самом деле существующие инструменты, вероятно, будут работать (возможно, с минимальной модификацией).

Типичная проблема с такими инструментами заключается в том, что они пишутся для работы с Java и предполагают, что class com.foo.Bar.class соответствует файлу com/foo/Bar.java . Раскручивание этого предположения может быть утомительным.

EMMA - это ClassLoader, который выполняет перезапись байт-кода для коллекции покрытия кода в Java. Стиль кодирования немного фанк, но я рекомендую прочитать исходный код для некоторых идей.

Если ваш скриптовый язык интерпретируется, то вам понадобится загрузчик класса более высокого уровня (на уровне исходного кода), который подключается к интерпретатору.


  Сведения об ответе

lats

18:03, 1st July, 2020

Thxm, Mc! http://asm.objectweb.org / - это еще один случай. Отличная документация по инструментированию байтового кода, но ничего "directly", направленного на написание инструмента покрытия-просто некоторые подсказки или идеи.


  Сведения об ответе

DAAA

18:03, 1st July, 2020

Вы также можете получить исходный код из инструмента покрытия открытым исходным кодом и учиться на нем.


  Сведения об ответе

P_S_S

18:03, 1st July, 2020

Вы также можете использовать что-то вроде BCEL для анализа того, какие строки исходного кода действительно существуют в байт-коде. Вы не хотите сообщать, что такие вещи, как пустые строки и комментарии, не были охвачены.


  Сведения об ответе

screen

18:03, 1st July, 2020

Если вы говорите о ColdFusion (что я предполагаю, что вы из тегов), то я не уверен, что это выполнимо, но я могу быть очень неправ здесь...

IIRC, когда CF компилируется, он по существу компилируется в интерпретируемую форму CFML как обычный старый исходный файл java, который затем компилируется в класс. Поэтому любые инструменты, которые вы можете иметь, будут применяться к промежуточной версии, а не к самой CFML.

Тем не менее, у Adobe теперь есть отладчик CF, который может шагать через код, поэтому, пожалуйста, докажите мне, что я ошибаюсь - Я бы хотел охватить код в CFML.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться