diff --git a/wiki/Prog/Development/CMake управление проектом.adoc b/wiki/Prog/Development/CMake управление проектом.adoc index 7bad173..3fbcf4e 100644 --- a/wiki/Prog/Development/CMake управление проектом.adoc +++ b/wiki/Prog/Development/CMake управление проектом.adoc @@ -1229,7 +1229,7 @@ add_pvs_check(${TRGT}) add_sanitizers(${TRGT}) ---- -Подключение анализатора осуществляется включением опциям при запуске +Подключение анализатора осуществляется включением опций при запуске CMake для генерации сборочных файлов. Некоторые из опций между собой несовместимы, в случае попытки совместного использования будет выведено сообщение об ошибке. @@ -1254,8 +1254,13 @@ CMake для генерации сборочных файлов. Некотор === Анализ покрытия кода -Для сбора статистики +Для сбора информации о точном количестве исполнений +для каждого оператора в программе используется программа +https://gcc.gnu.org/onlinedocs/gcc/Gcov.html[Gcov], +входящая в состав компилятора https://gcc.gnu.org[GCC]. +Для обеспечения возможности подключения анализа покрытия кода к проекту +нужно выполнить функцию (обязательно после подключения всех библиотек): [source,cmake] ---- @@ -1264,3 +1269,26 @@ CMake для генерации сборочных файлов. Некотор add_code_coverage(${TRGT}) ---- +Подключение осуществляется включением опции `ENABLE_CODE_COVERAGE` +при запуске CMake для генерации сборочных файлов. В результате будут +созданы две дополнительные цели `coverage-${TRGT}` для сбора статистики +после работы программы и `coverage-report-${TRGT}` для её вывода +в виде HTML-страниц. + +Пример анализа покрытия кода на примере проекта `cmlib-example-app-features`: + + +[source,sh] +---- +mkdir -p _build/debug +cd _build/debug +cmake ../.. -DENABLE_CODE_COVERAGE=ON -DCMAKE_BUILD_TYPE=Debug +make +bin/cmlib-example-app-features +make coverage-cmlib-example-app-features +make coverage-report-cmlib-example-app-features +---- + +В результате в каталоге `report-cmlib-example-app-features` будет сформирован +отчёт о покрытии кода во время выполнения программы в виде HTML-страниц. +