Go扩展程序默认在每个文件保存时运行以下命令,可以在设置中关闭。
go.buildOnSave
go.lintOnSave
go.vetOnSave
"[go]": {
"editor.formatOnSave": false
}
在设置中开启后,当文件保存时可以运行下面的功能:
在每个文件保存时,构建文件所属的包来查找任何编译错误。如果此文件是测试文件,那么将执行 go test -i -c -o
而不是 go build -i -o
。
构建过程生成的二进制文件被写入临时位置,因为此处的目的是仅查找编译错误而不提供二进制文件/可执行文件。
通过以下参数控制保存时构建:
go.buildOnSave
:使用此参数既可以用来关闭保存时构建功能,也可以修改为在包级别或者工作空间级别的保存时构建。go.buildTags
:此处的标签用于构建(build
)和审查(vet
)进程,就像其他被本扩展程序使用的Go工具那样使用-tags
标志。go.buildFlags
:被构建和测试进程使用。go.installDependenciesWhenBuilding
:-i
标志来加速构建过程-i
标志,就将go.installDependenciesWhenBuilding
设置为false
分析器(linter)时一种提供编码风格反馈和建议的工具。默认情况下,此扩展程序使用官方提供的
golint`作为分析器。
可以通过在设置中修改golintTool
参数为gometalinter
来使用更高端的Go Meta Linter
替代默认的分析器。
注:gometalinter已经弃用,更高级的版本是golangci-lint。
Go Meta Linter是多种由本扩展程序安装的分析器的集合。
几个非常有用的分析工具如下:
如果只需要使用其中某个分析器(某些分析器很慢),可以通过修改配置来指定:
"go.lintFlags": ["--disable-all", "--enable=errcheck"],
或者,可以使用megacheck
,它比gometalinter
性能更好,同事只支持工具的子集。
要在保存时禁用分析,则关闭go.lintOnSave
。
如果开启了自动保存功能,那可能需要关闭保存时格式化功能,这样就可以避免代码不断的变化,可以通过修改如下配置:
"[go]": {
"editor.formatOnSave": false
}
默认情况下,使用goreturns
工具进行格式化,可以通过修改go.formatTool
参数来更换为goimports
或者gofmt
工具。
如果发现未使用的导入自动消失了或者未导入的包自动添加了,这就是goreturns
工具在背后起作用。