Что касается работы EMMA ... хотелось бы знать, как EMMA маркирует строки кода относительно исходного кода. И есть ли способ извлечь только покрытые/отмеченные строки?Как именно EMMA маркирует покрытые линии кода ..?
ответ
EMMA выполняет инвентаризацию файлов классов и код инструментария (дополнительный байтовый код) используется для генерации coverage reports.
Он не работает над исходными файлами. Конечно, для файлов классов требуется «отладочная информация», особенно номера строк. Но это обычно так.
Update
Похоже, только генератор HTML отчет способен согласовать результаты покрытия на номера строк. Я не смог получить те же детали для текстовых или xml-отчетов.
Для быстрого решения, я бы просто создать отчеты HTML и анализировать их с помощью HTML Parser (XML Parser мог работы, а) и извлекать дату из HTML-таблиц.
В качестве альтернативы, выполните emmarun с опцией -raw
и посмотрите на метаданные и файлы покрытия.
Я думаю, вам нужно будет найти базу кода Эммы, чтобы точно определить, что они делают.
Мне кажется, что вы хотите не «покрытые линии», а скорее «покрытые кодовые блоки», которые начинаются с некоторой строки/столбца, заканчиваются на какой-либо другой строке/столбце и могут иметь отверстия в середине для внутренних блоков кода.
Любая система, предоставляющая данные о покрытии, основанные исключительно на номерах строк, не будет предоставлять такую информацию. Возможно, вы сможете восстановить эту информацию из номеров строк путем разбора кода и извлечения всех этих данных; это намного больше, чем кажется. И это не сработает, если у вас несколько операторов в одной строке.
Наш инструмент Java Test Coverage собирает «покрытые кодовые блоки» именно в той форме, которую я предлагаю; вы можете увидеть это на дисплеях пользовательского интерфейса, которые показывают блоки кода и внутренние блоки.
Файл, экспортированный нашим инструментом, который содержит эту информацию о «кодовом блоке» и сопоставление между зондами и соответствующими блоками кода. То, что вы хотите, было бы довольно легко извлечь из этого файла.
Согласен. Рассматривая пример примерной программы, и после запуска EMMA в коде говорят, что номера строк 2,3,4 и 5 выполняются. Теперь я хотел бы знать, как EMMA делает это и выписку одинаково. – HelloWorld
Если мое требование состоит в том, чтобы извлечь строки кода, которые были отмечены крышкой, то можете ли вы предложить способ достижения этого? – HelloWorld
EMMA просто вернет номера строк, ничего больше. Вам придется читать исходные файлы отдельно и извлекать строки кода. EMMA там не поможет. –