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