概要
- Ruff v0.16.0 がリリース
- デフォルトで有効なルール数が大幅増加
- Markdownコードブロックのフォーマット対応
- 新しい抑制コメント機能の追加
- 各種出力・動作の安定化と細かな破壊的変更
Ruff v0.16.0リリース概要
- Ruff は超高速なPython用 リンター兼フォーマッター、Rust製
- Black, Flake8, isort, pydocstyle, pyupgrade など多数ツールの置き換え可能
- ほぼ全ユーザーが 大きな設定変更なし でv0.16へ移行可能
- PyPI や任意のパッケージマネージャからインストール可能
デフォルトルールセットの強化
- デフォルトで 413個のルール が有効化(前バージョンは59個)
- 新しいルールには 重大なバグや構文エラー検出 を含む
- flake8-bugbear (B) や pyupgrade (UP)、独自の RUFカテゴリ のルールも含まれる
- 従来のデフォルトルールに戻したい場合は設定で対応可能
[lint] select = ["E4", "E7", "E9", "F"]で旧ルールに戻すことが可能
- 今後も ルール分類の見直し を予定
v0.16の新機能
- Markdownファイル内のPythonコードブロック のフォーマット対応
python, py, python3, py3, pyi, pyconのinfo stringに対応- Quartoノートブック(
.qmd)にも対応 - フォーマット抑制は
fmt: off/onコメントやHTMLコメントで制御可能 - Markdown全体の除外は
extend-excludeで設定可能
ruff: ignoreコメントによる抑制機能の強化
- ruff: ignore コメントで単行または次の論理行の診断を抑制可能
import math # ruff: ignore[F401]のように使用
- ruff: file-ignore でファイル全体の診断を抑制可能
- 理由の記載も可能(例:
# ruff: file-ignore[F401] Allow unused imports in this file)
- 理由の記載も可能(例:
- --add-ignore CLIフラグで自動挿入に対応
- ルール名(例:
unused-import)でも抑制可能
診断・修正内容の出力改善
- check や format --check コマンドで修正内容のdiffを標準出力に表示
- JSON出力 など多様なフォーマットに対応
- GitHub/GitLabのCIアノテーション用フォーマットもサポート
- JSON出力の一部フィールドが nullを許容 するように変更(破壊的変更)
ルール・動作の安定化
- 以下のルールが 正式安定化 (プレビュー解除)
- AIR303, CPY001, FURB164, FURB192, ISC004, LOG004, PLE0304, PLR0917, PLR1708, RUF036, RUF063, RUF068
- 追加の動作安定化
- BLE001: loggingのcritical, error, exception以外で例外をロギングした場合は抑制
- FA102: PEP 585互換APIもチェック対象に拡張
- INT001〜003: gettextの多様な利用法に対応
- S310: ローカルバインディング解決で誤検知減少
- S508, S509: PySNMP新API対応
- UP019: typing_extensions.Textも認識
コミュニティ・情報
- フィードバック提供者・コントリビューターへの感謝
- GitHub で詳細なチェンジログ公開
- Ruff開発元 Astral についても紹介
参考
- 公式ドキュメントの Default Rulesページ
- 詳細な仕様・設定例は公式ドキュメント参照