今までは gcc + gcov でやっていたのだが、Codecov の方が clang から gcc に変更になったので、Coveralls は clang に。
と、思ったらぶつかったのでメモ。
https://github.com/srz-zumix/iutest/issues/234
まず、clang が生成する gcno のフォーマットが gcc 4.2 で、Travis CI の xenial 環境に入ってる gcc が 5.5 だったため clang + gcov でもエラーが出て集計できなかった、というのが根本的な原因と思われます。
gcov -r *.gcda; also_run_disabled_tests.gcno:version '402*', prefer '505*' Segmentation fault (core dumped)
この状態で lcov を使うと、表題のエラーになっていました。
geninfo: ERROR: /home/travis/build/srz-zumix/iutest/test/assertion_return_tests.gcno: reached unexpected end of filelcov は gcov をバックエンドとして使っているので、おそらく内部的に gcov のエラーが置きているのではないかと予想。(ホントのところは知らんけど)
解決方法
Check Code Coverage with Clang and LCOV | Logan's Note↑の記事にあるように、llvm-gcov.sh ファイルを作成する。中身は以下の通り
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
exec llvm-cov gcov "$@" |
あとは、lcov のオプションに --gcov-tool path/to/dir/llvm-gcov.sh とするだけです。
iutest で実際にやってますので、そちらも参考にしてみてください。
ではでは。
0 件のコメント:
コメントを投稿