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

CMAKE_BUILD_TYPEが設定されてない場合のデフォルト値を指定する

この日記ではひとまずプログラミングの練習としてbowling_game_kataをやっていきます。

 

CMake + Ninja + Clang で

コンパイル、リンクして実行ファイルを作る

所まで前に作っていた物を改修していく

 

github.com

 

各種ツールのコマンドラインオプションとかすぐ忘れてしまうので

よく使うコマンドとオプションはバッチファイルを作っておく。

 


 

タイトルの通り、最初のCMake実行時にコマンドライン引数でCMAKE_BUILD_TYPEが設定されてない場合のデフォルトを指定したい

 

検索したところ見つけた

discourse.cmake.org

 

を参考にして対応

 

github.com