Rcov радикально меняется с -xrefs
Мой текущий проект Ruby on Rails выполняет тестирование через rcov (в частности, релевантность rcov, и у нас довольно высокий стандарт (мы отказываемся от сборки, если охват кода < 95%).
Мы используем следующую команду, чтобы проверить это:
rcov_cmd = "rcov --rails --text-summary \
--include #{included_dirs} \
--exclude #{excluded_dirs} \
--aggregate #{coverage_dir}/coverage.data \
--output #{coverage_dir} \
Сегодня я нашел код, который регистрирует зеленый (после запуска) в отчетах rcov. Хомевер, я могу доказать, что этот код не запускается (я вызываю исключение в начале функции, и мои модульные тесты проходят)
Я провел некоторое исследование и нашел флаг --xrefs для rcov, который, как я думал, добавит всех вызывающих для каждой строки в отчетах rcov.
Я изменил команду rcov на:
rcov_cmd = "rcov --rails --text-summary --xrefs \
--include #{included_dirs} \
--exclude #{excluded_dirs} \
--aggregate #{coverage_dir}/coverage.data \
--output #{coverage_dir} \
(обратите внимание на добавленное --xrefs
флаг).
Вместо дополнительной информации о месте звонков у меня тестовое покрытие меняется с 96% до 48%.
Меняет ли --xrefs вид анализа, как делает rcov? (Я думал, что это просто соберет информацию о месте звонка). Чем это отличается / лучше от первой команды? (Я видел снижение покрытия модульным тестом, если есть неудачный модульный тест, и я знаю, что процент покрытия может упасть, если есть ошибка в прогоне, но это выглядит хорошо для меня)
1 ответ
--[no-]callsites
Show callsites in generated XHTML report. (somewhat slower; disabled by default)
--[no-]xrefs
Generate fully cross-referenced report. (includes --callsites)
Из класса Rcov CallSiteAnalyzer
A CallSiteAnalyzer can be used to obtain information about:
* where a method is defined ("defsite")
* where a method was called from ("callsite")
Благодаря этому анализу rcov может предоставить более точную информацию о покрытии за счет более длительного исполнения.