Поиск шаблонов без экземпляров в коде C ++

Как лучше всего найти неустановленные шаблоны в коде C ++?

У меня есть база кода, в которой широко используются шаблоны. Конечно, мы хотим убедиться в высоком тестовом покрытии. Для всего используемого кода это очень хорошо работает с gcov .

Однако gcov сообщает о неиспользуемых шаблонах как неисполняемых.

После некоторого поиска в Google выяснилось, что нет способа заставить g ++ выдавать код для этих шаблонов (что логично, как компилятор должен угадывать какие-либо типы?) Также похоже, что нет способа заставить gcov распознавать неустановленный код шаблона как исполняемый код.

Есть ли что-нибудь «из коробки», что позволяет мне расширять файлы, созданные GCC -ftest-охват -fprofile-arcs инструментарий? Согласно документации по параметрам gcov GCC , вероятно, будет достаточно пометить все тело функции шаблона как один блок, так как выполнение никогда не завершится на нем.

EDIT (справочная информация): I Я работаю над библиотекой шаблонов только для заголовков. Моя цель здесь - найти неиспользуемые / непроверенные функции.

Я знаю, что покрытие кода некорректно, но поиск неинтересированного кода является очень важным шагом на пути к более качественному тестированию кода. В настоящее время мы помещаем макросы контрольных точек в начало каждой функции. В режиме тестирования они расширяются до кода, который вставляет пару (файл, строка) в глобальный набор пройденных контрольных точек. После запуска тестов мы вручную читаем все файлы и сравниваем достигнутые контрольные точки с набором всех доступных контрольных точек.

Поиск неустановленного кода важен, например, из-за неинтуитивного поведения приоритета шаблона C ++ где-то может быть мертвый код, который читатель или даже автор ожидают, что они будут использованы.

8
задан Manuel 25 April 2011 в 21:45
поделиться