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