Open6

Study | PHP静的解析

TakayyzTakayyz

PHPStan

  • ファイル毎の解析可能
  • 拡張作成可能

拡張例

  • var_dumpの下記忘れでCIを落とす
  • 引数の型をエラーに含める
  • ParamHelper
    // $idは1以上のint (int<1, max>) の型になる
    $id = ParamHelper::get('id')->asPositiveInt();
    
    // $nameはstring|falseの型になり、get('name')で値を取得できない場合はfalseが格納される
    $name = ParamHelper::get('name')->orDefaultFalse()->asString();
    
  • Util_Assert

参考資料

TakayyzTakayyz

Psalm


  • 検知された違反ルールがなぜ不適切なのか理由が解説されるため、納得感を得やすくなっている。
  • これがなんで悪いの? と思うときがあるが、理解ができると直すモチベーションも得られるのではないか。
    https://tech-blog.rakus.co.jp/entry/20220922/php#PHPMD