Как начать писать инструмент покрытия кода? - PullRequest
23 голосов
/ 05 августа 2008

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

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

Ответы [ 5 ]

7 голосов
/ 10 августа 2008

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

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

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

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

3 голосов
/ 12 августа 2008

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

3 голосов
/ 05 августа 2008

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

2 голосов
/ 06 ноября 2008

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

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

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

2 голосов
/ 15 сентября 2008

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

...