コードカバレッジはソフトウェアテストの分野のトピックです。コードカバレッジの可能性が高いソースプログラムは、コードカバレッジの可能性が低いソースプログラムよりも、テストセットのテストでバグを見つけるのが簡単です。LLVMはツールLLVM-COVを提供します。指示を記録するのは簡単です:
ステップ1:clangとllvmをインストールする
sudo apt install clang llvm
ステップ2:テストプログラムを作成します。
// coverage.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int loop = atoi(argv[1]);
for(int idx = 0; idx < loop; idx++)
{
printf("%s line %d, %d\n", __func__, __LINE__, idx);
}
return 0;
}
ステップ3:Makefileを書き込む
all:
clang -o loop-cov -fprofile-instr-generate -fcoverage-mapping coverage.c
オプション-fprofile-instr-generate-fcoverage-mappingは、プログラムの実行後にコードカバレッジファイルが生成されるように、ソースコードをインストルメント化してコンパイルすることです。
ステップ4:プログラムを実行してコードカバレッジファイルを生成します
default.profrawファイルを生成しました
ステップ5:コードカバレッジデータ情報を生成する
all:
clang -o loop-cov -fprofile-instr-generate -fcoverage-mapping coverage.c
data:
llvm-profdata merge -o loop-cov.profdata default.profraw
llvm-cov show ./loop-cov -instr-profile=loop-cov.profdata loop-cov.profdata
执行 make data
llvm-covは、各命令の実行時間情報を取得した後、元のコードに対してインストルメンテーションを実行し、実行時にプログラムの各コードの実行時間情報を取得します。