analyse-with-phpstan について
PHP開発者向けのコード分析スキルです。PHPStan Playground APIにコードを送信し、PHP 7.2~8.5の各バージョンのエラーを報告します。分析レベルやルール設定も指定できます。
主な機能
- 01PHPStan Playground APIの呼び出し
- 02PHP 7.2~8.5の分析
- 03分析レベルとルール設定
- 04PHPバージョン別の結果整理
- 05Playgroundリンクの提示
活用シーン
- 01PHPコードの静的解析エラーの確認
- 02PHPバージョンごとの結果比較
- 03strict rulesやbleeding edgeの有効化
- 04検出結果をMarkdownで報告
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ phpstan/ phpstan --skill analyse-with-phpstanインストール後、Claude Code で/analyse-with-phpstanを入力して読み込まれたか確認します。
詳細
PHPStan で PHP コードを解析する
https://api.phpstan.org/analyse の PHPStan プレイグラウンド API を使用して PHP コードを解析します。PHP 7.2~8.5 の各バージョンで PHPStan を実行し、各バージョンのエラーを返します。
解析するコード:$ARGUMENTS
ステップ 1:コードを準備する
解析する PHP コードを取得します。$ARGUMENTS がファイルパスの場合は、ファイルの内容を読み取ります。コードは <?php で始まる必要があります。
ステップ 2:設定を決定する
ユーザーから別途指定がない限り、次のデフォルト値を使用します。
- レベル:
"10"(最も厳格) - strictRules:
false - bleedingEdge:
false - treatPhpDocTypesAsCertain:
true
ユーザーが strict rules または bleeding edge を指定した場合は、それらを true に設定します。
ステップ 3:プレイグラウンド API を呼び出す
POST でコードを送信します。
curl -s -X POST 'https://api.phpstan.org/analyse' \
-H 'Content-Type: application/json' \
-d '{
"code": "<PHP code, JSON-escaped>",
"level": "<level>",
"strictRules": <true|false>,
"bleedingEdge": <true|false>,
"treatPhpDocTypesAsCertain": <true|false>,
"saveResult": true
}'
コードの値は、適切に JSON エスケープする必要があります(引用符、バックスラッシュ、改行をエスケープします)。
ステップ 4:レスポンスを解析する
レスポンスの JSON には次の内容が含まれます。
versionedErrors— PHP バージョンごとに 1 つのオブジェクトを持つ配列。各オブジェクトには次の内容が含まれます。phpVersion— 整数で表された値。例:80400= PHP 8.4、70400= PHP 7.4errors—message、line、identifier、(省略可能な)tip、ignorableを含むエラーオブジェクトの配列
id— 保存された結果の UUID
phpVersion の整数を読みやすい文字列に変換します:Math.floor(v / 10000) . Math.floor((v % 10000) / 100)。
ステップ 5:結果を Markdown で表示する
次の形式で結果を出力します。
プレイグラウンドへのリンク
https://phpstan.org/r/<id>
使用した設定
レベル: <level> | Strict rules: yes/no | Bleeding edge: yes/no
エラー
エラーが同一(メッセージ、行、識別子が一致)している連続した PHP バージョンは、範囲としてまとめます。たとえば、PHP 7.2~8.3 で同じエラーが報告される場合は、1 つのグループとして表示します。
すべての PHP バージョンでエラーが同一の場合は、1 つのグループとして表示します。
すべての PHP バージョン(差異なし):
| 行 | エラー | 識別子 |
|---|---|---|
| 10 | Parameter #1 $foo expects string, int given. | argument.type |
バージョンごとにエラーが異なる場合は、グループを分けて表示します。
PHP 8.0 – 8.5:
| 行 | エラー | 識別子 |
|---|---|---|
| 10 | Parameter #1 $foo expects string, int given. | argument.type |
PHP 7.2 – 7.4:
エラーはありません。
いずれの PHP バージョンでもエラーがない場合は、次のように記載します:いずれの PHP バージョンでもエラーは見つかりませんでした。