Подтвердить что ты не робот

Какой лучший инструмент для покрытия кода на С++, который работает с шаблонами?

Я использовал gcov для тестирования покрытия кода, но когда дело доходит до шаблонного кода С++, это не работает так хорошо. Я использую boost:: spirit экстенсивно, и gcov, кажется, просто игнорирует шаблонный код духа.

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

4b9b3361

Ответ 1

TestCocoon - отличный инструмент, который лучше, чем gcov, с хорошими инструментами и средствами отчетов. Поскольку шаблоны являются компиляционными зверями, я не уверен, какую информацию о покрытии вы хотите получить?

мои два цента

Ответ 2

Я работаю над большим продуктом, и мы использовали стороннее приложение под названием BullsEye для тестирования покрытия. Это сработало чудеса.

Ответ 3

Наш Инструмент С++ Test Coverage предоставляет тестовое покрытие на телах шаблонов или, по крайней мере, те шаблоны, которые определены в файлах, которые вы указываете для него, чтобы покрыть.

Он не различает экземпляры шаблонов.

Если у вас многопоточное приложение, инструмент будет записывать ветки, выполняемые всеми потоками, если вы настроите инструмент на использование флагов, которые могут быть записаны с возможностью атома (обычно это естественный размер слова CPU [32 или 64 бит]. (Если вы этого не сделаете, вы можете столкнуться с расстановкой потоков при обновлении флагов покрытия, и вы можете потерять немного покрытия. Это не является дефектом инструмента, это следствие несинхронизированного доступа к данные зонда хранения данных.)

Для обнаружения гонки OP должен найти инструмент обнаружения гонки; инструменты для тестирования не будут делать этого.

Ответ 4

С++ Coverage Validator предоставляет данные о покрытии для шаблонов.

Покрытие кода отслеживается для всех потоков.