haskell - Cabal 和 HPC 以及运行代码覆盖率测试时的错误

标签 haskell cabal

我使用 Cabal 来运行我的测试。

以下是它在 .cabal 文件中的配置方式:

test-suite test
    type:           exitcode-stdio-1.0
    main-is:        Test.hs
    build-depends:  base >= 4.7 && < 4.8, containers >=0.5 && <0.6, ghc, test-framework >=0.8 && <0.9, QuickCheck >=2.7 && <2.8, HUnit >=1.2 && <1.3, test-framework-hunit, test-framework-quickcheck2
    default-language:    Haskell2010
    ghc-options:    -Wall -fhpc

当我第一次运行测试时,一切正常。

但是,如果我更改测试并再次运行它们,则会收到以下错误:

Hpc failure: module mismatch with .tix/.mix file hash number
(perhaps remove test.tix file?)

所以,我需要手动删除 .tix 文件。

有办法解决这个问题吗?

顺便问一下,有没有办法让这个.tix文件生成在dist目录而不是根目录?

如何配置我的 Cabal 文件以便与 HPC 良好配合(即在 dist 目录中生成生成的 HTML 文件)?

谢谢。

最佳答案

要使 cabal 生成代码覆盖率报告,您可以在配置包时启用它:

cabal configure --enable-coverage

然后照常运行测试:

cabal test

请注意,您可能需要使用旧版 cabal 来使用 --enable-library-coverage。此外,ghc-7.6 中的 IIRC hpc 集成在 cabal 中也被破坏。

关于haskell - Cabal 和 HPC 以及运行代码覆盖率测试时的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28416827/

相关文章:

haskell - 如何让 ghci 查看我从 cabal 安装的软件包?

haskell - 在 cabal 文件中加载模块 Data.Number.CReal 时出现问题

linux - haskell cabal : Mysterious missing or recursive dependencies

haskell - 如何在Haskell中捕获错误并忽略它?

haskell - 在这种情况下,为什么在与嵌套的 StateT monadT 交互时不需要使用 'lift'?

haskell - 优雅前奏曲(头.头)

haskell - Cabal 1.18 在 OS X 上的几乎所有东西上都给出了总线错误 10

haskell - 为什么 MonadReader r (StateT s m) 使用底层 monad 的实例

haskell - 如何迭代记录字段?

haskell - cabal:无法配置 random-1.0.1.3。它需要 base >=5 && <5