Как создать покрытие кода для всего покрытия кодовой базы C++ с помощью gcov/lcovC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как создать покрытие кода для всего покрытия кодовой базы C++ с помощью gcov/lcov

Сообщение Anonymous »

У нас есть большой объем кода C/C++, который кросс-компилируется для встраиваемой системы Linux. Недавно мы начали реализацию модульных тестов (с использованием gmock/gtest), которые запускаются на нашем сервере разработки (тоже Linux). Модульные тесты выполняются автоматически при обнаружении возвратов (мы используем конвейер Microsoft Azure).
Мы используем gcov и lcov для анализа и составления отчетов о покрытии кода во время этих модульных тестов. , что сработало довольно хорошо. Однако, учитывая, что мы не начали модульное тестирование, большая часть нашей кодовой базы не покрывается модульными тестами. Интересным показателем помимо «каково покрытие модульными тестами файлов, подвергаемых модульному тестированию» является «какая часть всей нашей кодовой базы покрывается модульными тестами», включая те файлы, которые в настоящее время не проходят модульное тестирование. При использовании gcov вам необходимо скомпилировать и связать заданный исходный файл, а затем выполнить полученную программу, чтобы получить возможные данные о покрытии для этого файла.
Я использовал следующий скрипт, но он генерирует отчет для классов, в которых есть модульное тестирование.:

Код: Выделить всё

# Get the path to the current folder
SCRIPT_DIR=$(pwd)

# SRC_DIR is the directory containing the .gcno files (%{buildDir} in Qt Creator)
SRC_DIR="$SCRIPT_DIR/../../build-KEBPLCComService-Desktop-Debug/"

# COV_DIR is the directory where the coverage results will be stored
COV_DIR="$SCRIPT_DIR/../coverage"

############################################################################################################

# Path where the HTML files should be saved
HTML_RESULTS="${COV_DIR}""/html"

# Create the html folder if it does not exists
mkdir -p ${HTML_RESULTS}

# Generate our initial info
lcov -d "${SRC_DIR}" -c -o "${COV_DIR}/coverage.info"

# Remove some paths/files which we don't want to calculate the code coverage (e.g. third party libraries) and generate a new coverage file filtered (feel free to edit it when necessary)
lcov -r "${COV_DIR}/coverage.info" "*Qt*.framework*" "*.h" "*/tests/*" "*Xcode.app*" "*.moc" "*moc_*.cpp" "*/test/*" "*/build*/*" -o "${COV_DIR}/coverage-filtered.info"

# Generate the HTML files
genhtml -o "${HTML_RESULTS}" "${COV_DIR}/coverage-filtered.info"

# Reset our counts
lcov -d "${COV_DIR}" -z

# Open the index.html
firefox "${HTML_RESULTS}/index.html"
Как я могу получить покрытие кода для всей кодовой базы?

Подробнее здесь: https://stackoverflow.com/questions/690 ... -gcov-lcov
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Поддержка GCOV/LCOV
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Покрытие кода с использованием gcov при параллельном запуске
    Anonymous » » в форуме C++
    0 Ответы
    67 Просмотры
    Последнее сообщение Anonymous
  • Покрытие Python не удастся, если отдельные файлы не соответствуют минимальному проценту покрытия
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Действие GitHub для комбинезонов — ошибка: файл Lcov не найден
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Портативный способ исключить каталоги lcov
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»