使用堆栈生成覆盖率报告

4
我想使用 Stack 生成代码覆盖率报告。我运行的命令如下(省略了通过--test-arguments传递给测试套件的选项):
$ stack test --coverage

这将执行测试,然后输出以下内容:

错误:myproject的测试套件“tests”的覆盖率报告未考虑任何代码。可能的原因之一是您的测试套件构建了库代码(请参见stack issue#1008)。这也可能表明stack或hpc程序存在错误。如果您认为您的覆盖率报告应具有实际意义,请报告此问题。

我认为它应该(这会创建空报告)。我的包的所有组件的GHC选项都是相同的。测试套件无需重新构建库。毕竟,如果Cabal可以生成报告,那么在相同的Cabal配置下,Stack也应该能够生成报告,或者我错了吗?

如建议一样,我在Stack GitHub存储库中打开了一个问题


一段时间后,我决定创建一个好用的沙盒并使用Cabal来生成报告(你知道,我真的需要看到这份报告)。之前它是可以工作的,但现在我得到了以下错误:

$ cabal sandbox init
… <everything OK>
$ cabal update
… <everything OK>
$ cabal install --only-dependencies --enable-tests
… <everything OK>
$ cabal configure --enable-tests --enable-coverage
… <everything OK>
$ cabal build
… <everything OK>
$ cabal test
Running 2 test suites...
Test suite tests: RUNNING...
Test suite tests: PASS
Test suite logged to: dist/test/myproject-0.1.0-tests.log
hpc: can not find HUnit_DDLSMCRs3jyLBDbJPCH01j/Test.HUnit.Lang in ["./.hpc","./dist/hpc/vanilla/mix/myproject-0.1.0","./dist/hpc/vanilla/mix/tests"]

什么?虽然我之前生成了很多报告,但这个我从来没有见过。似乎有人在上面决定今天不给我这份报告。


你知道如何使用Stack生成覆盖率报告吗?有人成功过吗?


你使用的 stack 版本是什么?最新版本与 hpc 更兼容。我正在使用 0.1.6.0,它基本上可以工作。 - Yuras
2
另请参见https://github.com/commercialhaskell/stack/issues/1181 - Yuras
@Yuras,stack --version版本0.1.6.0,Git修订版e22271f5ce9afa2cb5be3bad9cafa392c623f85c(2313次提交)x86_64 - Mark Karpov
@Yuras,感谢您提供那个问题的链接。我不是唯一遇到这个问题的人!我想我的问题也应该得到一些反馈。 - Mark Karpov
2个回答

1
在我的情况下,我仍然遇到了这个错误。运行:
stack clean
stack test --coverage

解决了问题,如此处所述。

0

最近上游的更改已经修复了它。对于使用0.1.7.0及更高版本的用户应该已经解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接