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

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

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

5.08.2008 11:15:16
5 ОТВЕТОВ

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

3
13.10.2016 12:50:44

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

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

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

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

8
26.05.2019 05:06:06

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

3
12.08.2008 17:58:25

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

2
15.09.2008 18:36:15
Это не очень хорошая идея, если номера строк в BCEL не совпадают с номерами в DSL OP. Если они этого не делают, вы получаете освещение в «неправильных» строках источника.
Ira Baxter 31.10.2011 21:15:41

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

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

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

2
5.11.2008 23:48:36
См. Мой ответ на тему "Освещение филиалов для произвольных языков - это просто". Инструментирование кода CFML напрямую и последующая его компиляция в Java по-прежнему дают данные о тестовом покрытии непосредственно для CFML. (Я строю инструменты тестирования покрытия для жизни).
Ira Baxter 3.07.2010 17:46:18
О чем это все? Покрытие кода Ранчо для ColdFusion kunalsaini.blogspot.in/2012/05/…
J.T. 28.01.2013 17:26:11