09-保存时自动执行

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是多种由本扩展程序安装的分析器的集合。

几个非常有用的分析工具如下:

  • errcheck:检查代码中的未检查错误
  • varcheck:查找未使用的全局变量和常量
  • deadcode:查找未使用的代码

如果只需要使用其中某个分析器(某些分析器很慢),可以通过修改配置来指定:

 "go.lintFlags": ["--disable-all", "--enable=errcheck"],

或者,可以使用megacheck,它比gometalinter性能更好,同事只支持工具的子集。

要在保存时禁用分析,则关闭go.lintOnSave

保存时格式化

如果开启了自动保存功能,那可能需要关闭保存时格式化功能,这样就可以避免代码不断的变化,可以通过修改如下配置:

"[go]": {
   "editor.formatOnSave": false
}

默认情况下,使用goreturns工具进行格式化,可以通过修改go.formatTool参数来更换为goimports或者gofmt工具。

如果发现未使用的导入自动消失了或者未导入的包自动添加了,这就是goreturns工具在背后起作用。

上次修改: 14 April 2020