これは何?
この記事では、
- PhpStormの
File Watchers
機能 - PHP-CS-Fixer
- PHPStan
上記のツールを利用して、PhpStorm上にて、任意のPHPファイルを保存した際にPHPStanとPHP CS Fixerを走らせてコード品質を担保する方法を説明します。
メリット
- PHP CS Fixerによるコード整形にて、インデントやスペースといった余計なレビューコストが低減できる
- PHPStanのルールに従うことで、より堅牢なコードが書け、バグを低減できる
デメリット
- ファイル保存時に処理が走るようになるので、数秒の待ち時間が発生するようになる
ということがあります。
筆者の想い
PhpStormはPHPを書く際の最高のパートナーだと筆者は信じています。これはこれまでの自分へ対する反省でもあるのですが、PhpStormと各種ツールを連携することによって、さらなる高みを目指すことができます。この記事が少しでも読者の皆様のPhpStormライフに貢献できることを祈っております。
記事の注意事項
対象者
今回の記事が役立つ人は、以下の人を想定しています
- PhpStormを利用している人
- PHPStanを利用しているいる人
- PHP-CS-Fixerを利用している人
- ローカル環境でPHPを動かしている人
- DockerでPHPを動かしている場合、設定が微妙に異なります。そこに関しては別記事で解説するかもしれません。
やらないこと
以下の内容は今回の記事では解説は特段行いません。
- PHPStanの具体的な設定方法の解説
- PHP CS Fixerの具体的な設定の解説
具体例については、筆者のサンプルコードを共有しますので参考にされてください。
各種リンクについて
今回利用するツールについての詳細は以下のリンクを確認ください。
PHPStan/PHP CS Fixerの導入方法や設定ファイルの作成方法については上記のリンクやZenn, Qiitaの記事などをご参照ください。
前提条件について
今回の記事における開発環境の前提は以下のとおりです。
- mac OS Ventura
- PHP 8.1
- 今回はDockerは利用せず、ローカルで動かします。brewなどにてインストールができているものとします
- PHPStanがcomposer経由にてインストールされており、設定が済んでいること
- 補足として 今回はLaravelプロジェクトなのでPHPStanラッパーのLarastanを利用しています
- PHPStanの具体設定例は、こちらを確認ください。 -> サンプルコード
- PHP CS Fixerがcomposer経由にてインストールされており、設定が済んでいること
- PHP CS Fixerの具体的設定例はこちらを確認ください -> サンプルコード
設定方法について
ここからは、PhpStom上にて、PHPStanとPHP CS Fixerの設定方法について説明をしていきます。
- CLI Interpretersの設定
- PHPStanとの連携設定
- PHP CS Fixerとの連携設定
- File Watchers機能の設定
CLI Interpreters
まずは、PhpStormにて、PHPと連携をする設定をしていきます。
参考URL
ドキュメントは以下が参考になると思いますので、こちらの記事の確認もおすすめいたします。
- https://www.jetbrains.com/help/phpstorm/configuring-local-interpreter.html
- https://pleiades.io/help/phpstorm/configuring-local-interpreter.html
CLI Interpretersの設定手順
ショートカットキーcommand + ,
にて設定画面を開きます。おそらく何も設定していない場合は、CLI Interpreter: が<no interpreter>
となっているかと思います。脇の...
のところをクリックして、新規追加設定を行います。
設定画面が登場します。キャプチャでは筆者の既存設定が表示されております。一旦ここは無視して、左上の+
をクリックします。
Local Paht to Interpreter...
をクリックします。
PHP (1)
というものが作成されました。これを設定していきます。
-
Name:
今回はPHP-Advent
と命名しました。ここは任意でわかりやすいものを設定してください。 -
PHP executable:
は/opt/homebrew/bin/php
と設定しました。homebrewでインストールしたPHPを今回は設定します。 - これにてキャプチャ右下の
Apply
をクリックし、その後OK
をクリックします
Preferencesに戻ります。CLI Interpreter:
にて、PHP-Advend
と設定されていることが確認できます。
これにてCLI Interpretersの設定は終わりです。
PHPStan
PhpStormにて、PHPStanと連携をする設定をしていきます。
参考URL
ドキュメントは以下が参考になると思いますので、こちらの記事の確認もおすすめいたします。
PHPStanの設定手順
まずは、ショートカットキーcommand + ,
にて設定画面を開きます。
そこから PHP
-> Quality Tools
-> PHPStan
へとアクセスしてください。そこでConfigration
を 先程作成した PHP-Advent
と設定してください。
そして...
をクリックしてください。
クリックしたあとのキャプチャです。既存の設定がありますが、左上の+
を押して新しく追加を行います。
PHPStan By Interpreterは設定した、PHP-Advent
を設定します。そして、OK
を押します。
PHP-Advent
が選ばれていると思います。また、PHPStan path
の設定もしてください。自分の場合は、ローカル環境のvendorディレクトリある phpstanをパスとして設定しています。
Validate
を押して設定が有効になるかもチェックします。
OK, PHPStan...
という表記が下側に出たらOKです。
そして、 PHPStan inspection
をクリックしてください
左側にある、Quality tools
-> PHPStan validation
にてチェックを入れます。
また、右側下部分のOptions
の設定を行います。
-
Level
-> プロジェクトに応じたものを設定します。個人的には8
をおすすめします。高みをめざしましょう! -
Configuration file
-> phpstan.neonという設定ファイルのパスを設定します。 - その他の設定はありますが、一旦このままで行きます。右下の
OK
をクリックしてください。
この画面に戻れたら、PHPStanの設定が終わりです。
Apply
をクリックして、その後に OK
をクリックしてください
memo
PHPStanとPhpStormの連携設定を行うことで、今後PHPファイルを編集している際にPHPStanによるエラーが有った際に、PhpStormが怒ってくださるようになります。必要に応じて対応してください。
PHP CS Fixer
PhpStormにて、PHP CS Fixerと連携をする設定をしていきます。File Watchersと連携する場合においては、直接は必要とはなりませんが設定しておくと何かしらと便利になります。
参考URL
ドキュメントは以下が参考になると思いますので、こちらの記事の確認もおすすめいたします。
- https://www.jetbrains.com/help/phpstorm/using-php-cs-fixer.html
- https://pleiades.io/help/phpstorm/using-php-cs-fixer.html
PHP CS Fixerの設定手順
まずは、ショートカットキーcommand + ,
にて設定画面を開きます。
そこから PHP
-> Quality Tools
-> PHP CS Fixer
へとアクセスしてください。そこでConfigration
を 先程作成した PHP-Advent
と設定してください。
...
をクリックしたあとに出る画面です。
PHP CS Fixerの設定を進めていきます。既存の設定が出てしまっているので、新しいPHP CS Fixerの設定追加を行います。画面左上の+
を押します。
+
を押したあとにPHP CS Fixerを動かすInterpreter を設定できます。今回はPHP-Advent
を選び、OK
を押します。
そして、右下の Apply
と OK
をクリックします。
PHP-Advent
が設定できていれば成功です。また、PHP CS Fixer path
を設定してください。Validate
を押して、エラーが発生しなければ設定は成功です。
そしてここからがポイントになります!! PHP CS Fixer inspection
をクリックします。
PHP CS Fixerの詳細設定を行います。
キャプチャ左側の PHP CS Fixer validation
にはチェックを入れておきます。
キャプチャ右下側のOptions
の設定が大切です。
-
Allow resky rules for build-in rulesets
は チェックしておきます。 -
Ruleset:
はCustom
を設定します。(独自のPHP CS Fixerの設定をしている前提です) -
...
をクリックして、PHP CS Fixerの設定ファイルのパスを設定します。
パスを設定します。OK
をクリックします。
パスの設定ダイアログが閉じるので、その後に右下のOK
をクリックします
設定画面に戻るので、 Apply
, OK
をクリックします
その後この画面に戻ればOKです。
File Watchers
PhpStormにて、File Watchersの設定をしていきます。
参考URL
ドキュメントは以下が参考になると思いますので、こちらの記事の確認もおすすめいたします。
- https://www.jetbrains.com/help/phpstorm/using-file-watchers.html
- https://pleiades.io/help/phpstorm/using-file-watchers.html
File Watchersの設定手順
まずは、ショートカットキーcommand + ,
にて設定画面を開きます。Tools
-> File Watchers
を選択したら、設定画面が開けると思います。
キャプチャでは、既存の設定がありますが、新しく追加設定の対応を行います。+
をクリックします。
設定画面が出てきますので、File Watchersの設定を進めます。
-
Name:
-> 今回は、php-cs-fixer-advent
と設定しました。 -
File Type:
->PHP
と設定をします -
Scope:
->Project Files
を選択します。 -
Program:
-> php-cs-fixerのファイルパスを記載します。 -
Arguments:
->fix "$FilePath$"
と入れます。$FilePath$
は、特別な記述です。動的に保存したファイルのパスがここに格納されます。 -
Working directory:
->$ProjectFileDir$
といれます。$ProjectFileDir$
も特別な記述です。動的にプロジェクトファイルのディレクトリを取得してくれます。 -
Advanced Options
-> チェックはキャプチャの通りすべて外してください。
キャプチャと同様の設定になりましたらOK
を押します
設定が追加できたことを確認します。
次は、PHPStanを動かすようにします。+
をクリックします。
以下のような設定をします。
-
Name:
->phpstan-advent
と設定します。 -
File type:
->PHP
と設定します -
Program:
-> phptanのファイルパスを設定します。 -
Arguments:
->analyse "$FilePath$"
と入れます。$FilePath$
は、特別な記述です。動的に保存したファイルのパスがここに格納されます。 -
Working directory:
->$ProjectFileDir$
といれます。$ProjectFileDir$
も特別な記述です。動的にプロジェクトファイルのディレクトリを取得してくれます。 -
Advanced Options
-> チェックはキャプチャの通りすべて外してください。
そして、OK
をおします
設定一覧に戻ると追加されています。Enabled
のチェックを設定します。既存のものは外し、新しく追加したものはチェックします。
そして、右下の Apply
, OK
をクリックします
挙動確認
以下のようになれば成功です。
PHP CS Fixer
PHP Stan
最後に
これにてすべての設定は終わりです。お読みいただきましてありがとうございました。PhpStorm/PHPStan/PHP CS Fixerをうまく組み合わせることで、コードをより良くできるかなと思っています。皆様のより良いPHPライフを祈っております。また、より堅牢なPHPを書きたい方はぜひ声をかけてくださると嬉しいです。
明日は、LITALICO Engineers Advent Calendar 2022 2日目の記事です。@powsato が担当します。どうぞお楽しみに!
ちなみに。。。
弊社、絶賛採用活動中です。応募する際は、tyamahoriの記事を見たと言ってもらえたらとても喜びます笑