2010-11-09 2 views
3

Я написал программу, которая сообщает мне, все ли DLL-файлы в файле результата покрытия кода выше указанного процентного коэффициента покрытия кода.Как получить Visual Studio для отображения результатов покрытия кода для dll с 0% охватом кода?

Он отлично работает, за исключением случаев, когда dll имеет покрытие 0% кода, поскольку библиотеки DLL с 0% охватом кода не включены в итоговый файл покрытия окна визуальной студии.

У меня есть доступ к списку DLL, которые были использованы для этого пробега кода, но я бы скорее просто посмотрел на файл покрытия кода, если смогу.

Есть ли способ получить Visual Studio для добавления результатов покрытия кода для dll, где процент покрытия кода = 0%?

ответ

3

Полное раскрытие информации: Я нахожусь в команде, которая разрабатывает эту функцию.

К сожалению, этой информации нет в файле покрытия кода. Когда используется двоичный код, мы вставляем специальные зонды, чтобы сообщить нам, что он существует и обнаруживать, когда выполняется каждый блок кода.

Мы не сохраняем список DLL-файлов в целевом процессе, поэтому мы знаем только о инструментальных DLL-файлах, которые выполняются (просто быть инструментальными недостаточно).

Простейшее обходное решение - это то, о чем вы упомянули в своем вопросе.

Благодарим за отзыв, хотя мы учтем это. Извините за трудности здесь.

+0

Спасибо за окончательный ответ. Это довольно необычный запрос, поэтому я не очень удивлен. – user467384

+0

Мы не находим это настолько необычным, что часто случается, что проект сообщает о 90% охвате, но забыл добавить 8 проектов в файлы тестов, в результате чего все сообщения были искажены. – jessehouwing

+0

Эй @ Крис, пожалуйста, посмотрите: http://stackoverflow.com/questions/24767377/visual-studio-2013-code-coverage-binaries-not-being-instrumented. Я потратил десятки часов, пытаясь понять, почему это происходит. Конечно [this] (http://blogs.msdn.com/b/allendm/archive/2012/06/05/troubleshooting-missing-data-in-code-coverage-results.aspx) не помогает – abatishchev

0

Уловка, которую мы используем, заключается в том, чтобы добавить один тестовый проект с помощью специального теста, который вызывает специальный публичный статический метод в каждой сборке, который ничего не делает, а возвращает true. Таким образом, сборка ударяется хотя бы один раз, и один вкладыш действительно не влияет на общие данные покрытия.

Я использовал Reflection для этого в некоторых проектах, и теперь мы просто добавляем проект CodeCoverageTest к каждому решению и методу CodeCoverage.Ensure() в каждой сборке.

Смежные вопросы