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

Golangci-lint v2.5.0 新增兩個 linter,revive 也多了八項檢查,對 Go 團隊來說是一次很實際的更新。
說真的,這版不算花俏。它在 2025-09-21 發布,重點是把靜態分析工具補得更完整。
如果你們 CI 早就靠 golangci-lint 擋爛 code,這版很值得看。因為它不是只修小 bug,而是直接把可抓的問題類型加多了。
| 項目 | 變化 | 備註 |
|---|---|---|
| 版本 | v2.5.0 | 2025-09-21 發布 |
| 新 linter | 2 個 | godoclint、unqueryvet |
| revive | 1.11.0 → 1.12.0 | 新增 8 項 options |
| Go 支援 | Go 1.25 | 官方列為增強 |
| gofumpt | 0.8.0 → 0.9.1 | naked return 規則更清楚 |
這版到底改了什麼
訂閱 AI 趨勢週報
每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。
不會寄垃圾信,隨時可取消。
這次更新很像典型的維護型升級。它加了兩個新 linter,也把既有工具的規則補強。對使用者來說,這種版本通常比單純改 UI 還有感。

原因很簡單。godoclint 管文件品質,unqueryvet 管 SQL 查詢風險。兩個方向都很務實。
Go 團隊最怕的不是沒工具,而是工具太老。lint 如果跟不上語言版本和社群工具,最後只會變成一個裝飾品。
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 一多,文件差一點就會讓整個套件很難用。

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,不是華麗展示。
staticcheck、golangci-lint、revive 這幾個工具,各自扮演不同角色。有人管語意,有人管風格,有人負責整合。
v2.5.0 的意思很直接。它在告訴你,這套工具還在追社群需求,不是放著不動。
結尾:升級前先做一件事
如果你們團隊已經開了 revive,先把新規則設成 warning,再看 CI 會冒出多少舊問題。這樣比較不會一口氣把 pipeline 弄爆。
我會建議先看 identical-ifelseif-branches、package-directory-mismatch、unsecure-url-scheme 這三項。這幾個最容易直接抓到真問題,也最容易跟團隊溝通。
講白了,v2.5.0 不是那種會讓你驚呼的版本,但它很適合真的在寫 Go 的團隊。你們如果重視 code review 效率,這版可以排進升級清單。