Файлы данных gcov (* .gcda) накапливают значения в нескольких тестах. Это замечательная вещь. Проблема в том, что я не могу понять, как заставить файлы .gcov накапливаться так же, как файлы .gcda.
У меня большой проект (53 заголовка, 54 cpp), и некоторые заголовки используются в нескольких файлах cpp. Следующий пример радикально упрощен; подход грубой силы потребует дней ручной, утомительной работы, если это потребуется.
Скажем например у меня xyz.hpp
это определяет класс XYZ. В строке 24 он определяет build()
метод, который строит данные XYZ, и в строке 35 он определяет data()
метод, который возвращает ссылку на данные.
Скажем, я запускаю свой тестовый набор, затем я запускаю gcov на abc.cpp
, xyz.hpp.gcov
отчет имеет счет 5 для строки 24 (сборка) и ноль для строки 35 (данные). Теперь я запускаю GCOV на def.cpp
и xyz.hpp.gcov
отчет имеет счетчик нуля для строки 24 и счетчик 7 для строки 35. Таким образом, вместо накопления информации отчета и счетчика 5 для строки 24 (сборка) и 7 для строки 35 (данные), он заменяет xyz.hpp.gcov
каждый раз, поэтому все счета сбрасываются. Я понимаю, почему это поведение по умолчанию, но я не могу переопределить его. Если я не смогу накапливать отчеты .gcov программно, я буду вынужден вручную сравнить, скажем, дюжину разных xyz.hpp.gcov
для того, чтобы оценить охват.
Похоже, что LCOV может сделать это накопление, но это занимает недель чтобы установить новое программное обеспечение в моей нынешней рабочей культуре.
Заранее благодарю за любую помощь.
Задача ещё не решена.
Других решений пока нет …