1.5K Views
October 08, 24
スライド概要
PHP勉強会 in 大阪(03/27)
PHPStanをチームに内緒で 開発に取り入れる方法 株式会社ヘッドジャパン Natsuki
PHPStan使ってますか?
PHPStan使ってますか? ● PHPの静的解析ツール
PHPStan使ってますか? ● PHPの静的解析ツール ● PHPDocに書いた型でチェックしてくれる
PHPStan使ってますか? ● PHPの静的解析ツール ● PHPDocに書いた型でチェックしてくれる ● 未然に潜在的なエラーや問題を見つける
PHPStan使ってますか? ● ● ● ● PHPの静的解析ツール PHPDocに書いた型でチェックしてくれる 未然に潜在的なエラーや問題を見つける levelの設定でルールの厳しさを調整できる
PHPStanが無いとき 引数が数値を表す文字列で あれば、int型に変換する ‘aaaa’が渡されたとき nullが返る
PHPStanがあるとき 指摘してくれる!!
こんなエラーが出る int型を返すべきなのに、return文がmissingだよ
PHPStanすごい!うちのPJにも欲しい!!
PHPStanすごい!うちのPJにも欲しい!! でも、、、 ● composer.jsonに変更が入るから仕事で触ってるPJに入れるには、 チームの同意が要る
PHPStanすごい!うちのPJにも欲しい!! でも、、、 ● composer.jsonに変更が入るから仕事で触ってるPJに入れるには、 チームの同意が要る ● 個人的なPJなら自由に入れられるけど、大した規模じゃ無いからあん まりエラーも無い
PHPStanすごい!うちのPJにも欲しい!! でも、、、 ● composer.jsonに変更が入るから仕事で触ってるPJに入れるには、 チームの同意が要る ● 個人的なPJなら自由に入れられるけど、大した規模じゃ無いからあん まりエラーも無い ごめんよ、うちでは飼ってあげられないんだ
PHPStanすごい!うちのPJにも欲しい!! でも、、、 ● composer.jsonに変更が入るから仕事で触ってるPJに入れるには、 チームの同意が要る ● 個人的なPJなら自由に入れられるけど、大した規模じゃ無いからあん まりエラーも無い ごめんよ、うちでは飼ってあげられないんだ そんなことない!!!
仕事で触ってるPJに入れてみよう!!
仕事で触ってるPJに入れてみよう!! project-a L src L vendor L composer.json
仕事で触ってるPJに入れてみよう!! project-a my-phpstan L src L vendor L vendor L composer.json L composer.json L phpstan.neon
仕事で触ってるPJに入れてみよう!! .gitignore project-a my-phpstan L src L vendor L vendor L composer.json L composer.json L phpstan.neon
手順 1. 2. 3. 4. サブディレクトリにPHPStanをインストール phpstan.neonを作成 IDEの設定(vscode) 実行
1.サブディレクトリにPHPStanをインストール my-phpstan内で PJを初期化 composer init
1.サブディレクトリにPHPStanをインストール my-phpstan内で PJを初期化 composer init PHPStanをインストール composer install phpstan/phpstan --dev ~/.config/git/ignore にmy-phpstanを追記
2. phpstan.neonを作成 ルールの厳しさ(0〜8) 解析する対象のパス (project-aのsrc) NEON(YAMLみたいなやつ)で記述
2. phpstan.neonを作成 project-a my-phpstan L src L vendor L vendor L composer.json L composer.json L phpstan.neon
4. IDEの設定(vscode) 拡張機能をインストール https://marketplace.visualstudio.com/items?itemName=SanderRonde.phpstan-vscode
4. IDEの設定(vscode) 設定を変更
5. 実行!!
5. 実行!! 戻り値の型が定義されていない関数だと
5. 実行!! 「戻り値の型を指定してね」
注意
注意 ● 常にエラーが出てるので他のエラーに気付きにくくなる
注意 ● 常にエラーが出てるので他のエラーに気付きにくくなる ● 型情報を書かない人への不満が溜まる (PHPStanが絶対正しいわけじゃない)
注意 ● 常にエラーが出てるので他のエラーに気付きにくくなる ● 型情報を書かない人への不満が溜まる (PHPStanが絶対正しいわけじゃない) ● あくまで使い方を学ぶため ○ levelを変えてみたり、色んな型を試したり
注意 ● 常にエラーが出てるので他のエラーに気付きにくくなる ● 型情報を書かない人への不満が溜まる (PHPStanが絶対正しいわけじゃない) ● あくまで使い方を学ぶため ○ levelを変えてみたり、色んな型を試したり そして、ある程度使えるようになったらチームに布教して 型安全な開発体験の素晴らしさを共有
おまけ①(PHPStormの場合) PHPStormは標準でvscodeの拡張機能と同等の機能がある この辺の設定が必要
おまけ②(CLIでの実行) cliのコマンドだと my-phpstan\\vendor\\bin\\phpstan analyze --configuration="./my-phpstan/phpstan.neon"
おまけ③(Laravelの場合) larastanのREADME.mdを参考にしてください 1. phpstan/phpstanは不要でnunomaduro/larastanを使う 使用しているlaravelのバージョンによってlarastanのバージョンも違うので注意 2. サブディレクトリにorchestra/testbenchをインストール Laravelを普通に入れてもいいけどこっちの方が軽量 3. 4. 5. 6. phpstan.neonにincludesを追加 GooGee/ide-helper-file/から_ide_helper.phpをダウンロード 自作Facadeがあれば追記 excludePathsに_ide_helper.phpを追加しておくといいかも