Какой лучший инструмент для покрытия кода C ++ работает с шаблонами? - PullRequest
16 голосов
/ 10 октября 2011

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

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

Ответы [ 5 ]

2 голосов
/ 10 октября 2011

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

мои два цента

1 голос
/ 13 сентября 2012

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

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

1 голос
/ 31 декабря 2011

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

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

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

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

1 голос
/ 17 октября 2011

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

0 голосов
/ 10 октября 2011

Parasoft CPP test - хороший инструмент для различного анализа, включая покрытие кода и статический анализ. Это хорошо для копания в многопоточности.

http://www.parasoft.com/jsp/products/cpptest.jsp

Вот 10 хороших открытых инструментов для покрытия кода:

http://open -tube.com / 10-код-покрытия-инструменты-с-с /

...