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: ??
  • CLIgopls 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 文件中的每个 TestBenchmark 函数添加一个运行该函数的命令。

此源默认关闭,因为 VS Code 有一个客户端自定义的测试 UI,并且进度通知对于流式输出的测试结果来说用户体验不佳。有关此功能的讨论,请参阅

默认:关闭

文件类型: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 下找到。