gpt4 book ai didi

go - 在 GVM 中使用 Go 1.2 覆盖工具

转载 作者:IT王子 更新时间:2023-10-29 01:06:45 25 4
gpt4 key购买 nike

我正在使用 GVM 来管理我的 go 安装和路径,一切似乎都运行良好 - 我可以运行测试并生成构建。我现在正在尝试生成代码覆盖率文件,但遇到了一些困难。

我的包在 /home/bill/dev/server/model 中定义。

当我运行时:

$ go test -cover -coverprofile cover.out

测试成功运行并生成覆盖率文件。但是,覆盖文件中的路径如下所示:


_/home/bill/dev/server/model/activity.go:19.34,21.2 1 1

当我尝试创建一个 html 封面文件时出现以下错误:

$ go tool cover -html=cover.out

cover: can't find "activity.go": cannot find package "_/home/bill/dev/server/model/" in any of:
/home/bill/.gvm/gos/go1.2/src/pkg/_/home/bill/dev/server/model (from $GOROOT)
/home/bill/.gvm/pkgsets/go1.2/global/src/_/home/bill/dev/server/model (from $GOPATH)

我该如何解决这个问题?

其他详细信息

~ gvm use go1.2
Now using version go1.2

~ echo $GOPATH
/home/bill/.gvm/pkgsets/go1.2/global

~ echo $GOROOT
/home/bill/.gvm/gos/go1.2

我尝试手动设置我的 $GOPATH 但这并没有改变 cover.out 文件。我也尝试手动编辑 cover.out 文件,但我无法弄清楚它实际需要的路径。在上面显示的默认配置中,运行 go test 会按预期运行。

正在尝试修复 GOPATH

~ export GOPATH=/home/bill/dev/
~ ln -s /home/bill/dev/server /home/bill/.gvm/gos/go1.2/src

~ go test
cannot find package "code.google.com/p/go.crypto/pbkdf2" in any of:
/home/bill/.gvm/gos/go1.2/src/pkg/code.google.com/p/go.crypto/pbkdf2 (from $GOROOT)
/home/bill/dev/src/code.google.com/p/go.crypto/pbkdf2 (from $GOPATH)
../util/log.go:4:2: cannot find package "github.com/kr/pretty" in any of:
/home/bill/.gvm/gos/go1.2/src/pkg/github.com/kr/pretty (from $GOROOT)
/home/bill/dev/src/github.com/kr/pretty (from $GOPATH)

这些是我之前使用 go get 下载的附加依赖项。它们最终位于 $GOPATH 过去指向的/home/bill/.gvm/pkgsets/go1.2/global/src 中。所以我改变了GOPATH

~ export GOPATH=/home/bill/dev/:/home/bill/.gvm/pkgsets/go1.2/global

所以测试再次运行,但 cover.out 文件中仍然有相同的目录,并且仍然给我同样的错误。

最佳答案

这是获得 GVM 的所有优势的方法,而不必像描述的那样破坏您理想的 Go 开发环境 here ,并且不必求助于笨拙的特殊情况符号链接(symbolic link)黑客。

假设我已经根据 ~/go 中的标准设置了我所有的开发(所以我的 github 中的包 foo 将在 ~/去/github.com/gepoch/foo)

首先,我们将制作一个特殊用途的 pkgset,它将愉快地引用我们的开发环境。只需运行:

$ gvm pkgset create dev

这将添加 pkgset。接下来,我们可以对它放置 go 路径的确切位置进行一些自定义。运行:

$ gvm pkgenv dev

您应该看到您最喜欢的文本编辑器弹出并打开了一堆环境变量定义。只需更改 GOPATH 条目以包含您的开发根目录!例如,我改变这个:

export GOPATH; GOPATH="$GVM_ROOT/pkgsets/go1.2/dev"

进入这个:

export GOPATH; GOPATH="$GVM_ROOT/pkgsets/go1.2/dev:$HOME/go"

此外,让 gvm 通过更改以下内容正确设置您的路径:

export PATH; PATH="${GVM_ROOT}/pkgsets/go1.2/global/bin:${GVM_ROOT}/gos/go1.2/bin:${GVM_OVERLAY_PREFIX}/bin:${GVM_ROOT}/bin:${PATH}"

进入这个:

export PATH; PATH="${GVM_ROOT}/pkgsets/go1.2/global/bin:${GVM_ROOT}/gos/go1.2/bin:${GVM_OVERLAY_PREFIX}/bin:${GVM_ROOT}/bin:${PATH}:$HOME/go/bin"

重新启动您的终端,就是这样!每当您运行 $ gvm pkgset use dev 时,您都可以轻松访问您的开发环境。

这意味着(除其他外)它按预期工作:

$ go test -coverprofile=coverage.out github.com/gepoch/foo
$ go tool cover -html=coverage.out

您可以将其添加到您希望的任何 pkgset 环境中,以便轻松访问开发树。

关于go - 在 GVM 中使用 Go 1.2 覆盖工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174766/

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