Мы используем 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