Как начать писать инструмент покрытия кода?
Ищете книги или другие справочные материалы, которые на самом деле обсуждают, как написать инструмент покрытия кода на Java; некоторые из различных техник или приемов - инструментарий исходного или байтового кода.
Это для языка сценариев, который генерирует байт-код Java под капотом.
Ответов (5)5
Thxm, Mc! http://asm.objectweb.org / - еще один. Отличная документация по инструментарию байтового кода, но ничего «напрямую» не направленного на написание инструмента покрытия - только некоторые подсказки или идеи.
Генерирует ли ваш язык сценариев байт-код? Создает ли он метаданные отладки? Если это так, то, вероятно, лучше всего использовать байт-код. Фактически существующие инструменты, вероятно, будут работать (возможно, с минимальной модификацией).
Типичная проблема таких инструментов в том, что они написаны для работы с Java и предполагают, что a class com.foo.Bar.class
соответствует файлу com/foo/Bar.java
. Отказ от этого предположения может быть утомительным.
EMMA - это загрузчик классов, который выполняет перезапись байтового кода для сбора покрытия кода в Java. Стиль кодирования немного забавный, но я рекомендую прочитать исходный код для некоторых идей.
Если ваш язык сценариев интерпретируется, вам понадобится загрузчик классов более высокого уровня (на уровне исходного кода), который подключается к интерпретатору.
Если вы говорите о ColdFusion (что, как я полагаю, вы из тегов), я не уверен, что это выполнимо, но здесь я могу ошибаться ...
IIRC, когда CF компилирует, он по существу компилируется в интерпретируемую форму CFML как простой старый исходный файл Java, затем он компилируется в класс. Следовательно, любые имеющиеся у вас инструменты будут применяться к промежуточной версии, а не к самому CFML.
Сказав это, у Adobe теперь есть отладчик CF, который может пошагово выполнять код, поэтому, пожалуйста, докажите, что я ошибаюсь - мне бы хотелось, чтобы код был покрыт CFML.