2008-08-05 4 views
19

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

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

ответ

2

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

7

Является ли ваш скриптовый язык генерируемым байт-кодом? Создает ли он метаданные отладки? Если это так, то, возможно, подходит для инструментов байт-кода. Фактически существующие инструменты, вероятно, будут работать; возможно, с минимальной модификацией (типичная проблема заключается в том, что инструменты написаны для работы с Java и предполагают, что com.foo.Bar.class соответствует com/foo/Bar.java. Разматывание этого предположения может быть утомительным.) EMMA - это ClassLoader, который делает перезапись байтового кода для коллекции покрытия кода в Java. Стиль кодирования немного напуган, но я рекомендую прочитать источник для некоторых идей.

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

1

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

2

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

+0

Это не очень хорошая идея, если номера строк в BCEL точно совпадают с номерами линий в DSL. Если они этого не сделают, вы получите информацию о «неправильных» источниках. – 2011-10-31 21:15:41

2

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

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

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

+0

См. Мой ответ о «Отраслевое покрытие для произвольных языков, сделанных просто». Прибор CFML-кода напрямую, а затем компиляция его на Java по-прежнему будет предоставлять данные о покрытии проб непосредственно для CFML. (Я создаю инструменты для тестирования на жизнь). – 2010-07-03 17:46:18

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