メインコンテンツまでスキップ

Laravel Pint

導入

Laravel Pintは、最小限主義者向けのPHPコードスタイル修正ツールです。PintはPHP-CS-Fixerをベースに構築されており、コードスタイルが清潔で一貫性があることを簡単に確認できます。

Pintはすべての新しいLaravelアプリケーションに自動的にインストールされるため、すぐに使用を開始できます。デフォルトでは、Pintには構成が必要なく、Laravelの主観的なコーディングスタイルに従ってコードスタイルの問題を修正します。

インストール

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

composer require laravel/pint --dev

Pintの実行

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

./vendor/bin/pint

特定のファイルやディレクトリでPintを実行することもできます:

./vendor/bin/pint app/Models

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

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

./vendor/bin/pint -v

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

./vendor/bin/pint --test

Gitによる未コミットの変更があるファイルのみを変更するようにPintに指示したい場合は、--dirtyオプションを使用できます:

./vendor/bin/pint --dirty

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

./vendor/bin/pint --repair

Pint の設定

前述の通り、Pint は特別な設定を必要としません。ただし、プリセット、ルール、または検査対象のフォルダをカスタマイズしたい場合は、プロジェクトのルートディレクトリに pint.json ファイルを作成することで行うことができます:

{
"preset": "laravel"
}

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

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

プリセット

プリセットは、コードスタイルの問題を修正するために使用できるルールのセットを定義します。デフォルトでは、Pint は laravel プリセットを使用しており、Laravel のコーディングスタイルに従って問題を修正します。ただし、Pint に --preset オプションを指定することで異なるプリセットを指定することもできます:

pint --preset psr12

必要であれば、プロジェクトの pint.json ファイルにもプリセットを設定することができます:

{
"preset": "psr12"
}

Pint が現在サポートしているプリセットは、laravelperpsr12symfony です。

ルール

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

ただし、必要であれば、pint.json ファイルで特定のルールを有効または無効にすることができます:

{
"preset": "laravel",
"rules": {
"simplified_null_return": true,
"braces": false,
"new_with_braces": {
"anonymous_class": false,
"named_class": false
}
}
}

Pint は PHP-CS-Fixer の上に構築されています。したがって、プロジェクト内のコードスタイルの問題を修正するためにそのルールを使用することができます: PHP-CS-Fixer Configurator.

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

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

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

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

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

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

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

継続的インテグレーション

GitHub Actions

Laravel Pint でプロジェクトのリントを自動化するには、GitHub Actions を構成して、新しいコードが GitHub にプッシュされるたびに Pint を実行するようにします。まず、GitHub の Settings > Actions > General > Workflow permissions でワークフローに対して「読み取りと書き込みの権限」を付与してください。次に、以下の内容で .github/workflows/lint.yml ファイルを作成します:

name: Fix Code Style

on: [push]

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

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

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: json, dom, curl, libxml, mbstring
coverage: none

- name: Install Pint
run: composer global require laravel/pint

- name: Run Pint
run: pint

- name: Commit linted files
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Fixes coding style"