macOS上でLCOVを使用しカバレッジレポートを取る方法を説明する。
インストール
brew install llvm lcov w3m
CMakeのシンプルな設定例
CMakeLists.txt:
cmake_minimum_required(VERSION 3.16)
project(a VERSION 0.1.0)
add_compile_options(-fprofile-arcs -ftest-coverage)
add_link_options(--coverage)
add_executable(a a.c)
以下の設定を試したが、生成されるカバレッジデータのフォーマットが異なり、LCOVで処理する方法がわからなかった。
# add_compile_options(-fprofile-instr-generate -fcoverage-mapping)
# add_link_options(-fprofile-instr-generate -fcoverage-mapping)
その他、以下のファイルを準備する。
llvm-gcov.sh:
#! /bin/bash
exec `brew --prefix llvm`/bin/llvm-cov gcov "$@"
ビルドし実行
以下のどちらでも良さそう。
cmake -G Xcode -B build .
cmake --build build
cmake -B build .
(cd build/ && make VERBOSE=1)
./build/a
実行して正常終了すれば、
*.gcda
と
*.gcno
というファイルができているはず。
カバレッジの取得
以下のコマンドで、LCOVのデータを作成し、HTMLを作成する。(そして
w3m
で開く。)
lcov -c -d ./ -o lcov.info --gcov-tool $PWD/llvm-gcov.sh
genhtml -q lcov.info -o ./coverage/
w3m ./coverage/index.html
参考にしたサイト