2010-08-10 3 views
11

Мой текущий Рубин на Rails проекта делает тестирование через rcov (в частности, relevance rcov, и у нас есть довольно высокий уровень (мы не строить, если мы имеем < 95% покрытия кода).изменения покрытия Rcov резко с -xrefs

Мы используем следующую команду, чтобы проверить это:.

rcov_cmd = "rcov --rails --text-summary \ 
      --include #{included_dirs} \ 
      --exclude #{excluded_dirs} \ 
      --aggregate #{coverage_dir}/coverage.data \ 
      --output #{coverage_dir} \ 

Сегодня я нашел код, который регистрирует зеленый (бежав) в rcov отчетов Homever, я могу доказать, что этот код не получает пробег (я поднимаю исключение в начале функции, и мои модульные тесты проходят)

Я провел некоторое исследование и нашел флаг -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%.

Does --xrefs меняет вид анализа, как делает rcov? (Я думал, что он просто соберет информацию о вызывающем абоненте). Как это отличается/лучше от первой команды? (я видел падение теста покрытия блока, если есть тест неудачи блока, и я знаю, что процент охвата может упасть, если есть ошибка в перспективе, но это выглядит хорошо для меня)

+0

Вы пытались использовать только '--callsites' и no' --xrefs', чтобы определить, действительно ли это информация о входящих вызовах, которая вызывает разницу? Может немного свести проблему. – Shadwell

+0

Я заменил --xrefs и --callsites и увидел такое же падение в охвате теста – RyanWilcox

ответ

1

От rcov manual:

--[no-]callsites 
    Show callsites in generated XHTML report. (somewhat slower; disabled by default) 
--[no-]xrefs 
    Generate fully cross-referenced report. (includes --callsites) 

от Rcov CallSiteAnalyzer Class

A CallSiteAnalyzer can be used to obtain information about: 

    * where a method is defined ("defsite") 
    * where a method was called from ("callsite") 

Имея этот анализ rcov может обеспечить более точную информацию покрытия в стоимости более исполнения.