我想运行go vet我的整个 Go 项目。该项目遵循标准 Go 项目布局,并具有许多“内部”包。
project
|- go.mod
|- main.go
|- internal
| |- package1
| |- foo/pack
| |- bar/pack
|- vendor
|- github.com
|- foo
| bar
Run Code Online (Sandbox Code Playgroud)
如何运行go vet所有代码?理想情况下,这只是我的代码并排除vendor目录。
这是不起作用的:
go vet- 仅涵盖顶层main.goJon*_*art 14
与许多命令一样,针对包go vet列表运行。可以通过多种方式列出包。看。go help packages
该命令将执行我们想要的操作:
go vet ./...
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令来确认正在审查的软件包列表go list:
go list ./...
Run Code Online (Sandbox Code Playgroud)
具体来说,它利用了这些语法技巧:
作为根路径或以
.或..元素开头的导入路径被解释为文件系统路径并表示该目录中的包。
如果导入路径包含一个或多个
...通配符,则它是一种模式,每个通配符可以匹配任何字符串,包括空字符串和包含斜杠的字符串。
./..../vendor与 或 的子目录中的包不匹配./mycode/vendor