AGENTIC COMMONSAI 產業簡報

繁中EN

主題AI 編程與開發工具出版

返回文章列表

Ruff 0.16:預設規則從59條拉到413條

摘要: 7 月 23 日,Astral 為 Python linter「Ruff」推出了 v0.16.0。對大多數專案而言,這一版的關鍵差異一句話就能講完:升級完成後,即使一個設定都不寫,ruff check 也會直接執行 413 條規則,而前一版預設只跑 59 條。官方部落格把這件事寫進了標題——「Ruff now enables 413 rules by default, up from 59」。

7 月 23 日,Astral 為 Python linter「Ruff」推出了 v0.16.0。對大多數專案而言,這一版的關鍵差異一句話就能講完:升級完成後,即使一個設定都不寫,ruff check 也會直接執行 413 條規則,而前一版預設只跑 59 條。官方部落格把這件事寫進了標題——「Ruff now enables 413 rules by default, up from 59」。

預設值向來是工具表明立場的方式。預設規則數一次翻到七倍,等於 Astral 認定「開箱就嚴格」已經成為 Python 專案的基本期待。動手升級之前,先弄清楚它動了哪些地方、又為何要動。

預設規則從 59 條擴到 413 條的經過

這不是一時興起把規則倒進來,而是 Ruff 推動已久的「規則重新分類」計畫(issue #1774)走到收尾階段:團隊逐一檢視原本需要 opt-in 的規則,把穩定度與訊號強度都足夠的挑出來,納入預設集。整體規則數量也同步成長,v0.1.0 時期為 708 條,如今已達 968 條。

之所以敢把預設開得這麼廣,底氣來自速度。Ruff 以 Rust 撰寫,把所有規則全部跑過一輪,仍然比舊世代工具只開少數規則來得快。當檢查的成本幾乎貼近於零,「預設全開、個案再關」自然就是合理的策略。

十八條規則退出預設集

有加也有減。18 條屬於意見型(opinionated)的 pycodestyle 與 pyflakes 規則被移出預設,其中包括 E401(同一行出現多個 import)、E711/E712(與 None、True 比較)、E731(把 lambda 賦值)、E741(名稱易生歧義的變數)、F403(星號 import)等。這些規則長年是風格爭論的來源,官方準備了設定片段,想恢復舊行為的專案可以自行加回。

方向很明確:預設集應該高訊號、低爭議,風格偏好留給使用者自己挑。這與許多 linter「預設越走越寬鬆」的路線正好相反——Ruff 的作法是錯誤類規則全面打開,風格類規則退位。

Markdown 格式化與新的抑制語法

v0.16 另外帶來兩組實用功能。第一,Ruff 現在可以格式化 Markdown 檔案裡內嵌的 Python 程式碼區塊,涵蓋 python、pyi、pycon 三種圍籬區塊以及 Quarto 的 {python} 區塊——文件中的範例程式碼終於能與程式本體套用同一套格式化。

第二,抑制診斷的語法至此補齊:新增 ruff: ignore(寫在行內或前一行的寫法)與 ruff: file-ignore(針對整個檔案),再加上 v0.15 引入的 ruff: disable/ruff: enable,這些寫法都接受附上原因文字,並有新的 --add-ignore 參數可自動產生。其他值得留意的還有:check 與 format --check 的輸出會直接顯示修復 diff,format --check 也支援 JSON 與 GitHub/GitLab 註解格式;另有 12 條規則結束預覽、轉為正式。

一個規模不大的破壞性變更:JSON 輸出的部分欄位(例如 filename、location)現在可能為 null,有在解析這份輸出的工具需要確認。

升級建議

實務上有三件事。第一,升級後先在本機跑一次 ruff check,看看新診斷冒出多少,再決定要逐條採用、動手修碼,還是套用官方設定片段還原舊預設——若連 CI 一起直接升級,很可能一次炸出一批新的紅字。第二,把版本鎖住,讓「預設值改變」成為一次可審核、可回滾的提交,而不是隨著相依套件悄悄飄進來。第三,專案文件裡若有大量 Python 範例,這一版之後格式化的守備範圍變寬了,值得順手把 Markdown 也納入檢查。

參考來源

AGENTIC COMMONS由 PHLEGON LABS 經營
分享X電郵
支持我們

相關閱讀

  1. Cloudflare 開源 Void:Vite 全端部署一條龍

    Cloudflare 與 VoidZero 開源 Void 平台、SDK 與 CLI,把 Vite 前端工具鏈延伸到全端部署,並自動供應 Cloudflare 資源。

    Cloudflare

  2. 把 Next.js 搬上 Vite:Vinext 1.0 對部署選擇的三個實際影響

    Cloudflare 發布 Vinext 1.0,讓 Next.js 應用可部署到 Workers、Netlify 或 Lambda,並把預渲染搬進快取預熱流程。

    Cloudflare

  3. Haiku R1/beta6 出爐:25 週年後的回歸之作

    距離 beta5 約兩年,Haiku 於 25 週年後一週發布 R1/beta6:解決逾 530 張票券,Firefox 正式品牌進駐、QEMU 獲 NVMM 硬體虛擬化支援,git status 熱快取案例從 15 秒降到 2.5 秒。

    Open Source