🐥

PHP Intelephense(VS Code拡張機能)の静的解析が局所的におかしいときの局所調整の件

に公開

はじめに

return redirect()->route('xxx.index');

のコードで、redirect()のところで、エディタ上、赤ニョロ(赤の破線)で怒られた

なぜか、他のチームメンバーは、「PHP Intelephenseの静的解析」を使ってるけど

同じ事象はおきない。

解決の方向性

幸いなことに、

「 redirect() 」ところだけなので、

PHP Intelephense自体を消したり、無効にするようなことをしたくなく

該当のものだけ、局所的に対応したい

具体的な解決法

下記のようにすれば解消し、エラーでなくなりました

.vscode/intelephense-laravel-stubs.php

<?php
declare(strict_types=1);

/**
 * Intelephense 用ローカルスタブ(実行時には読み込ませない)
 * redirect() の戻り値推論が null 扱いになる P1006 を潰す目的
 */

namespace {
    if (!function_exists('redirect')) {
        /**
         * 引数なし redirect(): Redirector
         * @return \Illuminate\Routing\Redirector
         */
        function redirect()
        {
        }
    }

    if (!function_exists('route')) {
        /**
         * route() 自体の型も補強(必要なら)
         * @param string $name
         * @param mixed $parameters
         * @param bool $absolute
         * @return string
         */
        function route($name, $parameters = [], $absolute = true)
        {
        }
    }
}

これは、git上、コミット/プッシュせず、ローカルだけ置いておくやり方でよいだろう

同じように、今後「PHP Intelephense」で局所的に、怒られるけど
別に、動作に問題内ようなもの、どう考えてもおかしいと思われないもの
他のチームメンバーは、エディタで怒られないなど

そういうものが、局所的に、今後あれば、

★ この記事のURLをAIに吸わせて ★

怒られるコードの種類と、当記事と同様の解決策をだして
と、AIに依頼し、今後、解決を図ることにした

以上

AIに投げるときの文章のひな形

当記事のURLの

https://zenn.dev/tazzae999jp/articles/ae30b7a34c6b94

を指定する形で、下記のような質問文をAIに投げたら、
よいでしょう。

下記にひな形をしめします。

コピペした後、
XXXX や、xxx のあたりを、その時の状況にあわせて
変更調整したものを、AIに投げて、返ってきた回答を
.vscode/intelephense-laravel-stubs.php
貼り付ければ、解決できると思います。

https://zenn.dev/tazzae999jp/articles/ae30b7a34c6b94
の記事を読み込んで、まず、完全理解してください

この記事のやり方を真似て、
.vscode/intelephense-laravel-stubs.php
に書くべき、スタブのコードを書いてください。

下記に示す、問題点を解決し、PHP Intelephenseの静的解析が効くようにしてください


問題点

実行時には、動作に問題が無いようですが、
下記のPHP Intelephenseが理解できず、
エディタ上で、局所的に、赤ニョロ(赤の破線)でエラー表示され
該当部分のコード補完も認識してくれない
これを局所的に解決したい。

Laravel のバージョン XXXXX
PHP のバージョン XXXX
のアプリのコードである。

XXXクラスのXXXメソッドを利用してるコードで、PHP Intelephenseが理解できず、
赤ニョロ(赤の波線)がエディタ上に表示され、
xxxxxxxxxxxxxxxxxx のエラーメッセージがでます。

上記に示したものの、定義情報としてのあるべき姿をまずは、きちんと、
公式ドキュメントや、GitHubのソースコードを参照しながら、
きちんと、確認したうえで、スタブコードとしてどうあるべきかを
100%確信が持てるまで、徹底的に調べ上げたうえで、回答をだしてください

安直な形で、回答を出さないで下さい。100%嘘なしで、100%正確に、100%の確信が持てるまで
徹底的に調べ上げて、「  100%嘘なしで、100%正確に、100%の確信  」の形が、わかったときに
はじめて、回答を書きはじめてください。それまでは、絶対に調査を打ち切らないでください。

Discussion