PHPStan (Larastan)
レベルに応じたソースコードの解析を行い、不具合の原因になりかねない箇所を指摘してくれる素晴らしいツール。
使い方
# ./vendor/bin/phpstan analyse -l [level] [検証するパス]
# example
./vendor/bin/phpstan analyse -l 4 app/Http/Controllers/TopController.php
level
下位レベルのテストを全て含む(※レベル3はレベル0~2もチェックするよ)
レベル | チェック内容 |
---|---|
0 | 基本的なチェック、未知のクラス、未知の関数、$thisに呼び出された未知のメソッド、これらのメソッドや関数に渡された引数の数が間違っている、常に未定義の変数。 |
1 | 未定義の変数、未知のマジックメソッド、__call や __get を持つクラスのプロパティがある可能性があります |
2 | 未知のメソッドを ($this だけでなく) すべての式でチェックし、PHPDocs の検証を行います |
3 | 戻り値の型、プロパティに割り当てられた型 |
4 | 基本的なデッドコードチェック - 常に偽のinstanceofやその他の型チェック、デッドelseブランチ、リターン後の到達不可能なコードなど |
5 | メソッドや関数に渡される引数の種類を確認する |
6 | タイプヒントの欠落を報告する |
7 | 部分的に誤った組合タイプを報告する - 組合タイプ内のいくつかのタイプにのみ存在するメソッドを呼び出すと、レベル7はそれを報告し始める; その他の不正確な状況を報告する可能性がある |
8 | null可能な型に対するメソッド呼び出しとプロパティアクセスを報告します |
9 or max | 混合型については,厳密には別の混合型に渡すことだけが許されます |
所見
チーム開発の場合は、どのレベルまで許容出来るかをチーム内で話し合った方がよさそう。
全てのファイルをレベル9で通そうとしたら膨大な時間が掛かることは間違いない。