мы используем LCOV/GCOV для обеспечения тестового покрытия наших проектов. В последнее время мы также попытались включить покрытие веток. Но похоже, что это просто не дает результатов, которые мы ожидали от представления разработчика на высоком уровне.
Использование покрытия ветвей с С++ удаляет отчет с помощью ветвей повсюду. Мы подозреваем (как указывает поиск проблем), что в основном код обработки исключений создает эти "скрытые ветки". И GCOV/LCOV, похоже, не пропускают их.
Я создал небольшой тестовый проект, чтобы показать проблему: https://github.com/ghandmann/lcov-branch-coverage-weirdness
В настоящее время мы используем Ubuntu 16.04. с:
- gcc v5.4
- lcov и genhtml v1.12
Наш производственный код построен с включенным С++ 11. Минимальный пример не строится с включенным С++ 11, но, когда мы немного экспериментировали со всеми различными опциями (стандарт С++, оптимизация, -fno-exceptions), мы не принесли пропущенного результата.
У кого-нибудь есть идеи? Tipps? Используем ли мы что-то не так? Это - как указано где-то еще - действительно ожидаемое поведение?
Спасибо четыре раза ваше время!
Update: