-
Notifications
You must be signed in to change notification settings - Fork 8
20180920_golang project quality
title: "Go 語言專案程式碼品質" date: 2018-09-20 type: blog author: AppleBoy link: https://blog.wu-boy.com/2018/09/golang-project-quality/ layout: post comments: true
本篇想介紹我在寫開源專案會用到的工具及服務,其實在編譯 Go 語言同時,就已經確保了一次程式碼品質,或者是在編譯之前會跑 go fmt
或 go vet
的驗證,網路上也蠻多工具可以提供更多驗證,像是:
- errcheck (檢查是否略過錯誤驗證)
- unused (檢查沒用到的 func, variable or const)
- structcheck (檢查 struct 內沒有用到的 field)
- varcheck (拿掉沒有用到的 const 變數)
- deadcode (沒有用到的程式碼)
但是這麼多驗證工具,要一一導入專案,實在有點麻煩,我自己在公司內部只有驗證 go fmt
或 go vet
或 misspell-check (驗證英文單字是否錯誤) 及 vendor-check (驗證開發者是否有去修改過 vendor 而沒有恢復修正)。如果你有在玩開源專案,其實可以不用這麼麻煩,導入兩套工具就可以讓你安心驗證別人發的 PR。底下來介紹一套工具及另外一套雲端服務。
我錄製了一段影片介紹這兩套工具及服務,不想看本文的可以直接看影片
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/lXzQ8ZHUpPY" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>此影片同步在 Udemy 課程內,如果有購買課程的朋友們,也可以在 Udemy 上面觀看,如果想學習更多 Go 語言教學,現在可以透過 $1800 價格購買。
golangci.com 服務
先說好這套服務對於私有專案是需要付費的,如果是開源專案,請盡情使用,目前只有支援 GitHub 上面的專案為主,不支援像是 GitLab 或 Bitbucket。對於有在寫 Go 開源專案的開發者,務必啟用這服務,此服務幫忙驗證超多檢查,請看底下
當然不只有幫忙整合 CI/CD 的功能,還會在每個 PR 只要遇到驗證錯誤,直接會有 Bot 留言
非常的方便,假設您的團隊有在 GitHub 使用,強烈建議導入這套服務。另外也可以進入 Repo 列表內看到詳細的錯誤清單。
go-critic 也是一套檢查程式碼品質的工具,只提供 CLI 方式驗證,不提供雲端整合服務,如果要導入 CI/CD 流程,請自行取用,為什麼特別介紹這套,這套工具其實是在幫助您如何寫出 Best Practice 的 Go 語言程式碼,就算你不打算用這套工具,那推薦壹定要閱讀完驗證清單,這會讓專案的程式碼品質再提升。像是寫 Bool 函式,可能會這樣命名:
func Enabled() bool
用了此工具,會建議寫成 (是不是更好閱讀了)
func IsEnabled() bool
還有很多驗證請自行參考,不過此工具會根據專案的大小來決定執行時間,所以我個人不推薦導入 CI/CD 流程,而是久久可以在自己電腦跑一次,一次性修改全部,這樣才不會影響部署時間。
上面提供的兩套工具及服務,大家如果有興趣,歡迎導入,第一套雲服務我個人都用在開源專案,第二套工具,會用在公司內部專案,但是不會導入在 CI/CD 流程內。
-
Go 語言 1.11 版本推出 go module (0)
-
用 Docker 發送 Line 訊息 (10)
-
開發者另類的自架 Git 服務選擇: Gitea (4)
-
在 Github 專案內搜尋 Golang 函式,Golang 開發者必裝 Chrome Extension (2)
-
在 DigitalOcean 新竹社群簡介 Gitea 開源專案 (0)
-
在 Go 語言使用 Viper 管理設定檔 (0)
-
Go 語言官方推出的 dep 使用心得 (6)
-
Go 語言框架 Gin 終於發佈 v1.2 版本 (2)
-
gofight 支援多個檔案上傳測試 (0)
-
Golang 套件管理工具 Glide (2)