内容
- lcovはgcc用のライブラリなので、clangでビルドしたgcdaファイルをlcovでそのまま変換しようとすると以下のエラーがでる。
$ lcov -c -d ./build -o lcov.info
Capturing coverage data from ./build
Found gcov version: 7.5.0
Scanning ./build for .gcda files ...
Found 7 data files in ./build
Processing src/CMakeFiles/src.dir/my_thread.cpp.gcda
/home/xxxx/git-work/wsl-ci-env/build/src/CMakeFiles/src.dir/my_thread.cpp.gcno:version '402*', prefer 'A75*'
geninfo: ERROR: GCOV failed for /home/xxxx/git-work/wsl-ci-env/build/src/CMakeFiles/src.dir/my_thread.cpp.gcda!
このエラーを回避してカバレッジを取る方法の記事
参考
基本はこの方法で可能だが、そのままだとエラーがでるところがあったので少し修正している。
前提
- Ubuntu上での実行
- gcc と lcovの使い方は知っている
手順
LLVMインストール
$ sudo apt install llvm
llvm-gcov.shを以下の内容で作成する
llvm-gcov.sh
#!/bin/bash
exec llvm-cov gcov "$@"
$ chomod +x llvm-gcov.sh
で実行ファイルにする
--gcov-toolオプションで実行する
$ lcov -c -d ./build -o lcov.info --gcov-tool `pwd`/llvm-gcov.sh
Capturing coverage data from ./build
Found LLVM gcov version 6.0.0, which emulates gcov version 4.2.0
Scanning ./build for .gcda files ...
Found 7 data files in ./build
Processing src/CMakeFiles/src.dir/my_thread.cpp.gcda
...
Finished .info-file creation