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. 01调用 PHPStan Playground API
  2. 02分析 PHP 7.2–8.5 版本
  3. 03配置分析级别与规则选项
  4. 04按版本汇总错误结果
  5. 05生成 Playground 链接

适用场景

  1. 01检查 PHP 代码的静态分析错误
  2. 02比较代码在不同 PHP 版本下的结果
  3. 03按需启用严格规则或 bleeding edge
  4. 04整理错误并输出 Markdown 报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/phpstan/phpstan --skill analyse-with-phpstan

安装后在 Claude Code 中输入/analyse-with-phpstan确认已加载。

详细介绍

使用 PHPStan 分析 PHP 代码

使用 PHPStan playground API(https://api.phpstan.org/analyse)分析 PHP 代码。该 API 会在 PHP 7.2–8.5 上运行 PHPStan,并返回各版本的错误。

要分析的代码:$ARGUMENTS

第 1 步:准备代码

获取要分析的 PHP 代码。如果 $ARGUMENTS 是文件路径,请读取文件内容。代码必须以 <?php 开头。

第 2 步:确定设置

除非用户另有指定,否则使用以下默认值:

  • level:"10"(最严格)
  • strictRules:false
  • bleedingEdge:false
  • treatPhpDocTypesAsCertain:true

如果用户要求启用严格规则或 bleeding edge,请将相应选项设为 true。

第 3 步:调用 playground 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 版本对应一个对象,其中包含:
    • 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 格式呈现结果

按以下格式输出结果:

Playground 链接

https://phpstan.org/r/<id>

使用的设置

Level: <level> | 严格规则: 是/否 | Bleeding edge: 是/否

错误

将错误相同(消息、行号和标识符均相同)的连续 PHP 版本分组为范围。例如,如果 PHP 7.2–8.3 报告相同的错误,则将它们显示为一个组。

如果所有 PHP 版本报告的错误都相同,则显示一个组:

所有 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 版本均未发现错误。

评论

支持 Markdown