4

テストがインストルメンテーションでコンパイルされるautotoolsプロジェクトを正常にセットアップしたので、テストカバレッジレポートを取得できます。

'make check'が成功した後、ソースディレクトリでlcovを実行することで、レポートを取得できます。

私は今、このステップを自動化したいという問題に直面しています。これを「makecheck」または別の目標「makecheck-coverage」に追加したいと思います。理想的には、結果を解析して、カバレッジが特定のパーセンテージを下回った場合に失敗したいと思います。問題は、カスタムターゲットを追加する方法がまったくわからないことです。

私が得た最も近いものは、このサンプルのautotools configを見つけることでしたが、そのプロジェクトのどこに目標「makelcov」が追加されているのかわかりません。m4/auxdevel.m4にはいくつかの設定フラグしか表示されません。

任意のヒント?

4

1 に答える 1

7

Makefile.amのターゲットにステップを追加するだけでよいようです。これが、私が最終的に得たものです(#http://www.enlightenment.org/svn/e/trunk/ewl/Makefile.amに触発されました)。

#http://www.enlightenment.org/svn/e/trunk/ewl/Makefile.am
if ENABLE_COV
cov-reset:
    @rm -fr coverage
    @find . -name "*.gcda" -exec rm {} \;
    @lcov --directory . --zerocounters

cov-report:
    @mkdir -p coverage
    @lcov --compat-libtool --directory . --capture --output-file coverage/app.info  
    @genhtml -o coverage/ coverage/app.info 

cov:
    @make cov-report

clean-local:
    @make cov-reset 

check:
    @make cov

endif    

チェック中の「@makecov」は、「cov」ターゲットをデフォルトの「makecheck」ターゲットに追加します。

于 2010-05-20T12:38:20.750 に答える