禁用去检查"复合文字使用未加密的字段"

时间:2016-03-29 01:33:41

标签: go warnings suppress-warnings

我在我的CI工具上运行go vet,并开始收到错误:

composite literal uses unkeyed fields

因为我实例化了

type A struct {
   *B
}
像这样:

A{b} // b is of type *B

我不在乎这个警告,并希望在我的兽医检查中禁用它。我该怎么做?

6 个答案:

答案 0 :(得分:43)

您可以将其停用,也可以修改代码:

a := A{B: b}

playground

答案 1 :(得分:19)

$ go doc cmd/vet
     

默认情况下会执行所有检查。如果明确设置了任何标志   为true,只运行那些测试。相反,如果有任何旗帜   显式设置为false,仅禁用那些测试。从而   -printf = true运行printf检查,-printf = false运行除printf检查之外的所有检查。

Unkeyed composite literals

Flag: -composites

Composite struct literals that do not use the field-keyed syntax.

答案 2 :(得分:3)

如果您使用的是语言服务器。

Gopls on by default in the VS Code Go extension

gopls 兽医检查default.

"gopls": {
     "analyses": { "composites": false }
 },

答案 3 :(得分:1)

go tool vet -composites=false .

答案 4 :(得分:1)

如果使用VS代码,则必须在设置下手动设置标记

settings > Extensions > Go

向下滚动到“审核标志”部分

enter image description here

添加项目并添加标志

-composites=false .

单击确定。

再次保存文件之一或重新启动VS代码以查看效果。

答案 5 :(得分:0)

您可以使用-composites=false标志将其禁用:例如,

go vet -composites=false .

注意:go tool vet已弃用