Laravel Pint
イントロダクション
Laravel Pintは、ミニマリストのための独断的なPHPコードスタイル修正ツールです。PintはPHP CS Fixerの上に構築されており、コードスタイルをクリーンで一貫性のある状態に保つことを簡単にします。
Pintはすべての新しいLaravelアプリケーションに自動的にインストールされるため、すぐに使い始めることができます。デフォルトでは、Pintは設定を必要とせず、Laravelの独断的なコーディングスタイルに従ってコードのスタイル問題を修正します。
インストール
PintはLaravelフレームワークの最近のリリースに含まれているため、通常はインストールは不要です。しかし、古いアプリケーションの場合は、Composer経由でLaravel Pintをインストールできます。
1composer require laravel/pint --dev
Pintの実行
プロジェクトのvendor/binディレクトリにあるpintバイナリを呼び出すことで、Pintにコードスタイルの問題を修正するように指示できます。
1./vendor/bin/pint
特定のファイルやディレクトリに対してPintを実行することもできます。
1./vendor/bin/pint app/Models2 3./vendor/bin/pint app/Models/User.php
Pintは、更新したすべてのファイルの完全なリストを表示します。Pintを呼び出すときに-vオプションを指定すると、Pintの変更に関するさらに詳細な情報を表示できます。
1./vendor/bin/pint -v
Pintに、実際にファイルを変更せずにコードのスタイルエラーを検査させたいだけの場合は、--testオプションを使用します。コードスタイルのエラーが見つかった場合、Pintはゼロ以外の終了コードを返します。
1./vendor/bin/pint --test
Gitに基づいて、指定したブランチと異なるファイルのみをPintに変更させたい場合は、--diff=[branch]オプションを使用できます。これは、CI環境(GitHubアクションなど)で、新規または変更されたファイルのみを検査することで時間を節約するために効果的に使用できます。
1./vendor/bin/pint --diff=main
Gitによるとコミットされていない変更があるファイルのみをPintに変更させたい場合は、--dirtyオプションを使用します。
1./vendor/bin/pint --dirty
コードスタイルエラーのあるファイルをPintに修正させ、かつエラーが修正された場合にゼロ以外の終了コードで終了させたい場合は、--repairオプションを使用します。
1./vendor/bin/pint --repair
Pintの設定
前述のとおり、Pintは設定を必要としません。しかし、プリセット、ルール、または検査対象のフォルダをカスタマイズしたい場合は、プロジェクトのルートディレクトリにpint.jsonファイルを作成することで可能です。
1{2 "preset": "laravel"3}
さらに、特定のディレクトリのpint.jsonを使用したい場合は、Pintを呼び出すときに--configオプションを指定できます。
1./vendor/bin/pint --config vendor/my-company/coding-style/pint.json
プリセット
プリセットは、コードのスタイル問題を修正するために使用できる一連のルールを定義します。デフォルトでは、Pintはlaravelプリセットを使用し、Laravelの独断的なコーディングスタイルに従って問題を修正します。しかし、Pintに--presetオプションを指定することで、別のプリセットを指定できます。
1./vendor/bin/pint --preset psr12
必要であれば、プロジェクトのpint.jsonファイルでプリセットを設定することもできます。
1{2 "preset": "psr12"3}
Pintが現在サポートしているプリセットは、laravel、per、psr12、symfony、emptyです。
ルール
ルールは、Pintがコードのスタイル問題を修正するために使用するスタイルガイドラインです。前述のとおり、プリセットはほとんどのPHPプロジェクトに最適な定義済みのルールのグループであるため、通常はそれに含まれる個々のルールについて心配する必要はありません。
しかし、必要であれば、pint.jsonファイルで特定のルールを有効または無効にしたり、emptyプリセットを使用してルールをゼロから定義したりできます。
1{ 2 "preset": "laravel", 3 "rules": { 4 "simplified_null_return": true, 5 "array_indentation": false, 6 "new_with_parentheses": { 7 "anonymous_class": true, 8 "named_class": true 9 }10 }11}
PintはPHP CS Fixerの上に構築されています。そのため、プロジェクトのコードスタイル問題を修正するために、そのルールのいずれかを使用できます:PHP CS Fixer Configurator。
ファイル/フォルダの除外
デフォルトでは、Pintはプロジェクト内のvendorディレクトリを除くすべての.phpファイルを検査します。さらに多くのフォルダを除外したい場合は、exclude設定オプションを使用して行うことができます。
1{2 "exclude": [3 "my-specific/folder"4 ]5}
指定した名前のパターンを含むすべてのファイルを除外したい場合は、notName設定オプションを使用して行うことができます。
1{2 "notName": [3 "*-my-file.php"4 ]5}
ファイルへの正確なパスを指定してファイルを除外したい場合は、notPath設定オプションを使用して行うことができます。
1{2 "notPath": [3 "path/to/excluded-file.php"4 ]5}
継続的インテグレーション
GitHubアクション
Laravel Pintでプロジェクトのリンティングを自動化するには、新しいコードがGitHubにプッシュされるたびにPintを実行するようにGitHub Actionsを設定できます。まず、GitHubの**Settings > Actions > General > Workflow permissions**で、ワークフローに「Read and write permissions」を付与してください。次に、以下の内容で.github/workflows/lint.ymlファイルを作成します。
1name: Fix Code Style 2 3on: [push] 4 5jobs: 6 lint: 7 runs-on: ubuntu-latest 8 strategy: 9 fail-fast: true10 matrix:11 php: [8.4]12 13 steps:14 - name: Checkout code15 uses: actions/checkout@v416 17 - name: Setup PHP18 uses: shivammathur/setup-php@v219 with:20 php-version: ${{ matrix.php }}21 extensions: json, dom, curl, libxml, mbstring22 coverage: none23 24 - name: Install Pint25 run: composer global require laravel/pint26 27 - name: Run Pint28 run: pint29 30 - name: Commit linted files31 uses: stefanzweifel/git-auto-commit-action@v5