🎄

RuffによるPythonコードの整形

2024/12/26に公開

Ruffとは

リンター^{※1}ではFlake8、フォーマッター^{※2}ではBlackやisortが有名ですが、これらを1つのツールにして高速化したものがRuffです。
※1 エラーや潜在的な問題、未使用変数などを検知してくれるものです。
※2 コードの見た目や体裁を整形してくれるものです。

拡張機能のインストール

VSCodeの拡張機能でRuffと検索して、インストールを行います。
図1 拡張機能Ruff

Ruffの設定

簡単な設定はsetting.jsonで行うことができ、より詳細は設定はpyproject.tomlで行います。

setting.json

コマンドパレットからsetting.jsonを開き、下記を追加します。なおプロジェクト単位で設定する場合には、「ワークスペース設定を開く」を選択、ユーザー単位で設定する場合には、「ユーザー設定を開く」を選択する。また事前に記入されている値を変更すると設定が変更されてしまうため、他の設定値は変更しないように注意が必要。

setting.json
{
    // PythonへRuffを適用するための設定
    "[python]": {
        "editor.defaultFormatter": "charliermarsh.ruff",
        "editor.formatOnType": true,
        "editor.formatOnSave": true,
        "editor.codeActionsOnSave": {
            "source.fixAll.ruff": "explicit",
            "source.organizeImports.ruff": "explicit",
        },
    },
    // Jupyter NotebookへRuffを適用するための設定
    "notebook.formatOnSave.enabled": true,
    "notebook.codeActionsOnSave": {
        "source.fixAll": "explicit",
        "source.organizeImports.ruff": "explicit"
    },
}

pyproject.tomlプロジェクトフォルダに作成したpyproject.tomlファイルに下記を追記する。tomlファイルがない場合には作成して記入する。

下記の設定では、[.venv, .ruff_cache]をチェック対象から除外している。行長制限は90文字、インデントは4としている。解析ツールには[Flake8, Black, isort]を使用している。

pyproject.toml
[tool.ruff]
exclude = [
    ".venv",
    ".ruff_cache"
]
line-length = 90
indent-width = 4

[tool.ruff.lint]
select = [
    "F", # Flake8
    "B", # Black
    "I", # isort
    "E", # error
    "W"  # warning
]
ignore = []
fixable = ["ALL"]

Discussion