Ответ 1
TestCocoon - отличный инструмент, который лучше, чем gcov, с хорошими инструментами и средствами отчетов. Поскольку шаблоны являются компиляционными зверями, я не уверен, какую информацию о покрытии вы хотите получить?
мои два цента
Я использовал gcov для тестирования покрытия кода, но когда дело доходит до шаблонного кода С++, это не работает так хорошо. Я использую boost:: spirit экстенсивно, и gcov, кажется, просто игнорирует шаблонный код духа.
Также мне интересно, есть ли инструмент охвата, чтобы показать, как потоки взаимодействуют друг с другом, точно определяя возможные ветки/условия гонки/исполняемые потоки, выполненные фактически.
TestCocoon - отличный инструмент, который лучше, чем gcov, с хорошими инструментами и средствами отчетов. Поскольку шаблоны являются компиляционными зверями, я не уверен, какую информацию о покрытии вы хотите получить?
мои два цента
Я работаю над большим продуктом, и мы использовали стороннее приложение под названием BullsEye для тестирования покрытия. Это сработало чудеса.
Наш Инструмент С++ Test Coverage предоставляет тестовое покрытие на телах шаблонов или, по крайней мере, те шаблоны, которые определены в файлах, которые вы указываете для него, чтобы покрыть.
Он не различает экземпляры шаблонов.
Если у вас многопоточное приложение, инструмент будет записывать ветки, выполняемые всеми потоками, если вы настроите инструмент на использование флагов, которые могут быть записаны с возможностью атома (обычно это естественный размер слова CPU [32 или 64 бит]. (Если вы этого не сделаете, вы можете столкнуться с расстановкой потоков при обновлении флагов покрытия, и вы можете потерять немного покрытия. Это не является дефектом инструмента, это следствие несинхронизированного доступа к данные зонда хранения данных.)
Для обнаружения гонки OP должен найти инструмент обнаружения гонки; инструменты для тестирования не будут делать этого.
С++ Coverage Validator предоставляет данные о покрытии для шаблонов.
Покрытие кода отслеживается для всех потоков.
Parasoft CPP test - хороший инструмент для различного анализа, включая покрытие кода и статический анализ. Это полезно для перекоса в многопоточность.
http://www.parasoft.com/jsp/products/cpptest.jsp
Вот 10 хороших открытых инструментов для оформления кода: