модульное тестирование — полное покрытие кода на C ++ с gcov

У нас есть большой объем кода C / C ++, который кросс-компилируется для встроенной цели Linux. Недавно мы начали реализацию модульных тестов (с использованием gmock / gtest), которые выполняются на нашем сервере разработки (который также является Linux). Модульные тесты выполняются автоматически при обнаружении регистрации (мы используем Bamboo).

Мы используем gcov и lcov для анализа & охват кода отчета во время тех модульных тестов, который сработал довольно хорошо. Однако, учитывая, что мы не начали модульное тестирование, большая часть нашей кодовой базы не покрыта модульными тестами. Интересный показатель, который выходит за рамки «что такое покрытие модульных тестов для тех файлов, которые тестируются модулем», — это «сколько всей нашей базы кода покрывается модульными тестами», включая те файлы, которые в настоящее время не проходят модульное тестирование. С GCOV вам нужно на самом деле скомпилировать & свяжите данный исходный файл и затем запустите полученную программу, чтобы получить возможные данные покрытия для этого файла.

В попытке разработать эту метрику покрытия «codebase», я написал несколько скриптов Python для использования RSM от MSquared (у нас это уже было на нашем dev-сервере) для оценки кода, а затем связал эти данные с данными покрытия, возвращенными gcov. Это работает довольно хорошо, но при сравнении множества таких вещей, как операторы и ветки для файлов, оцениваемых как RSM, так и gcov, было достаточно существенных различий, которые я не испытывал к этому как окончательное решение.

Вот мои вопросы:

  1. Кто-нибудь еще пытался сделать что-то подобное?
  2. Есть ли лучший способ сделать это?
  3. Существуют ли какие-либо инструменты (желательно бесплатные / с открытым исходным кодом), которые
    оценивать код аналогично gcov и может быть использован для выполнения этого
    статический анализ на основе покрытия?

Спасибо.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]