[TOOLS] 5 分鐘閱讀OraCore 編輯部

Golangci-lint v2.5.0 加入 8 項 revive 檢查

Golangci-lint v2.5.0 新增 2 個 linter,revive 也多了 8 項檢查,並擴充 Go 1.25 支援。

分享 LinkedIn
Golangci-lint v2.5.0 加入 8 項 revive 檢查

Golangci-lint v2.5.0 新增兩個 linter,revive 也多了八項檢查,對 Go 團隊來說是一次很實際的更新。

說真的,這版不算花俏。它在 2025-09-21 發布,重點是把靜態分析工具補得更完整。

如果你們 CI 早就靠 golangci-lint 擋爛 code,這版很值得看。因為它不是只修小 bug,而是直接把可抓的問題類型加多了。

項目變化備註
版本v2.5.02025-09-21 發布
新 linter2 個godoclintunqueryvet
revive1.11.0 → 1.12.0新增 8 項 options
Go 支援Go 1.25官方列為增強
gofumpt0.8.0 → 0.9.1naked return 規則更清楚

這版到底改了什麼

訂閱 AI 趨勢週報

每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。

不會寄垃圾信,隨時可取消。

這次更新很像典型的維護型升級。它加了兩個新 linter,也把既有工具的規則補強。對使用者來說,這種版本通常比單純改 UI 還有感。

Golangci-lint v2.5.0 加入 8 項 revive 檢查

原因很簡單。godoclint 管文件品質,unqueryvet 管 SQL 查詢風險。兩個方向都很務實。

Go 團隊最怕的不是沒工具,而是工具太老。lint 如果跟不上語言版本和社群工具,最後只會變成一個裝飾品。

  • 新增 2 個 linter。
  • revive 加了 8 個新 options。
  • 支援 Go 1.25。
  • gofumpt 也有更新。

revive 這次最有感

這版最有用的地方,還是 revive 1.12.0。它新增的八項規則,幾乎都對準真實 code review 常見問題。

像是 if/else 分支重複、switch 分支重複、package 名稱和資料夾不一致,這些都很常見。寫的人覺得沒差,review 的人看久了會很煩。

還有 URL scheme、goroutine 與 wait group 的檢查。這些都不是炫技型規則,而是能少踩坑的東西。

「Code should be written to minimize the time it would take for someone else to understand it.」— Robert C. Martin

這句話放在這版很貼切。revive 新增的規則,核心就是減少閱讀成本,也減少後面的人幫你擦屁股。

  • identical-ifelseif-branches:抓重複 if/else 分支。
  • identical-ifelseif-conditions:抓重複條件。
  • identical-switch-branches:抓重複 switch 分支。
  • package-directory-mismatch:抓 package 和目錄不一致。
  • unsecure-url-scheme:抓不安全的 URL scheme。
  • use-waitgroup-go:抓 goroutine 與 wait group 用法。
  • useless-fallthrough:抓沒意義的 fallthrough。

兩個新 linter,方向很明確

godoclint 針對文件品質。這對大型 Go 專案很重要,因為 API 一多,文件差一點就會讓整個套件很難用。

Golangci-lint v2.5.0 加入 8 項 revive 檢查

unqueryvet 則偏向資料庫查詢安全。講白了,它就是幫你少寫出容易出事的 query。

這種組合很像 golangci-lint 一貫的路線。它不是單一 linter,而是把一堆實用檢查包在一起,讓 CI 一次跑完。

  • godoclint:文件與註解品質。
  • unqueryvet:查詢建構與 SQL 風險。
  • gosec:安全檢查仍在持續更新。
  • err113:錯誤處理規則也有小幅調整。

跟前一版比,差在哪

如果拿 v2.4.0 來比,v2.5.0 更像是把工具箱補齊。前一版重點在 Go 1.25 與新網站,這一版則直接把檢查內容往前推。

對團隊來說,這種版本很實際。因為升級 lint 工具,最有價值的通常不是版本號,而是能不能多抓出幾種真問題。

這裡有個很現實的點。lint 規則一多,CI 會更吵。可是如果規則夠準,吵歸吵,至少是在擋 bug,不是在製造雜訊。

  • v2.4.0:Go 1.25 支援。
  • v2.4.0:網站也更新了。
  • v2.5.0:新增 2 個 linter。
  • v2.5.0:revive 一口氣多 8 項檢查。

這版放在 Go 生態裡看

Go 的 lint 生態一直很務實。大家要的是快、準、能塞進 CI,不是華麗展示。

staticcheckgolangci-lintrevive 這幾個工具,各自扮演不同角色。有人管語意,有人管風格,有人負責整合。

v2.5.0 的意思很直接。它在告訴你,這套工具還在追社群需求,不是放著不動。

結尾:升級前先做一件事

如果你們團隊已經開了 revive,先把新規則設成 warning,再看 CI 會冒出多少舊問題。這樣比較不會一口氣把 pipeline 弄爆。

我會建議先看 identical-ifelseif-branchespackage-directory-mismatchunsecure-url-scheme 這三項。這幾個最容易直接抓到真問題,也最容易跟團隊溝通。

講白了,v2.5.0 不是那種會讓你驚呼的版本,但它很適合真的在寫 Go 的團隊。你們如果重視 code review 效率,這版可以排進升級清單。