メインコンテンツまでスキップ
バージョン: master

LaravelPint (Laravel Pint)

導入 (Introduction)

LaravelPint は、ミニマリスト向けの独自の PHP コード スタイル修正ツールです。 Pint は PHP CS フィクサー の上に構築されており、コード スタイルをクリーンで一貫性のある状態に保つことが簡単になります。

Pint はすべての新しい Laravel アプリケーションとともに自動的にインストールされるため、すぐに使用を開始できます。デフォルトでは、Pint は設定を必要とせず、Laravel の独自のコーディング スタイルに従ってコード内のコード スタイルの問題を修正します。

インストール (Installation)

Pint は Laravel フレームワークの最近のリリースに含まれているため、通常はインストールは必要ありません。ただし、古いアプリケーションの場合は、Composer 経由で Laravel Pint をインストールできます。

composer require laravel/pint --dev

ランニングPint (Running Pint)

プロジェクトの vendor/bin ディレクトリにある pint バイナリを呼び出すことで、コード スタイルの問題を修正するように Pint に指示できます。

./vendor/bin/pint

パフォーマンスを向上させるために Pint を並列モード (実験的) で実行したい場合は、--parallel オプションを使用できます。

./vendor/bin/pint --parallel

並列モードでは、--max-processes オプションを使用して、実行するプロセスの最大数を指定することもできます。このオプションが指定されていない場合、Pint はマシン上で利用可能なすべてのコアを使用します。

./vendor/bin/pint --parallel --max-processes=4

特定のファイルまたはディレクトリに対して Pint を実行することもできます。

./vendor/bin/pint app/Models

./vendor/bin/pint app/Models/User.php

Pint は、更新するすべてのファイルの完全なリストを表示します。 Pint を呼び出すときに -v オプションを指定すると、Pint の変更についてさらに詳細を表示できます。

./vendor/bin/pint -v

実際にファイルを変更せずに、Pint に単にコードのスタイル エラーを検査させたい場合は、--test オプションを使用できます。コード スタイル エラーが見つかった場合、Pint はゼロ以外の終了コードを返します。

./vendor/bin/pint --test

Git に従って提供されたブランチと異なるファイルのみを Pint に変更させたい場合は、--diff=[branch] オプションを使用できます。これを CI 環境 (GitHub アクションなど) で効果的に使用すると、新しいファイルまたは変更されたファイルのみを検査することで時間を節約できます。

./vendor/bin/pint --diff=main

Git に従ってコミットされていない変更があるファイルのみを Pint に変更させたい場合は、--dirty オプションを使用できます。

./vendor/bin/pint --dirty

コード スタイル エラーのあるファイルを Pint に修正させたいが、エラーが修正された場合にはゼロ以外の終了コードで終了するようにしたい場合は、--repair オプションを使用できます。

./vendor/bin/pint --repair

Pint の構成 (Configuring Pint)

前述したように、Pint には構成は必要ありません。ただし、プリセット、ルール、または検査されたフォルダーをカスタマイズしたい場合は、プロジェクトのルート ディレクトリに pint.json ファイルを作成することで実行できます。

{
"preset": "laravel"
}

さらに、特定のディレクトリの pint.json を使用したい場合は、Pint を呼び出すときに --config オプションを指定できます。

./vendor/bin/pint --config vendor/my-company/coding-style/pint.json

プリセット

プリセットは、コード内のコード スタイルの問題を修正するために使用できる一連のルールを定義します。デフォルトでは、Pint は laravel プリセットを使用します。これは、Laravel の独自のコーディング スタイルに従うことで問題を修正します。ただし、Pint に --preset オプションを指定することで、別のプリセットを指定できます。

./vendor/bin/pint --preset psr12

必要に応じて、プロジェクトの pint.json ファイルにプリセットを設定することもできます。

{
"preset": "psr12"
}

Pint で現在サポートされているプリセットは、laravelperpsr12symfony、および empty です。

ルール

ルールは、コード内のコード スタイルの問題を修正するために Pint が使用するスタイル ガイドラインです。上で述べたように、プリセットは、ほとんどの PHP プロジェクトに最適な事前定義されたルールのグループであるため、通常、プリセットに含まれる個々のルールについて心配する必要はありません。

ただし、必要に応じて、pint.json ファイルで特定のルールを有効または無効にしたり、empty プリセットを使用してルールを最初から定義したりできます。

{
"preset": "laravel",
"rules": {
"simplified_null_return": true,
"array_indentation": false,
"new_with_parentheses": {
"anonymous_class": true,
"named_class": true
}
}
}

Pint は PHP CS フィクサー の上に構築されています。したがって、そのルールのいずれかを使用して、プロジェクトのコード スタイルの問題を修正できます: PHP CS フィクサー コンフィギュレーター

ファイル/フォルダーの除外

デフォルトでは、Pint は、vendor ディレクトリ内のファイルを除く、プロジェクト内のすべての .php ファイルを検査します。さらに多くのフォルダーを除外したい場合は、exclude 構成オプションを使用して除外できます。

{
"exclude": [
"my-specific/folder"
]
}

特定の名前パターンを含むすべてのファイルを除外したい場合は、notName 構成オプションを使用して除外できます。

{
"notName": [
"*-my-file.php"
]
}

ファイルへの正確なパスを指定してファイルを除外したい場合は、notPath 構成オプションを使用して実行できます。

{
"notPath": [
"path/to/excluded-file.php"
]
}

継続的インテグレーション (Continuous Integration)

GitHub アクション

Laravel Pint を使用してプロジェクトの lint を自動化するには、新しいコードが GitHub にプッシュされるたびに Pint を実行するように GitHub アクション を構成できます。まず、[設定] > [アクション] > [一般] > [ワークフロー権限] で、GitHub 内のワークフローに「読み取りおよび書き込み権限」を付与してください。次に、次の内容の .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