2016-11-29 10 views
2

私のプログラムは4つの実行可能ファイルと基本的にゼロのライブラリコードで構成されています。私のテストは、さまざまな入力ファイルで実行可能ファイルを実行することによって動作します。その間、スタックで実行可能なカバレッジを取得するにはどうすればよいですか?

"stack test --coverage"は明らかに実行可能ファイルを処理しません。 OK、いいですが、私はそれを「手で」行う方法を理解できません。

私は私の秘密結社ファイルに-fhpcを追加しようとしました、動作するように表示されます。

/home/rlpowell/.stack/programs/x86_64-linux/ghc-8.0.1/lib/ghc-8.0.1/bin/ghc -B/home/rlpowell/.stack/programs/x86_64-linux/ghc-8.0.1/lib/ghc-8.0.1 --make -no-link -fbuilding-cabal-package -O -static -outputdir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -odir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -hidir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -stubdir .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -i -i.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -iapp -i.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen -I.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen -I.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/unphone/unphone-tmp -optP-include -optP.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/autogen/cabal_macros.h -hide-all-packages -no-user-package-db -package-db /home/rlpowell/.stack/snapshots/x86_64-linux/lts-7.4/8.0.1/pkgdb -package-db /dropbox/src/hblog/.stack-work/install/x86_64-linux/lts-7.4/8.0.1/pkgdb -package-db .stack-work/dist/x86_64-linux/Cabal-1.24.0.0/package.conf.inplace -package-id base-4.9.0.0 -package-id directory-1.2.6.2 -package-id filemanip-0.3.6.3-DFENeGbODv96RwGywUxkEu -package-id filepath-1.4.1.0 -package-id hblog-0.1.0.0-5BseEsncIi47yHhFL2tGbM -package-id pcre-heavy-1.0.0.2-ncNpc9J5vG8YMUKvU47xG -package-id pcre-light-0.4.0.4-IQAaYrFkWFB49U9V8o5b8j -package-id unix-2.7.2.0 -XHaskell2010 app/unphone.hs -threaded -Wall -fhpc -Wall -fhpc -ddump-hi -ddump-to-file 

が、このようにして生成されたプログラムを実行した後、私は.hpcディレクトリまたは任意の.tixを見つけることができませんファイル。

+0

(HTTPS [ '--coverage'のドキュメント]で関連するものがあります:

は、これは私がいないライブラリのコードで実行可能ファイルをテストするために使用するbashスクリプトです。 org/en/latest/coverage /)(現在の開発版のスタックにのみ適用されます)? – sjakobi

+0

ある場合、私はそれを取得しません。 – rlpowell

+0

私はスタックのカバレッジ機能に慣れていません。 [stack issue tracker](https://github.com/commercialhaskell/stack/issues)の機能リクエストを作成することをお勧めします。問題を再現するためのサンプルプロジェクトが理想的です。それはまた、一時的な回避策を生み出す良い機会になるはずです。 – sjakobi

答えて

1

私のコンピュータで.hpcファイルは.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/hpc/になり、.tixファイルは作業ディレクトリにあります。 //docs.haskellstack:

#!/usr/bin/env bash 
stack build --coverage 
stack exec tests 

while getopts ":r" opt; do 
    case $opt in 
     r) 
      hpc markup --hpcdir=.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/hpc/ --destdir=coverage_markup tests.tix 
      firefox coverage_markup/hpc_index.html 
      sleep 120 
    esac 
done 

rm -rf coverage_markup 
rm tests.tix 
関連する問題