Laravel Pintとは
Laravel Pint は、PHP CS Fixer 上に構築されたコードスタイル自動修正ツールです。設定なしですぐに使えるよう設計されており、Laravelのコーディングスタイルに従ってコードを自動的に整形します。 チーム開発でよくある「コードスタイルのレビューコメント」を自動化することで、本質的なコードレビューに集中できるようになります。インストール
新しく作成したLaravelアプリケーションにはPintが自動でインストールされています。古いバージョンのプロジェクトには Composer でインストールしてください。実行方法
基本的な使い方
プロジェクト内のすべての.php ファイルを自動修正します。
オプション一覧
| オプション | 説明 |
|---|---|
--test | ファイルを変更せずスタイルエラーを検出するだけ。エラーがあれば非ゼロの終了コードを返す |
--dirty | Gitで未コミットの変更があるファイルだけを対象にする |
--diff=[branch] | 指定ブランチとの差分があるファイルだけを対象にする |
--repair | スタイルエラーを修正しつつ、修正があれば非ゼロの終了コードを返す |
--parallel | 並列実行モード(実験的)でパフォーマンスを向上させる |
--max-processes=4 | --parallel と組み合わせて最大プロセス数を指定する |
-v | 変更内容の詳細を表示する |
--config | 使用する pint.json のパスを指定する |
--preset | 使用するプリセットを指定する |
設定
プロジェクトルートにpint.json を作成することで動作をカスタマイズできます。
プリセット
プリセットはルールのセットです。デフォルトはlaravel プリセットで、Laravelプロジェクトに最適なルールが適用されます。
| プリセット | 説明 |
|---|---|
laravel | Laravelの推奨コーディングスタイル(デフォルト) |
psr12 | PSR-12 コーディング標準 |
per | PER Coding Style |
symfony | Symfony のコーディングスタイル |
empty | ルールなし。個別にルールを定義して使う |
ルールのカスタマイズ
pint.json でルールを個別に有効・無効にできます。利用できるルールは PHP CS Fixer Configurator を参照してください。
ファイル・フォルダの除外
特定のフォルダをチェック対象から除外できます。notName を使います。
notPath を使います。
推奨設定
実際の開発現場で効果的なpint.json の設定例を紹介します。
| ルール | 効果 |
|---|---|
no_unused_imports | false にすると未使用の use 文を削除せず残す。Pintのデフォルトは true(削除)なので通常のLaravelプロジェクトではこの項目は不要 |
strict_comparison | == を === に、!= を !== に変換して予期しない型変換のバグを防ぐ |
declare_strict_types | ファイル先頭に declare(strict_types=1); を自動追加して型の安全性を高める |
no_unused_imports はパッケージ開発向けの設定です。 Pintのデフォルトは true(未使用の use 文を削除)なので、通常のLaravelプロジェクトではこの項目自体不要です。パッケージ開発ではトレイトやインターフェースのインポートで機能をオン/オフするパターンがあるため、false を追加しておき各パッケージの状況に合わせて true に変更する運用が便利です。composer.json への scripts 設定
composer.json に pint 用のスクリプトを登録すると、composer pint だけで実行できるようになります。
CI環境では
composer pint:test を使うとファイルを変更せずスタイル違反を検出できます。--test オプションはエラーがあれば非ゼロの終了コードを返すので、CI のパスチェックに使えます。GitHub Actions での自動実行
GitHub Actions を使ってプッシュのたびにコードスタイルを自動修正・コミットできます。Workflowの権限を設定する
GitHubリポジトリの Settings > Actions > General > Workflow permissions で「Read and write permissions」を有効にします。