Pythonの静的解析ツールとして、Ruffが注目を集めています。RuffはRustで実装された高速なPython用Linterで、従来よく使われていたFlake8に比べて数十倍短い時間で処理が終わります。
Ruffの導入
Ruffを導入する前は、以下のツールを利用していました。
- フォーマッター
- black(ベースとあるフォーマッター)
- isort(import文のソート)
- autoflake(unused importを削除するため)
- リンター
- mypy(型チェック)
- flake8(簡易的な静的解析)
Ruffを導入した後は、これらのツールがすべてRuffに置き換えられました。
Ruffの設定
Ruffの設定はpyproject.toml
に記述します。以下に一例を示します。
[tool.ruff]
target-version = "py38"
ignore = [ "G004", "PD901", "PD002", "RUF001", "RUF002", "RUF003", "PLC1901", "PLR2004", "ANN101", "ANN102", "ANN002", "ANN003", "ERA", "ANN201", "ANN202", "PLR", "RSE", "D", "C90", "T20", "SLF", "BLE", "FBT", "TRY", "COM", "S", "EM", "EXE", "ICN", "RET", "SIM", "TCH", "PTH", "ISC", "N", "PT" ]
line-length = 120
select = [ "ALL" ]
[tool.ruff.pydocstyle]
convention = "google"
[tool.ruff.pyupgrade]
keep-runtime-typing = true
[tool.ruff.pylint]
max-args = 10
まとめ
RuffはPythonの静的解析ツールとして優れた性能を発揮します。また、設定の柔軟性もあり、開発者のニーズに合わせてカスタマイズすることが可能です。Python開発において、Ruffの活用を検討してみてはいかがでしょうか。