Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

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