search
LoginSignup
7

posted at

updated at

Organization

PhpStorm/PHPStan/PHP CS Fixerを組み合わせてコード品質をよくしよう!

これは何?

この記事では、

  • 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経由にてインストールされており、設定が済んでいること

設定方法について

ここからは、PhpStom上にて、PHPStanとPHP CS Fixerの設定方法について説明をしていきます。

  1. CLI Interpretersの設定
  2. PHPStanとの連携設定
  3. PHP CS Fixerとの連携設定
  4. File Watchers機能の設定

CLI Interpreters

まずは、PhpStormにて、PHPと連携をする設定をしていきます。

参考URL

ドキュメントは以下が参考になると思いますので、こちらの記事の確認もおすすめいたします。

CLI Interpretersの設定手順

ショートカットキーcommand + , にて設定画面を開きます。おそらく何も設定していない場合は、CLI Interpreter: が<no interpreter> となっているかと思います。脇の... のところをクリックして、新規追加設定を行います。
php-interpreter.png


設定画面が登場します。キャプチャでは筆者の既存設定が表示されております。一旦ここは無視して、左上の+ をクリックします。
php-interpreter.png


Local Paht to Interpreter... をクリックします。
php-interpreter-local.png


PHP (1) というものが作成されました。これを設定していきます。
php-interpreter-local-1.png


  • Name: 今回は PHP-Adventと命名しました。ここは任意でわかりやすいものを設定してください。
  • PHP executable:/opt/homebrew/bin/php と設定しました。homebrewでインストールしたPHPを今回は設定します。
  • これにてキャプチャ右下のApply をクリックし、その後OKをクリックします 

php-interpreter-local-advent.png


Preferencesに戻ります。CLI Interpreter: にて、PHP-Advendと設定されていることが確認できます。
preference-php-advent.png

これにてCLI Interpretersの設定は終わりです。

PHPStan

PhpStormにて、PHPStanと連携をする設定をしていきます。

参考URL

ドキュメントは以下が参考になると思いますので、こちらの記事の確認もおすすめいたします。

PHPStanの設定手順

まずは、ショートカットキーcommand + , にて設定画面を開きます。
そこから PHP -> Quality Tools -> PHPStan へとアクセスしてください。そこでConfigrationを 先程作成した PHP-Adventと設定してください。
そして...をクリックしてください。

phpstan-configuration.png


クリックしたあとのキャプチャです。既存の設定がありますが、左上の+ を押して新しく追加を行います。

phpstan-setting.png


PHPStan By Interpreterは設定した、PHP-Advent を設定します。そして、OK を押します。

phpstan-setting-add.png


PHP-Advent が選ばれていると思います。また、PHPStan pathの設定もしてください。自分の場合は、ローカル環境のvendorディレクトリある phpstanをパスとして設定しています。
Validate を押して設定が有効になるかもチェックします。

phpstan-after-setting.png

OK, PHPStan... という表記が下側に出たらOKです。
そして、 PHPStan inspection をクリックしてください

phpstan-after-ok.png


左側にある、Quality tools -> PHPStan validation にてチェックを入れます。
また、右側下部分のOptionsの設定を行います。

  • Level -> プロジェクトに応じたものを設定します。個人的には8 をおすすめします。高みをめざしましょう!
  • Configuration file -> phpstan.neonという設定ファイルのパスを設定します。
  • その他の設定はありますが、一旦このままで行きます。右下のOKをクリックしてください。

phpstan-inspection.png


この画面に戻れたら、PHPStanの設定が終わりです。
Applyをクリックして、その後に OKをクリックしてください
Preference-phpstan.png


memo

PHPStanとPhpStormの連携設定を行うことで、今後PHPファイルを編集している際にPHPStanによるエラーが有った際に、PhpStormが怒ってくださるようになります。必要に応じて対応してください。

phpstan-warning.png

PHP CS Fixer

PhpStormにて、PHP CS Fixerと連携をする設定をしていきます。File Watchersと連携する場合においては、直接は必要とはなりませんが設定しておくと何かしらと便利になります。

参考URL

ドキュメントは以下が参考になると思いますので、こちらの記事の確認もおすすめいたします。

PHP CS Fixerの設定手順

まずは、ショートカットキーcommand + , にて設定画面を開きます。
そこから PHP -> Quality Tools -> PHP CS Fixer へとアクセスしてください。そこでConfigrationを 先程作成した PHP-Adventと設定してください。

そして、右側の...をクリックしてください
phpcsfixer-1.png


... をクリックしたあとに出る画面です。
PHP CS Fixerの設定を進めていきます。既存の設定が出てしまっているので、新しいPHP CS Fixerの設定追加を行います。画面左上の+ を押します。

php-cs-fixer.png


+ を押したあとにPHP CS Fixerを動かすInterpreter を設定できます。今回はPHP-Adventを選び、OKを押します。
そして、右下の ApplyOK をクリックします。
php-cs-fixer-by-interpreter.png


PHP-Adventが設定できていれば成功です。また、PHP CS Fixer path を設定してください。Validateを押して、エラーが発生しなければ設定は成功です。

そしてここからがポイントになります!! PHP CS Fixer inspection をクリックします。

php-cs-fixer-advent.png


PHP CS Fixerの詳細設定を行います。
キャプチャ左側の PHP CS Fixer validation にはチェックを入れておきます。
キャプチャ右下側のOptions の設定が大切です。

  • Allow resky rules for build-in rulesets は チェックしておきます。
  • Ruleset:Customを設定します。(独自のPHP CS Fixerの設定をしている前提です)
  • ... をクリックして、PHP CS Fixerの設定ファイルのパスを設定します。

php-cs-fixer-inspections.png


パスを設定します。OKをクリックします。
パスの設定ダイアログが閉じるので、その後に右下のOK をクリックします

php-cs-fixer-setting-path.png


設定画面に戻るので、 Apply, OK をクリックします

php-cs-fixer-advent (1).png


その後この画面に戻ればOKです。

phpcsfixer-1 (1).png


File Watchers

PhpStormにて、File Watchersの設定をしていきます。

参考URL

ドキュメントは以下が参考になると思いますので、こちらの記事の確認もおすすめいたします。

File Watchersの設定手順

まずは、ショートカットキーcommand + , にて設定画面を開きます。Tools -> File Watchers を選択したら、設定画面が開けると思います。

キャプチャでは、既存の設定がありますが、新しく追加設定の対応を行います。+ をクリックします。
file-watchers-preference.png


設定画面が出てきますので、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を押します

filewatchers-php-cs-fix-setting.png


設定が追加できたことを確認します。
次は、PHPStanを動かすようにします。+ をクリックします。

filewatchers-php-cs-fixer-done.png


以下のような設定をします。

  • Name: -> phpstan-advent と設定します。
  • File type: -> PHPと設定します
  • Program: -> phptanのファイルパスを設定します。
  • Arguments: -> analyse "$FilePath$" と入れます。 $FilePath$は、特別な記述です。動的に保存したファイルのパスがここに格納されます。
  • Working directory: -> $ProjectFileDir$といれます。 $ProjectFileDir$も特別な記述です。動的にプロジェクトファイルのディレクトリを取得してくれます。
  • Advanced Options -> チェックはキャプチャの通りすべて外してください。

そして、OKをおします

filewatchers-phpstan.png


設定一覧に戻ると追加されています。Enabled のチェックを設定します。既存のものは外し、新しく追加したものはチェックします。

そして、右下の Apply, OK をクリックします

filewachers-list.png

挙動確認

以下のようになれば成功です。

PHP CS Fixer

ファイル保存時にフォーマッタが走ります。
1.gif

PHP Stan

ファイル保存時に怒られれば成功です。
2.gif

最後に

これにてすべての設定は終わりです。お読みいただきましてありがとうございました。PhpStorm/PHPStan/PHP CS Fixerをうまく組み合わせることで、コードをより良くできるかなと思っています。皆様のより良いPHPライフを祈っております。また、より堅牢なPHPを書きたい方はぜひ声をかけてくださると嬉しいです。

明日は、LITALICO Engineers Advent Calendar 2022 2日目の記事です。@powsato が担当します。どうぞお楽しみに!

ちなみに。。。

弊社、絶賛採用活動中です。応募する際は、tyamahoriの記事を見たと言ってもらえたらとても喜びます笑

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
7