首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GVM中使用Go 1.2覆盖工具

GVM中使用Go 1.2覆盖工具
EN

Stack Overflow用户
提问于 2014-01-16 23:06:36
回答 4查看 2.1K关注 0票数 8

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

我的包是用/home/bill/dev/server/model定义的。

当我跑步时:

代码语言:javascript
复制
$ go test -cover -coverprofile cover.out

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

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

当我试图创建一个html封面文件时,我会得到以下错误:

代码语言:javascript
复制
$ 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)

我该怎么解决这个问题?

附加细节

代码语言:javascript
复制
~ 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

代码语言:javascript
复制
~ 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下载的附加依赖项。它们最后出现在/home/bill/..gvm/pkgset/go1.2/global/src中,这是$GOPATH过去经常指向的。所以我换了

代码语言:javascript
复制
~ export GOPATH=/home/bill/dev/:/home/bill/.gvm/pkgsets/go1.2/global

这样测试就可以再次运行,但是cover.out文件中仍然有相同的目录,并且仍然会给出相同的错误。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-21 17:47:50

一个月前我也有同样的问题。我使用以下步骤解决了这个问题。

我的包名叫alpaca

我的工作目录(代码)是/home/pksunkara/coding/alpaca

代码语言:javascript
复制
$ gvm use go1.2
Now using version go1.2

$ echo $GOPATH
/usr/local/lib/gvm/pkgsets/go1.2/global

$ echo $GOROOT
/usr/local/lib/gvm/gos/go1.2

为了解决这个问题,我做了这个

代码语言:javascript
复制
$ mkdir -p $GOPATH/src/github.com/pksunkara
$ ln -s /home/pksunkara/coding/alpaca $GOPATH/src/github.com/pksunkara/alpaca

基本上,我必须将当前的工作文件夹链接到$GOPATH/src文件夹中,alpaca的包路径就变成了github.com/pksunkara/alpaca

现在,go测试和封面的工作原理如下

代码语言:javascript
复制
$ go test -coverprofile=coverage.out github.com/pksunkara/alpaca
$ go tool cover -html=coverage.out

这是重要的

我犯了很多错才解决这个问题。我尝试过所有的事情,包括你尝试过的。我理解了这个问题,阅读了关于戈朗代码组织的文章,这应该是每个使用go的人都必须阅读的内容。

提到的代码组织这里对于使用golang非常重要。

包路径对戈朗很重要。而且,在导入golang时,不应该使用本地路径。他们会起作用的,但不推荐。

让我们假设您的包名是model。您可以简单地将model目录链接到$GOPATH/src/model,然后您将有一个名为model的包路径,您可以使用import "model"导入该路径。但是为了避免碰撞,go建议使用更大的包路径名。

我建议您将其链接到$GOPATH/src/bill.com/server/model,并将其作为import "bill.com/server/model"导入。与./query./util的情况类似。

如果你还有疑问,请问。我会尽量解释更多。

票数 10
EN

Stack Overflow用户

发布于 2014-02-20 03:10:59

这里是获得GVM所有优点的方法,而不必像描述的这里那样破坏您理想的go开发环境,也不必求助于笨重的特例符号链接黑客。

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

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

代码语言:javascript
复制
$ gvm pkgset create dev

这将添加pkgset。接下来,我们可以对其放置路径的位置进行一些定制。运行:

代码语言:javascript
复制
$ gvm pkgenv dev

您应该会看到您最喜欢的文本编辑器打开时会打开一堆环境变量定义。只需将GOPATH条目更改为包含您的dev root!例如,我更改如下:

代码语言:javascript
复制
export GOPATH; GOPATH="$GVM_ROOT/pkgsets/go1.2/dev"

这方面:

代码语言:javascript
复制
export GOPATH; GOPATH="$GVM_ROOT/pkgsets/go1.2/dev:$HOME/go"

此外,通过更改以下内容,gvm是否正确地设置了路径:

代码语言:javascript
复制
export PATH; PATH="${GVM_ROOT}/pkgsets/go1.2/global/bin:${GVM_ROOT}/gos/go1.2/bin:${GVM_OVERLAY_PREFIX}/bin:${GVM_ROOT}/bin:${PATH}"

这方面:

代码语言:javascript
复制
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,您都可以轻松地访问开发环境。

这意味着(除其他事项外)这一工作符合预期:

代码语言:javascript
复制
$ go test -coverprofile=coverage.out github.com/gepoch/foo
$ go tool cover -html=coverage.out

您可以将它添加到您希望的任何pkgset环境中,以便方便地访问dev树。

票数 12
EN

Stack Overflow用户

发布于 2014-01-21 09:33:11

你有没有尝试在gvm的开发人员站点中出现问题?https://github.com/moovweb/gvm (我不确定这是主要站点)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21174766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档