概要
PHPStanを使っていてどうやっても解消できない静的解析エラーをエラーとして扱わないようにする方法を簡単にまとめる。
注意
本方法は多用してはいけません。多用するとPHPStanを入れている意味がなくなります。
コード上でどうにかして対処し、それでもどうしても解消できない場合に使いましょう。
お願い
なるべくエラーを許容する方法で解決したくありません。もっと良い解決方法がございましたらぜひ教えてほしいです。。!
方法
phpstan.neonというファイルに見過ごしたいエラーを指定することでそのエラーをなかったことにする事ができる。
具体的にはignoreErrors:
のあとに正規表現を使って見過ごしたいエラーを指定する。
エラーとは下記のように行数とエラー内容で表示されるヤツのことである。
------ -------------------------------------------------------------------------------------
Line ファイルパス
------ -------------------------------------------------------------------------------------
107 Access to an undefined property Stripe\StripeObject::$last4.
------ -------------------------------------------------------------------------------------
今回のエラー内容は$last4 = $this->paymentMethod?->card?->last4;
という処理でlast4のプロパティが見つからないというエラーである。
それもそのはず、対象のプロパティが含まれるクラスは動的クラスだ。last4プロパティは動的クラスに存在しない。
phpstan.neonを探して下記のように書いてみよう。(おそらくこのファイルはPHPStanのチェックレベルを指定するものなのでPHPStanを運用しているならほぼ確実に存在しているはずである。)
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app/
- config/
- database/
- tests/
- lang/
# Level 9 is the highest level
level: 6
ignoreErrors:
# Stripe PHP SDK系の動的メソッド回避
- '#^Access to an undefined property Stripe\\StripeObject::\$last4\.#'
上記で注目すべきはparameters:
のなかのignoreErrors:
の中の- '#^Access to an undefined property Stripe\\StripeObject::\$last4\.#'
の部分である。
配列的にignoreErrors:
の中に許容したいエラーを正規表現で記載するらしい。
上記の設定を行い、再びPHPStanを実行したところ当該のエラーは出なかった。