2023-06-25

lcov function coverage lines

新しいlcovで作ったファイルを古いlcovに読ませると、ファンクションカバレッジが半減するようになった。 どうも新しいlcovでは関数定義の開始・終了行を記録するようになったらしく、古いlcovでそのまま読ませると、終了行を関数名と認識するらしい。

バージョン番号の違いまでは追っていないが、最近1-2周間ほどの間に、CIのmacOS上でbrewを使ってインストールしたlcovのデータを、Linuxマシンのlcovでマージさせようとするとこの問題が起こった。

以下は新しいlcovの出力例:

SF:/Users/runner/work/obs-studio-cirun/obs-studio-cirun/obs-studio/libobs/callback/decl.h
FN:32,37,decl_param_free
FN:45,55,decl_info_free
FNDA:113041,decl_param_free
FNDA:77756,decl_info_free
以下は古いlcovで同じファイルを処理した例:
SF:/home/runner/work/obs-studio-cirun/obs-studio-cirun/obs-studio/libobs/callback/decl.h
FN:32,decl_param_free
FNDA:2,decl_param_free
FN:45,decl_info_free
FNDA:11,decl_info_free

sedで以下のように処理することにした。

sed -i 's;^FN:\([0-9]*\),\([0-9]*\),;FN:\1,;'