教學:使用 VS Code Go 尋找並修正 уяз性的依賴項
透過 Visual Studio Code 的 Go 擴充功能,你可以從編輯器中直接掃描程式碼中的 уяз性。
注意:如需瞭解下圖中包含的 уяз性修正說明,請參閱 govulncheck 教學。
先決條件
- Go。建議你使用最新的 Go 版本來遵循本教學。如需安裝說明,請參閱 安裝 Go。
- VS Code,更新至最新版本。 在此下載。你也可以使用 Vim(詳情請參閱 這裡),但本教學聚焦於 VS Code Go。
- VS Code Go 擴充功能,可從 這裡下載。
- 編輯器專屬設定變更。在複製以下結果之前,你需要根據 這些規格 來修改你的 IDE 設定。
如何使用 VS Code Go 掃描 уяз性
步驟 1。執行「Go:切換 Vulncheck」
「切換漏洞掃描」指令會顯示模組中所列的所有依賴項的漏洞分析。如需使用這項指令,請開啟 IDE 中的「指令面板」(在 Linux/Windows 上按 Ctrl+Shift+P;在 Mac OS 上按 Cmd+Shift+P),並執行「Go: 切換漏洞掃描」。在您的 go.mod 檔案中,您將會看到直接以及間接在您的程式碼中使用的脆弱依賴項的診斷結果。

注意:如需在您自己的編輯器中重新建立本教學課程,請將以下程式碼複製到您的 main.go 檔案。
// This program takes language tags as command-line
// arguments and parses them.
package main
import (
"fmt"
"os"
"golang.org/x/text/language"
)
func main() {
for _, arg := range os.Args[1:] {
tag, err := language.Parse(arg)
if err != nil {
fmt.Printf("%s: error: %v\n", arg, err)
} else if tag == language.Und {
fmt.Printf("%s: undefined\n", arg)
} else {
fmt.Printf("%s: tag %s\n", arg, tag)
}
}
}
然後,請確定程式對應的 go.mod 檔案如下所示
module module1
go 1.18
require golang.org/x/text v0.3.5
現在,執行 go mod tidy
以確定您的 go.sum 檔案已更新。
步驟 2. 透過程式碼動作執行 govulncheck。
使用程式碼動作執行 govulncheck 可以讓您專注於程式碼中實際呼叫的依賴項。VS Code 中的程式碼動作會以電燈泡圖示標記;將游標懸停在相關依賴項上查看漏洞資訊,然後選取「快速修正」以查看選項選單。在這些選項中,選取「執行 govulncheck 以驗證」。此操作會在您的終端機中傳回相關的 govulncheck 輸出。


步驟 3。將游標懸停在 go.mod 檔案中列出的依賴項上。
也可以將游標懸停在 go.mod 檔案中的依賴項上,以找到關於特定依賴項的相關 govulncheck 輸出。對於快速查看依賴項資訊,這個選項比使用程式碼動作更加有效率。

步驟 4. 升級到依賴項的「已修正」版本。
程式碼動作也可快速用於升級到漏洞已修正的依賴項版本。請在程式碼動作下拉式選單中選取「升級」選項。
