golang使用vet進行語法檢查

2021-09-22 19:27:07 字數 2469 閱讀 2476

一般來說每一門語言都有一些用來進行語法檢查的工具,vet就是golang中提供的語法檢查工具,可以讓我檢查出package或者原始碼檔案中一些隱含的錯誤,規範我們的專案**,下面我簡單講解下該工具的使用.

vet安裝在每乙個平台作業系統的 go

root

/pkg

/too

ls/goos_$goarch/ 目錄下, 例如我的mac下就安裝下面這個路徑:

/usr/local/go/pkg/tool/darwin_amd64/vet
每個平台的安裝路都不相同,比如linux 32位下可能是:

go vet 和 go tool vet基本上功能類似,go tool vet可以遞迴的對package進行語法檢測,可以自行測試區別。

下面的vet.go**有一行語法錯誤,我們用go vet vet.go檢查

package vet

import (

"fmt"

)func vettest() ***xx

執行結果如下:

go tool vet source/directory/*.go
我們同樣可以利用vet 對乙個package進行檢查,當然傳入的包名必須是 相對路徑 或者完整package。

例如我當前專案目錄在$gopath/src/test ,那麼傳入可以輸入 go vet test/vet 對vet包進行語法檢查

如果我當前工作目錄就是test 那麼我也可以直接輸入 go vet ./vet 利用相對路徑進行語法檢查

不可以同時對package和原始檔進行檢查,但可以同時對多個包或者多個原始檔進行檢查

檢測多個package

go vet  package1  package2
檢測多個原始檔

go vet file1.go file2.go
錯誤的用法

go vet file.go package1
我們還可以給vet 傳遞一些 tag 來指定檢測行為,預設是all,全部檢查,當傳入以下tag的時候all將被設定為false

使用方法

go vet -atomic=false test.go
tag

描述-all

進行全部檢查。如果有其他檢查標記被設定,則命令程式會將此值變為false。預設值為true。

-asmdecl

對組合語言的原始碼檔案進行檢查。預設值為false。

-assign

檢查賦值語句。預設值為false。

-atomic

檢查**中對**包sync/atomic的使用是否正確。預設值為false。

-composites

是否使用復合結構檢查的白名單。僅供測試使用。預設值為true。

-compositewhitelist

對組合語言的原始碼檔案進行檢查。預設值為false。

-assign

檢查賦值語句。預設值為false。

-methods

檢查那些擁有標準命名的方法的簽名。預設值為false。

-printf

檢查**中對列印函式的使用是否正確。預設值為false。

-printfuncs

需要檢查的**中使用的列印函式的名稱的列表,多個函式名稱之間用英文半形逗號分隔。預設值為空字串。

-rangeloops

檢查**中對在range語句塊中迭代賦值的變數的使用是否正確。預設值為false。

-structtags

檢查結構體型別的字段的標籤的格式是否標準。預設值為false。

-unreachable

查詢並報告不可到達的**。預設值為false。

本文參考自

使用VS Code進行Golang開發

windows平台按下ctrl shift p,mac平台按command shift pvs code介面會彈出乙個輸入框,如下圖 輸入框中輸入 go install,下面會自動搜尋相關命令,我們選擇go install update tools這個命令,選中並會回車執行該命令 然後點選 確定 按...

golang基本語法 變數的使用

變數是為儲存特定型別的值而提供給記憶體位置的名稱。在go中宣告變數有多種語法。所以變數的本質就是一小塊記憶體,用於儲存資料,在程式執行過程中數值可以改變 var名稱型別是宣告單個變數的語法。以字母或下劃線開頭,由乙個或多個字母 數字 下劃線組成 宣告乙個變數 第一種,指定變數型別,宣告後若不賦值,使...

Golang中使用lua進行擴充套件

最近在專案中需要使用lua進行擴充套件,發現github上有乙個用golang編寫的lua虛擬機器,名字叫做gopher lua.使用後發現還不錯,藉此分享給大家.lua中的資料型別與golang中的資料型別對應關係作者已經在文件中說明,值得注意的是型別是以l開頭的,型別的名稱是以lt開頭的.gol...