はじめに
こんにちは、エンジニアのkeitaMaxです。
静的解析ツールのPHPStanのLaravel版のlarastanを使用していこうと思います。
この記事を参考に進めていきます。
larastanをインストールして実行する
まずは下記コマンドでLaravelにlarastanをインストールします。
composer require nunomaduro/larastan --dev
次にcomposer.jsonと同じ階層にphpstan.neon
を作成します。
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app
# The level 9 is the highest level
level: 5
ignoreErrors:
- '#PHPDoc tag @var#'
excludePaths:
- ./*/*/FileToBeExcluded.php
checkMissingIterableValueType: false
参考元と全く同じように作成しました。
次に、下記コマンドで解析を開始します。
./vendor/bin/phpstan analyse
すると下記のようなエラーが出てしまいました。
PS C:\develop\docker-laravel-app\src> ./vendor/bin/phpstan analyse
Note: Using configuration file C:\develop\docker-laravel-app\src\phpstan.neon.
21/21 [============================] 100%
-- -----------------------------------------------------------------------------
Error
-- -----------------------------------------------------------------------------
Ignored error pattern #PHPDoc tag @var# was not matched in reported errors.
-- -----------------------------------------------------------------------------
[ERROR] Found 1 error
ignoreErrors に設定したエラーパターンがマッチするファイルがない場合に発生します。 すでにエラーが解消されているので、該当のignoreErrorsの設定を削除すればOKです。
ちなみに reportUnmatchedIgnoredErrors: false を設定すればこのエラー設定を無効化できます。ただし、無>効なignoreErrorsの設定が増える可能性があるので注意が必要です。詳細は以下のリファレンスを参照ください。
https://phpstan.org/user-guide/ignoring-errors#reporting-unused-ignores
このURLによると、下記を追加すると治ると書いてありました。
reportUnmatchedIgnoredErrors: false
reportUnmatchedIgnoredErrorsオプションをfalseにしておかないと、ignoreErrorsオプションに指定した正規表現にマッチするエラーが発生しなかった場合に解析失敗になってしまうので注意が必要です。
(参照:https://qiita.com/ngmy/items/1a8ef21c76d74c1d4dfe)
今回ignoreErrors使っていないと思うので、削除して対処しました。
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app
# The level 9 is the highest level
level: 5
excludePaths:
- ./*/*/FileToBeExcluded.php
checkMissingIterableValueType: false
次にLevelを7に上げてみます。
一度指定したレベルを上げるのは大変なので、7に上げておきます。
さいごに
結構すぐにPHPStanを入れることができました。
やり方が違ったり、もっといいやり方があるというご指摘がある方はコメントしていただけると幸いです。
最後まで読んでいただきありがとうございました。
参考文献
次の記事