Open8

Ruff

shotakahashotakaha

https://docs.astral.sh/ruff/

  • Pythonのリンター&フォーマッター
  • リンター(flake8pycodestyleなど)がひとまとめにできる
  • フォーマッター(black)もひとまとめにできる(v0.13から)
  • 設定をpyproject.tomlにまとめられる!
shotakahashotakaha

https://docs.astral.sh/ruff/linter/

$ ruff check .

なにも設定せずに、とりあえずruff check .してみてもOK

$ ruff check . --select ALL

--select ALLして、すべてのリンターオプションで確認してみてもよい

$ ruff check . --select D

docstringに対するリンターだけど有効にして確認できたりする

$ ruff check . --fix

自動修正できるところは、修正してくれる

shotakahashotakaha

リンターの設定を確認

$ ruff check --show-settings
Resolved settings for: "docs/conf.py"
Settings path: "pyproject.toml"

# General Settings
cache_dir = ".ruff_cache"
fix = false
fix_only = false
output_format = full
show_fixes = false
unsafe_fixes = hint

# File Resolver Settings
...
# Linter Settings
...
# Linter Plugins
...
# Formatter Settings
...
# Analyze Settings
...
  • --show-settingsオプションで、現在のリンター設定がドバーと表示される
  • セクションが設けられているので、それを目安に設定を探して、確認するとよさそう
shotakahashotakaha

リンターの対象ファイルを確認

$ ruff check --show-files
....py
....ipynb
  • --show-filesで対象ファイルを確認できる
  • .gitignoreで除外したファイルなどは、デフォルトで除外されるっぽい
shotakahashotakaha

リンターの結果を集計

$ ruff check --statistics
35	F821	[ ] undefined-name
23	F401	[*] unused-import
 8	F841	[*] unused-variable
  • --staticsオプションで、リンターのエラーコードごとに集計できる
    • [*]付は自動修正できるというマーク?
  • ruff checkだけだとドバーと表示されてしまい、どのエラーが問題か(寄与が大きいか)がすぐにわからない
  • ruffを導入するときの初手で実行し、対応の方針を検討するのがよさそう
shotakahashotakaha

ルールの詳細を確認

$ ruff rule F821
$ ruff rule F401
$ ruff rule F841
  • ruleコマンドで、指摘されたルールの詳細を確認できる
    • ルールの理由
    • どうしてこの書き方はいけないのか
    • 書き換えのサンプルコード
    • オプションの設定方法
    • リファレンス
  • ルールに対応するかどうか、適用するかどうか、検討しやすい