PHPStanをチームに内緒で開発に取り入れる方法

1.5K Views

October 08, 24

スライド概要

PHP勉強会 in 大阪(03/27)

profile-image

webエンジニア

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

PHPStanをチームに内緒で 開発に取り入れる方法 株式会社ヘッドジャパン Natsuki

2.

PHPStan使ってますか?

3.

PHPStan使ってますか? ● PHPの静的解析ツール

4.

PHPStan使ってますか? ● PHPの静的解析ツール ● PHPDocに書いた型でチェックしてくれる

5.

PHPStan使ってますか? ● PHPの静的解析ツール ● PHPDocに書いた型でチェックしてくれる ● 未然に潜在的なエラーや問題を見つける

6.

PHPStan使ってますか? ● ● ● ● PHPの静的解析ツール PHPDocに書いた型でチェックしてくれる 未然に潜在的なエラーや問題を見つける levelの設定でルールの厳しさを調整できる

7.

PHPStanが無いとき 引数が数値を表す文字列で あれば、int型に変換する ‘aaaa’が渡されたとき nullが返る

8.

PHPStanがあるとき 指摘してくれる!!

9.

こんなエラーが出る int型を返すべきなのに、return文がmissingだよ

10.

PHPStanすごい!うちのPJにも欲しい!!

11.

PHPStanすごい!うちのPJにも欲しい!! でも、、、 ● composer.jsonに変更が入るから仕事で触ってるPJに入れるには、 チームの同意が要る

12.

PHPStanすごい!うちのPJにも欲しい!! でも、、、 ● composer.jsonに変更が入るから仕事で触ってるPJに入れるには、 チームの同意が要る ● 個人的なPJなら自由に入れられるけど、大した規模じゃ無いからあん まりエラーも無い

13.

PHPStanすごい!うちのPJにも欲しい!! でも、、、 ● composer.jsonに変更が入るから仕事で触ってるPJに入れるには、 チームの同意が要る ● 個人的なPJなら自由に入れられるけど、大した規模じゃ無いからあん まりエラーも無い ごめんよ、うちでは飼ってあげられないんだ

14.

PHPStanすごい!うちのPJにも欲しい!! でも、、、 ● composer.jsonに変更が入るから仕事で触ってるPJに入れるには、 チームの同意が要る ● 個人的なPJなら自由に入れられるけど、大した規模じゃ無いからあん まりエラーも無い ごめんよ、うちでは飼ってあげられないんだ そんなことない!!!

15.

仕事で触ってるPJに入れてみよう!!

16.

仕事で触ってるPJに入れてみよう!! project-a L src L vendor L composer.json

17.

仕事で触ってるPJに入れてみよう!! project-a my-phpstan L src L vendor L vendor L composer.json L composer.json L phpstan.neon

18.

仕事で触ってるPJに入れてみよう!! .gitignore project-a my-phpstan L src L vendor L vendor L composer.json L composer.json L phpstan.neon

19.

手順 1. 2. 3. 4. サブディレクトリにPHPStanをインストール phpstan.neonを作成 IDEの設定(vscode) 実行

20.

1.サブディレクトリにPHPStanをインストール my-phpstan内で PJを初期化 composer init

21.

1.サブディレクトリにPHPStanをインストール my-phpstan内で PJを初期化 composer init PHPStanをインストール composer install phpstan/phpstan --dev ~/.config/git/ignore にmy-phpstanを追記

22.

2. phpstan.neonを作成 ルールの厳しさ(0〜8) 解析する対象のパス (project-aのsrc) NEON(YAMLみたいなやつ)で記述

23.

2. phpstan.neonを作成 project-a my-phpstan L src L vendor L vendor L composer.json L composer.json L phpstan.neon

24.

4. IDEの設定(vscode) 拡張機能をインストール https://marketplace.visualstudio.com/items?itemName=SanderRonde.phpstan-vscode

25.

4. IDEの設定(vscode) 設定を変更

26.

5. 実行!!

27.

5. 実行!! 戻り値の型が定義されていない関数だと

28.

5. 実行!! 「戻り値の型を指定してね」

29.

注意

30.

注意 ● 常にエラーが出てるので他のエラーに気付きにくくなる

31.

注意 ● 常にエラーが出てるので他のエラーに気付きにくくなる ● 型情報を書かない人への不満が溜まる (PHPStanが絶対正しいわけじゃない)

32.

注意 ● 常にエラーが出てるので他のエラーに気付きにくくなる ● 型情報を書かない人への不満が溜まる (PHPStanが絶対正しいわけじゃない) ● あくまで使い方を学ぶため ○ levelを変えてみたり、色んな型を試したり

33.

注意 ● 常にエラーが出てるので他のエラーに気付きにくくなる ● 型情報を書かない人への不満が溜まる (PHPStanが絶対正しいわけじゃない) ● あくまで使い方を学ぶため ○ levelを変えてみたり、色んな型を試したり そして、ある程度使えるようになったらチームに布教して 型安全な開発体験の素晴らしさを共有

34.

おまけ①(PHPStormの場合) PHPStormは標準でvscodeの拡張機能と同等の機能がある この辺の設定が必要

35.

おまけ②(CLIでの実行) cliのコマンドだと my-phpstan\\vendor\\bin\\phpstan analyze --configuration="./my-phpstan/phpstan.neon"

36.

おまけ③(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を追加しておくといいかも