mcpField
A
analyse-with-phpstan

analyse-with-phpstan

github.com/phpstanテスト・品質14.1k248 回インストール今日更新
リポジトリ

analyse-with-phpstan について

PHP開発者向けのコード分析スキルです。PHPStan Playground APIにコードを送信し、PHP 7.2~8.5の各バージョンのエラーを報告します。分析レベルやルール設定も指定できます。

主な機能

  1. 01PHPStan Playground APIの呼び出し
  2. 02PHP 7.2~8.5の分析
  3. 03分析レベルとルール設定
  4. 04PHPバージョン別の結果整理
  5. 05Playgroundリンクの提示

活用シーン

  1. 01PHPコードの静的解析エラーの確認
  2. 02PHPバージョンごとの結果比較
  3. 03strict rulesやbleeding edgeの有効化
  4. 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.4
    • errors — 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 バージョン(差異なし):

行エラー識別子
10Parameter #1 $foo expects string, int given.argument.type

バージョンごとにエラーが異なる場合は、グループを分けて表示します。

PHP 8.0 – 8.5:

行エラー識別子
10Parameter #1 $foo expects string, int given.argument.type

PHP 7.2 – 7.4:

エラーはありません。

いずれの PHP バージョンでもエラーがない場合は、次のように記載します:いずれの PHP バージョンでもエラーは見つかりませんでした。

コメント