coveralls というサービスを使うと、GitHub, Travis CIと連携して、カバレッジをオンラインで見れるようになる。vim-ci を参考に、Onigmo で coveralls を使えるようにしてみた。
vim-ci では、カバレッジの結果を coveralls のサーバーに送信するのに、cpp-coveralls を使っていたが、代わりに lcoveralls を使うことにした。ローカルでカバレッジの結果を見るには lcov が便利だが、lcov を使うなら、同じ設定が使い回せる lcoveralls の方が楽である。なお、cpp-coveralls を使う場合は、コンパイルされないソースファイルを明示的に除外する必要があった。
GCC には、gcov というカバレッジ測定ツールが付属している。gcc --coverage でプログラムをコンパイルし、そのプログラムを実行すると、結果が .gcda ファイルに出力される。gcov を使うと、その結果を変換して人の目で読める形にしてくれる。lcov は、gcov を使いやすくするためのツールで、さらに結果を HTML に出力することも出来る。
Onigmo で lcov を使う場合は、以下のコマンドを実行すれば良かった。
# 古いカバレッジデータを削除 lcov -z -d .libs # テストを実行 make pytest atest && sample/crnl && make -C sample test # カバレッジの結果を coverage.info ファイルに出力 lcov -c -d .libs -o coverage.info # coverage.info ファイルを読み込み、HTML を out ディレクトリに出力 genhtml coverage.ingo -o out
以上で、out ディレクトリに結果が HTML で出力される。
Onigmo で Travis CI を使うようにした。.travis.yml に設定さえ書いておけば、リポジトリに push したときや、Pull Request があったときに、自動的にビルドやテストまでしてくれて便利である。
参考サイト:
実行結果は https://travis-ci.org/k-takata/Onigmo で見ることが出来るようになった。