iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0

雖然go本身有內建基本的lint功能,會幫你檢查是否有沒用到的變數,或是參數有沒有少帶之類的,
但是對於沒有沒使用到的函數,為了方便沒處理的錯誤(error)之類的問題是檢查不出來的,
雖然這些問題並不會直接地影響你的服務,但是會造成閱讀以及之後維護的麻煩,
因此有個能找出這些問題的工具是很有幫助的。
在這邊介紹golangci-lint,他內建許多檢測,可以幫助你檢查出你的程式碼的一些需要處理的地方。

golangci.yml

在安裝golangci-lint之前,必須要先針對專案建立設定檔。
首先,在你要跑golangci的專案目錄中建立一個檔案叫做.golangci.yml,
範例可以直接複製官方github內的內容,這個檔案是設定跑golangci-lint時,
需要檢查哪些地方,哪些檢查可以忽略等等的設定檔,
有些檢查出來的結果你已知沒有影響,但是會被判定成需要修正,
像是我有專案需要用到md5的部分,但是會被lint判斷成要修正,
這時就可以設定md5的檢查要忽略掉,可以透過這種方式來客製化專案需要檢查的地方。

安裝

要安裝golangci-lint有幾種方式,一種是mac用brew安裝

brew install golangci/tap/golangci-lint
brew upgrade golangci/tap/golangci-lint

如果是mac的使用者可以用這種方式安裝。
另一種個人比較推薦,是透過docker去執行

docker run --rm -v $(pwd):/app -w /app golangci/golangci-lint:v1.31.0 golangci-lint run -v

在要檢查的專案內執行這段指令,他就會在當前目錄建立一個以golangci-lint image為基底的容器,
並在裡面執行golangci-lint檢查,這種方式好處在於不管是在mac或linux,只要有docker,
就可以跑golangci-lint檢查。

檢查出來有需要修正的訊息會像下面這樣:

server.go:960:6: shadow: declaration of "err" shadows declaration at line 932 (govet)
					err := buildServer(client, message, true, false, false)

會告知你哪一行有需要修正的地方,跟是什麼原因需要修正,如果看不懂原因可以上google查找,
通常都找得到,透過這種方式就可以更加地強化你的專案程式碼了。


上一篇
Day28-用dokcerfile建立測試image
下一篇
Day30-完賽感想
系列文
從0開始的golang web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言