メインコンテンツへスキップ

Laravel Pintとは

Laravel Pint は、PHP CS Fixer 上に構築されたコードスタイル自動修正ツールです。設定なしですぐに使えるよう設計されており、Laravelのコーディングスタイルに従ってコードを自動的に整形します。 チーム開発でよくある「コードスタイルのレビューコメント」を自動化することで、本質的なコードレビューに集中できるようになります。

インストール

新しく作成したLaravelアプリケーションにはPintが自動でインストールされています。古いバージョンのプロジェクトには Composer でインストールしてください。
composer require laravel/pint --dev

実行方法

基本的な使い方

プロジェクト内のすべての .php ファイルを自動修正します。
./vendor/bin/pint
特定のファイルやディレクトリだけを対象にすることもできます。
./vendor/bin/pint app/Models
./vendor/bin/pint app/Models/User.php

オプション一覧

オプション説明
--testファイルを変更せずスタイルエラーを検出するだけ。エラーがあれば非ゼロの終了コードを返す
--dirtyGitで未コミットの変更があるファイルだけを対象にする
--diff=[branch]指定ブランチとの差分があるファイルだけを対象にする
--repairスタイルエラーを修正しつつ、修正があれば非ゼロの終了コードを返す
--parallel並列実行モード(実験的)でパフォーマンスを向上させる
--max-processes=4--parallel と組み合わせて最大プロセス数を指定する
-v変更内容の詳細を表示する
--config使用する pint.json のパスを指定する
--preset使用するプリセットを指定する
# ファイルを変更せずチェックのみ
./vendor/bin/pint --test

# 未コミットのファイルだけ対象
./vendor/bin/pint --dirty

# 並列実行
./vendor/bin/pint --parallel

設定

プロジェクトルートに pint.json を作成することで動作をカスタマイズできます。
{
    "preset": "laravel"
}
設定ファイルのパスを明示的に指定することもできます。
./vendor/bin/pint --config vendor/my-company/coding-style/pint.json

プリセット

プリセットはルールのセットです。デフォルトは laravel プリセットで、Laravelプロジェクトに最適なルールが適用されます。
プリセット説明
laravelLaravelの推奨コーディングスタイル(デフォルト)
psr12PSR-12 コーディング標準
perPER Coding Style
symfonySymfony のコーディングスタイル
emptyルールなし。個別にルールを定義して使う
# コマンドラインでプリセットを指定
./vendor/bin/pint --preset psr12

ルールのカスタマイズ

pint.json でルールを個別に有効・無効にできます。利用できるルールは PHP CS Fixer Configurator を参照してください。
{
    "preset": "laravel",
    "rules": {
        "simplified_null_return": true,
        "array_indentation": false,
        "new_with_parentheses": {
            "anonymous_class": true,
            "named_class": true
        }
    }
}

ファイル・フォルダの除外

特定のフォルダをチェック対象から除外できます。
{
    "exclude": [
        "my-specific/folder"
    ]
}
ファイル名のパターンで除外する場合は notName を使います。
{
    "notName": [
        "*-my-file.php"
    ]
}
特定のファイルパスで除外する場合は notPath を使います。
{
    "notPath": [
        "path/to/excluded-file.php"
    ]
}

推奨設定

実際の開発現場で効果的な pint.json の設定例を紹介します。
{
    "preset": "laravel",
    "rules": {
        "no_unused_imports": false,
        "strict_comparison": true,
        "declare_strict_types": true
    }
}
各ルールを追加する理由は次のとおりです。
ルール効果
no_unused_importsfalse にすると未使用の use 文を削除せず残す。Pintのデフォルトは true(削除)なので通常のLaravelプロジェクトではこの項目は不要
strict_comparison===== に、!=!== に変換して予期しない型変換のバグを防ぐ
declare_strict_typesファイル先頭に declare(strict_types=1); を自動追加して型の安全性を高める
strict_comparisondeclare_strict_types は型に厳格なコードを強制するため、既存プロジェクトに追加する際は初回の修正量が多くなることがあります。新規プロジェクトでは最初から導入することをお勧めします。
no_unused_imports はパッケージ開発向けの設定です。 Pintのデフォルトは true(未使用の use 文を削除)なので、通常のLaravelプロジェクトではこの項目自体不要です。パッケージ開発ではトレイトやインターフェースのインポートで機能をオン/オフするパターンがあるため、false を追加しておき各パッケージの状況に合わせて true に変更する運用が便利です。

composer.json への scripts 設定

composer.jsonpint 用のスクリプトを登録すると、composer pint だけで実行できるようになります。
{
    "scripts": {
        "pint": "./vendor/bin/pint",
        "pint:test": "./vendor/bin/pint --test"
    }
}
登録後は次のように実行できます。
# コードを自動修正
composer pint

# チェックのみ(修正しない)
composer pint:test
CI環境では composer pint:test を使うとファイルを変更せずスタイル違反を検出できます。--test オプションはエラーがあれば非ゼロの終了コードを返すので、CI のパスチェックに使えます。

GitHub Actions での自動実行

GitHub Actions を使ってプッシュのたびにコードスタイルを自動修正・コミットできます。
1

Workflowの権限を設定する

GitHubリポジトリの Settings > Actions > General > Workflow permissions で「Read and write permissions」を有効にします。
2

Workflow ファイルを作成する

.github/workflows/lint.yml を作成します。
name: Fix Code Style

on: [push]

jobs:
  lint:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: true
      matrix:
        php: [8.4]

    steps:
      - name: Checkout code
        uses: actions/checkout@v5

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          tools: pint

      - name: Run Pint
        run: pint

      - name: Commit linted files
        uses: stefanzweifel/git-auto-commit-action@v6
このワークフローは、プッシュのたびに Pint を実行し、スタイル違反を修正したファイルを自動的にコミットします。
Pull Request のレビュー前に自動修正が入るため、コードスタイルに関するレビューコメントが減ります。チームで導入する際は最初に全ファイルをローカルで修正してからワークフローを追加すると、余分なコミットを防げます。
Last modified on April 4, 2026