Можем ли мы получить собственное покрытие кода С++ в VS2012 или VS2010 без MSTest? - программирование
Подтвердить что ты не робот

Можем ли мы получить собственное покрытие кода С++ в VS2012 или VS2010 без MSTest?

Мы хотели бы измерить охват кода для нашей собственной автоматизированной системы регрессионных тестов, выполняемой над довольно большим родным приложением. Это сложная скриптовая тестовая система, использующая встроенные скрипты нашего приложения. Он имеет тысячи тестов и не будет заменен модульными тестами MSTest.

Пока мы используем VS2012 (Premium), поскольку в настоящее время IDE все еще компилируется с помощью компиляторов и библиотек VS2010. Это может измениться раньше, если это будет предпосылкой для получения покрытия кода.

Мы можем сделать отдельные сборки для этого - инструменты не являются проблемой.

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

спасибо

4b9b3361

Ответ 1

Инструмент покрытия кода Visual Studio 2012 полностью отделен от системы выполнения тестов (полное раскрытие: я написал его, но команда, которая унаследовала его после того, как я покинул Microsoft, удалил некоторые довольно полезные функции). Он был переписан с нуля в VS 2012 для динамического инструментального родного (x86 и x86-64) и управляемого кода (.NET и Silverlight), когда он загружается в процесс вместо изменения исполняемых файлов на диске.

Вы можете найти CodeCoverage.exe в "% ProgramFiles%\Microsoft Visual Studio 11.0\Team Tools\Dynamic Code Coverage Tools".

Для сбора данных:

CodeCoverage.exe collect /output:foo.coverage foo.exe foos_args

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

Чтобы проанализировать данные о покрытии, вы можете открыть foo.coverage в Visual Studio 2012 или использовать инструмент охвата для проведения анализа:

CodeCoverage.exe analyze /output:results.xml foo.coverage

Примечание: для выполнения инструментария должны быть обнаружены файлы .pdb для ваших модулей. Поскольку вы строите с 2010 года, они могут не работать с DIA 2012 года, поэтому вам, возможно, придется перестроить набор инструментов 2012 года. Если вы не видите модули, которые вы ожидаете в анализе покрытия, передайте /include_skipped_modules команде анализа; будет атрибут "причина", рассказывающий вам, почему модуль был пропущен (исключено, нет отладочной информации и т.д.).

Изменить: Кроме того, в отличие от предыдущих версий Visual Studio, формат файла охвата 2012 года полностью автономный. Модули и .pdbs не должны присутствовать во время анализа.

Ответ 2

Я понимаю, что это старый пост, но я считаю, что ответ по-прежнему имеет значение.

Со всеми вещами, которые я имел в своем распоряжении на С#, мне не нравилось то, что я видел, когда перешел на Visual С++. Кроме того, как и вы, MSTests только частично работал на меня; У меня тоже есть собственные тестовые приложения.

В основном я хотел:

  • Запустите MS-тесты или EXE файл.
  • Получить покрытие кода прямо в Visual Studio.

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

Если вы не на VSE, я заметил, что есть и другие инструменты, каждый из которых предоставляет пользователям независимый интерфейс. Лично мне это не нравится; Я хочу, чтобы мой охват был правильным в Visual Studio, желательно в версии Visual Studio Community.

Итак, я решил построить это дополнение самостоятельно и - хотя это не так сложно, как VSE, - это делает трюк для меня.

  • Я написал инструмент для покрытия кода VSIX на https://github.com/atlaste/CPPCoverage. В основном он управляет подсветкой в ​​Visual Studio, создает кликабельный отчет и интегрируется в проводник решений.
  • Для самих измерений покрытия я использовал https://opencppcoverage.codeplex.com/. В основном это позволяет выполнять тесты покрытия кода для любого отлаживаемого (собственного) исполняемого файла. В настоящее время я использую свои собственные инструменты для измерения покрытия кода (также открытые выше).