У нас есть большой объем кода C / C ++, который кросс-компилируется для встроенной цели Linux. Недавно мы начали реализацию модульных тестов (с использованием gmock / gtest), которые выполняются на нашем сервере разработки (который также является Linux). Модульные тесты выполняются автоматически при обнаружении регистрации (мы используем Bamboo).
Мы используем gcov и lcov для анализа & охват кода отчета во время тех модульных тестов, который сработал довольно хорошо. Однако, учитывая, что мы не начали модульное тестирование, большая часть нашей кодовой базы не покрыта модульными тестами. Интересный показатель, который выходит за рамки «что такое покрытие модульных тестов для тех файлов, которые тестируются модулем», — это «сколько всей нашей базы кода покрывается модульными тестами», включая те файлы, которые в настоящее время не проходят модульное тестирование. С GCOV вам нужно на самом деле скомпилировать & свяжите данный исходный файл и затем запустите полученную программу, чтобы получить возможные данные покрытия для этого файла.
В попытке разработать эту метрику покрытия «codebase», я написал несколько скриптов Python для использования RSM от MSquared (у нас это уже было на нашем dev-сервере) для оценки кода, а затем связал эти данные с данными покрытия, возвращенными gcov. Это работает довольно хорошо, но при сравнении множества таких вещей, как операторы и ветки для файлов, оцениваемых как RSM, так и gcov, было достаточно существенных различий, которые я не испытывал к этому как окончательное решение.
Вот мои вопросы:
Спасибо.
Задача ещё не решена.
Других решений пока нет …