コンテンツへスキップ

Laravel Pint

はじめに

Laravel Pint は、ミニマリストのための意見の強いPHPコードスタイル修正ツールです。PintはPHP-CS-Fixerの上に構築されており、コードスタイルをクリーンで一貫したものに保つことを簡単に行えます。

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

インストール

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

composer require laravel/pint --dev

Pintの実行

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

./vendor/bin/pint

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

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

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

./vendor/bin/pint -v

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

./vendor/bin/pint --test

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

./vendor/bin/pint --dirty

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

./vendor/bin/pint --repair

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で現在サポートされているプリセットは、laravelperpsr12symfonyemptyです。

ルール

ルールは、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-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にプッシュされるたびにPintを実行するようにGitHub Actionsを設定できます。まず、**設定 > Actions > 一般 > ワークフローの権限**で、GitHub内のワークフローに「読み取りと書き込みの権限」を付与してください。次に、次の内容を含む.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"