
概要
Laravelで開発をする際、コードの品質を保つために必須のPHPstan
実行しなくてもエラーになる部分を教えてくれたり、
不必要な変数や、到達できない処理を教えてくれる静的解析ツールです。
Levelは0〜9の10段階で、数字が上がるほどチェックが厳しくなります。
この記事では、以下3つについてお伝えします。
- PHPstanのインストール
- Levelの設定方法(phpstan.neonファイルを作成)
- PHPstanの実行方法
PHPstanのインストール
ComposerでPHPstanをインストール
composer require --dev phpstan/phpstan
ComposerでPHPstanの拡張パッケージをインストール
composer require --dev phpstan/extension-installer
※↑は必須ではありませんが、インストールしておくことでphpstan.neonファイルへの記述が省略できます
Levelの設定方法(phpstan.neonファイルを作成)
PHPstanのLevelはデフォルトで0に設定されています
Level0でも明らかにエラーになる部分は見つけてくれます。
ただ、もっと厳しくチェックするために、レベルを上げる方法をお伝えします。
PHPstanのLevelを設定するためにはneon
というファイルが必要です。
Composerのインストールではこのファイルは作成されないので、
手動でphpstan.neonファイルを作成してください。
neonファイルは、yml
やDockerFile
のような書き方をします。
parameters:
level: 8
paths:
- app
- packages //追加で作成したファイル
↑のようにLevelを記述し、path
sにはチェックするフォルダを選択します。
※デフォルトではappだけ
今回はクリーンアーキテクチャで作成したAPIのチェックもしたいので、packagesもチェクに加えました。
PHPstanの実行方法
neonファイルまでのパスを指定して実行します
vendor/bin/phpstan analyse -c phpstan.neon
実行
Laravelでテスト用のAPIを1つ作成しました。
Level0ではエラーが1つもなかったのですが、
Levelを上げていくと型の指定方法や、PHPDocの書き方で引っかかってしまいました
Level0

Level1

Level2

Level3

Level4

Level5

Level6

Level7

Level8

Level9

Level10
まだLevel10はないようです
