Gopls:代码 Lens
“代码 Lens”(code lens)是指与源文件中的一个范围关联的命令。VS Code 手册将代码 Lens 描述为“可操作的、上下文相关的信息,穿插在您的源代码中”。LSP 的 textDocument/codeLens
操作会请求文件的当前代码 Lens 集合。
Gopls 从多个来源生成代码 Lens。本文档将对其进行描述。
它们可以通过 codelenses
设置启用和禁用。它们的功能可能会发生变化。
客户端支持 (Client support)
- VS Code:代码 Lens 显示为源代码行上方的小文本链接。
- Emacs + eglot:不支持,但有一个原型存在于 https://github.com/joaotavora/eglot/pull/71。
- Vim + coc.nvim: ??
- CLI:
gopls codelens
。例如,gopls codelens -exec file.go:123 "run test"
会在指定行运行测试。
generate
:运行 go generate
此代码 Lens 源会为任何 //go:generate
注释添加命令,以在当前目录及其所有子目录(递归)中运行 go generate
。
有关更多详细信息,请参阅 生成代码。
默认:开启
文件类型:Go
regenerate_cgo
:重新生成 cgo 声明
此代码 Lens 源会为 import "C"
声明添加命令,以重新运行 cgo 命令来重新生成相应的 Go 声明。
在编辑导入语句旁的注释中的 C 代码,或编辑它包含的 C 头文件后,请使用此功能。
默认:开启
文件类型:Go
test
:运行测试和基准测试
此代码 Lens 源会为 *_test.go
文件中的每个 Test
和 Benchmark
函数添加一个运行该函数的命令。
此源默认关闭,因为 VS Code 有一个客户端自定义的测试 UI,并且进度通知对于流式输出的测试结果来说用户体验不佳。有关此功能的讨论,请参阅
- golang/go#67400。
- 另一种方法请参阅 https://github.com/joaotavora/eglot/discussions/1402。
默认:关闭
文件类型:Go
run_govulncheck
:运行 govulncheck (旧版)
此设置是实验性的,可能会被删除。
此代码 Lens 源会为 go.mod 文件中的 module
指令添加一个异步运行 Govulncheck 的命令。
Govulncheck 是一个静态分析工具,它会计算应用程序(包括依赖项)中可达的所有函数;查询已知安全漏洞的数据库;并报告它发现的所有潜在问题。
默认:关闭
文件类型:go.mod
tidy
:清理 go.mod 文件
此代码 Lens 源会为 go.mod 文件中的 module
指令添加一个运行 go mod tidy
的命令,该命令可确保 go.mod 文件与模块中的源代码一致。
默认:开启
文件类型:go.mod
upgrade_dependency
:更新依赖项
此代码 Lens 源会为 go.mod 文件中的 module
指令添加命令,用于
- 检查可用升级,
- 升级直接依赖项,以及
- 对所有依赖项进行递归升级。
默认:开启
文件类型:go.mod
vendor
:更新 vendor 目录
此代码 Lens 源会为 go.mod 文件中的 module
指令添加一个运行 go mod vendor
的命令,该命令会创建或更新模块根目录下的 vendor
目录,使其包含所有必需包依赖项的最新副本。
默认:开启
文件类型:go.mod
vulncheck
:运行 govulncheck
此设置是实验性的,可能会被删除。
此代码 Lens 源会为 go.mod 文件中的 module
指令添加一个同步运行 govulncheck 的命令。
Govulncheck 是一个静态分析工具,它会计算应用程序(包括依赖项)中可达的所有函数;查询已知安全漏洞的数据库;并报告它发现的所有潜在问题。
默认:关闭
文件类型:go.mod
本文档的源代码可以在 golang.org/x/tools/gopls/doc 下找到。