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 下找到。