Go扩展程序默认在每个文件保存时运行以下命令,可以在设置中关闭。
go.buildOnSavego.lintOnSavego.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工具在背后起作用。