はじめに
こんばんは。
phpstan使ってますか?
自分はLaravelのお仕事を受けることが多く、その現場では larastanとして導入されている事が多いです。
個人的によく怒られるエラーの代表として no value type specified in iterable type array
があるかなと思ってます。
配列の中身ちゃんと定義してね。ってやつです。
基本的にはちゃんと書くと思うんですが、ちょっとここは除外したいなーってときもあると思います。
たとえば Laravel の FormRequestクラスの rules()
とか attributes()
とかです。
配列をかえすのはきまってるけど、配列の中身を正確に知る必要はそこまでないかなと思います。
ここだけどうにか除外できないかなーと思って、調べてみました。
本題
1. levelを5にする
levelを5にすると、このエラーは発生しません。
parameters: paths: - app/ level: 5
2. checkMissingIterableValueType
をfalseにする
checkMissingIterableValueType: false
にすると、このエラーを無視することができます。
parameters: paths: - app/ level: 9 checkMissingIterableValueType: false
3. excludePathsを使って FormRequest.phpをチェック外にする
以下のようにすることで *FormRequest.php
はphpstanのチェックから外されます。
parameters: paths: - app/ level: 9 excludePaths: - app/Http/Request/**/*FormRequest.php
4. ignoreErrorsを使って 該当のエラーだけは除外する
以下のようにすることで FormRequest
の rules()
で起こる該当エラーだけ除外できます。
parameters: paths: - app/ level: 9 ignoreErrors: - '#FormRequest::rules\(\) return type has no value type specified in iterable type array\.#'
終わりに
プロジェクトによっていろいろ変わると思いますが、個人的には4番を採用してます。
現場からは以上です。