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

ant*_*oyo 5 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
Run Code Online (Sandbox Code Playgroud)

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

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

Hpc failure: module mismatch with .tix/.mix file hash number
(perhaps remove test.tix file?)
Run Code Online (Sandbox Code Playgroud)

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

有没有办法摆脱这个问题?

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

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

谢谢。

Yur*_*ras 4

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

cabal configure --enable-coverage
Run Code Online (Sandbox Code Playgroud)

然后照常运行测试:

cabal test
Run Code Online (Sandbox Code Playgroud)

请注意,您可能需要使用--enable-library-coverage较旧的cabal. 此外,IIRChpc在 cabal 中的集成也被破坏了ghc-7.6