llvm-covでカバレッジ情報を見る

CMake + Ninja + Clang を使って、PC上でC言語プログラミングの勉強中

動作させたときのカバレッジ情報を見る方法を調べたのでメモ

 

コンパイルオプションに -fprofile-arcs と -ftest-coverage を追加してビルド

できた .exe ファイルを実行すると default.profraw が作られる

 

この default.profraw にカバレッジデータが記録されているようで

しかも実行するたびに加算していくわけではなく、毎回0からカウントしていく

(自分はコマンドライン引数でテスト動作切り替えていたので、

実行するたびにリネームして残しておき、後でマージして対応した)

 

この .profraw からは直接カバレッジ情報見れないみたいで

まずは↓のように llvm-profdataを使って .profdata へ変換する

llvm-profdata merge default.profraw --output default.profdata

 

.profdata と .exe を llvm-cov に渡してやるとカバレッジ情報が見れる

↓のようにhtml出力すると見やすくて便利

llvm-cov show -format=html -output-dir=cov_html -instr-profile default.profdata  hoge.exe

 


 

自分のプロジェクトでは CMAKE_BUILD_TYPE を Coverage にするとカバレッジ出力するように対応した

 

c_cmake_ninja\config_coveraage.bat を実行してCMakeにbuildフォルダ作成させる。

c_cmake_ninja\build\build_and_test.bat を実行してビルド、テスト、カバレッジデータ出力をさせる。

github.com