Integrations#
GitHub Actions#
GitHub Actions には、Ruff をすぐに実行するために必要なものがすべて揃っています。:
name: CI
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ruff
# Update output format to enable automatic inline annotations.
- name: Run Ruff
run: ruff check --output-format=github .
Ruff は、ruff-actionを介して GitHub Action として使用することもできます。
デフォルトでは、ruff-actionは、指定されたリポジトリがそのconfigurationに従ってリントルール違反を含んでいないことを確認するための合否テストとして実行されます。
しかし、内部的には、ruff-actionはruffを直接インストールして実行するため、サポートされている任意のruffコマンド(例えばruff check --fix)を実行するために使用することができます。
ruff-actionは、GitHub でホストされているすべてのランナーをサポートしており、公開されている任意の Ruff バージョン(つまり、PyPIで入手可能な任意のバージョン)で使用できます。
ruff-actionを使用するには、以下を使用してリポジトリ内にファイル(例:.github/workflows/ruff.yml)を作成します。:
name: Ruff
on: [push, pull_request]
jobs:
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: chartboost/ruff-action@v1
あるいは、他のワークフローファイルのステップとしてruff-actionを含めることもできます。:
ruff-actionはwith:経由でオプションの設定パラメータを受け付けます。:
version: The Ruff version to install (default: latest).args: The command-line arguments to pass to Ruff (default:"check").src: The source paths to pass to Ruff (default:[".", "src"]).
たとえば、ruff check--select B./srcusing Ruff version0.0.259を実行するには、次のように指定します。:
pre-commit#
Ruff は、ruff-pre-commitを介してpre-commitフックとして使用できます。:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.6.0
hooks:
# Run the linter.
- id: ruff
# Run the formatter.
- id: ruff-format
リント修正を有効にするには、リントフックに--fix引数を追加します。:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.6.0
hooks:
# Run the linter.
- id: ruff
args: [--fix]
# Run the formatter.
- id: ruff-format
Jupyter Notebooks 上でもフックを実行するには、許可されたファイルタイプのリストにjupyterを追加します。:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.6.0
hooks:
# Run the linter.
- id: ruff
types_or: [python, pyi, jupyter]
args: [--fix]
# Run the formatter.
- id: ruff-format
types_or: [python, pyi, jupyter]
--fixを使用して実行する場合、Ruff の修正動作は再フォーマットを必要とするコード変更を出力する可能性があるため、Ruff の lint フックは Ruff のフォーマッタフックの前、Black、isort、およびその他のフォーマットツールの前に配置する必要があります。
--fixを指定せずに実行する場合、Ruff のフォーマッタフックは Ruff のリントフックの前または後に配置できます。
(Ruff の設定がlinter-formatter の非互換性を回避している限り、ruff formatは新しい lint エラーを発生させることはないので、Ruff の format hookafterruff check--fixを実行しても安全です。)
mdformat#
mdformatは、Markdown 内のコードブロックをフォーマットすることができます。mdformat-ruffプラグインは、mdformat が Ruff で Python コードブロックをフォーマットできるようにします。