関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。あまり使ったことなかったので忘れないうちに手順をメモメモ。。。
gcovとlcovとgenhtmlを使って、C言語のプログラムのカバレッジを計測してレポート出力する手順です。
gcovは、gccに付属しているカバレッジ解析ツール。lcovとgenhtmlは追加でインストールが必要です。
サンプル
何かソースを用意。
#include <stdio.h> #include <stdlib.h> int is_even(int num) { return num % 2 == 0; } int main(int argc, char *argv[]) { int number; if (argc < 2) { fprintf(stderr, "Usage: %s <number>\n", argv[0]); return 1; } number = atoi(argv[1]); if (is_even(number)) { printf("%d is even\n", number); } else { printf("%d is odd\n", number); } return 0; }
コンパイルする際に -fprofile-arcs
と -ftest-coverage
オプションを付与。
$ gcc -fprofile-arcs -ftest-coverage -o app app.c
アプリを実行します。別にここは1回とかではなくて何度も動作させる方が良い。
$ ./app 5
次に lcov と genhtml をインストール。genhtmlはlcovをインストールしたら付いてきます。
$ sudo apt install lcov
で、レポート生成
$ lcov --capture --directory . --output-file cov.info $ genhtml cov.info --output-directory out
こんな感じにファイルが生成されていきます。
上のコマンドによって、outディレクトリにHTMLで結果が出力されています。
こんな感じで出力してくれます。
参考情報
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。