コードカバレッジチェックにLLVMを使用する

コードカバレッジはソフトウェアテストの分野のトピックです。コードカバレッジの可能性が高いソースプログラムは、コードカバレッジの可能性が低いソースプログラムよりも、テストセットのテストでバグを見つけるのが簡単です。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は、各命令の実行時間情報を取得した後、元のコードに対してインストルメンテーションを実行し、実行時にプログラムの各コードの実行時間情報を取得します。


終わり!

おすすめ

転載: blog.csdn.net/tugouxp/article/details/113814431