gpt4 book ai didi

haskell - 如何使用 HPC 和 Stack 生成覆盖范围叠加?

转载 作者:行者123 更新时间:2023-12-02 10:40:29 25 4
gpt4 key购买 nike

我有一个中小型 Haskell 代码库,我想为其生成覆盖率报告。默认情况下,HPC 提供的覆盖率报告充满了漏报(例如,我使用镜头来访问我的大部分记录字段,而不是自动生成的字段,然后 HPC 报告为未覆盖)。

典型的解决方案是生成一些覆盖,如下所示:https://wiki.haskell.org/Haskell_program_coverage#Hpc_toolkit

当我尝试使用 Stack 执行此操作时,我遇到了问题。

$ stack new --resolver=lts-9.5 hpcTest

如果我们将src/Lib.hs编辑为:

module Lib
( someFunc, otherFunc
) where

someFunc :: IO ()
someFunc = putStrLn "someFunc"

otherFunc :: IO ()
otherFunc = putStrLn "otherFunc"

test/spec.hs为:

import Lib

main :: IO ()
main = someFunc

并运行stack test --coverage

我们得到的覆盖率报告并非 100% 覆盖,因此,如果我们按照 wiki 页面的说明进行操作,我们会得到:stack exec hpc --草案 --hpcdir=.stack-work/dist/x86_64- linux/Cabal-1.24.2.0/hpc/--srcdir=. .stack-work/install/x86_64-linux/lts-9.5/8.0.2/hpc/hpcTest/hpcTest-test/hpcTest-test.tix > myDraft.txt

当我们运行时,myDraft.txt 中会产生以下结果:

module "hpcTest-0.1.0.0-HnYRxRg1qoiyMKwsCMtby:Lib" {
tick function "otherFunc" on line 9;
}

当我们执行下一步并尝试生成覆盖时 stack exec hpc --overlay --hpcdir=.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/hpc/-- srcdir=. myDraft.txt 进程失败,我们收到以下错误:

hpc: can not find hpcTest-0.1.0.0-HnYRxRg1qoiyMKwsCMtby:Lib in ./.hpc, ./.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/hpc/
CallStack (from HasCallStack):
error, called at libraries/hpc/Trace/Hpc/Mix.hs:122:15 in hpc-0.6.0.3:Trace.Hpc.Mix

我在这个过程中做错了什么以及如何让它发挥作用?

最佳答案

: 替换为 /。代码草案应为

module "hpcTest-0.1.0.0-HnYRxRg1qoiyMKwsCMtby/Lib" {
tick function "otherFunc" on line 9;
}

通过查看 stack hpc 创建的 tix 文件,我发现这一点。 (笑)

关于haskell - 如何使用 HPC 和 Stack 生成覆盖范围叠加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46481633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com