mcpField
R
review-php

review-php

github.com/nesnilnehc测试与质量866 次安装2 天前更新
代码仓库

关于 review-php

review-php 是面向 PHP 代码审查的技能,专注语言与运行时规范,并输出带文件和行号的 findings。它不负责范围选择、安全或架构审查,可作为完整代码审查流程中的 PHP 检查步骤。

主要功能

  1. 01检查类型声明与严格类型
  2. 02审查异常处理和资源管理
  3. 03核对 PSR、命名空间与自动加载
  4. 04检查空值安全及迭代器
  5. 05核对 PHP 版本兼容性与可测试性
  6. 06按格式输出带位置的 findings

适用场景

  1. 01为 PHP 文件执行语言规范审查
  2. 02作为编排式代码审查的 PHP 步骤
  3. 03提交 PR 前检查类型、资源和 PSR 规范

安装

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

$npx skills add https://github.com/nesnilnehc/ai-cortex --skill review-php

安装后在 Claude Code 中输入/review-php确认已加载。

附带文件README.md

详细介绍

技能:审查 PHP

目的

仅审查 PHP 代码是否符合语言和运行时约定。不要界定审查范围(差异还是整个代码库),也不要进行安全或架构分析;这些由范围和认知技能负责。按标准格式输出问题列表,以便汇总。重点关注严格类型和声明、错误处理、资源管理、PSR 标准(PSR-4、PSR-12)、命名空间、空值安全、生成器和可迭代对象、PHP 版本兼容性及可测试性。


核心目标

主要目标:针对给定代码范围,生成涵盖严格类型、错误处理、资源管理、PSR 标准、命名空间、空值安全、生成器、版本兼容性及可测试性的 PHP 语言与运行时问题列表。

成功标准(必须全部满足):

  1. ✅ 仅限 PHP 范围:只审查 PHP 语言和运行时约定;不选择范围、不进行安全或架构分析
  2. ✅ 涵盖全部九个 PHP 维度:在相关情况下评估严格类型、错误处理、资源管理、PSR 标准、命名空间/自动加载、空值安全、生成器/可迭代对象、PHP 版本兼容性及可测试性
  3. ✅ 符合问题格式:每个问题都包含 findings-list §5.1 要求的所有要素,类别为 language-php
  4. ✅ 文件:行号引用:所有问题都引用具体文件位置和行号
  5. ✅ 排除非 PHP 代码:除非明确纳入范围,否则不依据 PHP 专属规则分析非 PHP 文件

验收测试:输出是否包含一份聚焦 PHP 的问题列表,带有文件:行号引用,涵盖所有相关的语言与运行时维度,且未进行安全、架构或范围分析?


范围边界

本技能负责:

  • declare(strict_types=1)、类型化属性、参数和返回类型
  • 异常处理(Throwable 层级、try-catch-finally、禁止空 catch)
  • 资源管理(fopen/fclose、数据库连接、try-finally 模式)
  • PSR-4 自动加载和 PSR-12 编码风格
  • 命名空间和自动加载的正确性
  • 空值合并运算符(??)、空值安全运算符(?->)、避免抑制错误
  • 生成器和可迭代对象的正确性
  • 与 composer.json 约束相符的 PHP 版本兼容性
  • 可测试性(依赖注入、避免使用静态方法/单例、构造函数注入)

本技能不负责:

  • 选择范围——范围由调用方提供
  • 安全分析(注入、身份验证、CSRF)——请使用 review-security
  • 架构分析——请使用 review-architecture
  • SQL 专项分析——请使用 review-sql
  • 完整的编排式审查——请使用 orchestrate-code-review

交接点:输出所有 PHP 问题后,将其交给 orchestrate-code-review 汇总。若在 PHP 代码中发现 SQL 注入或安全漏洞,请指出并建议使用 review-security。


使用场景

  • 编排式审查:在 PHP 项目中运行 orchestrate-code-review 的“范围 → 语言 → 框架 → 库 → 认知”流程时,将本技能用作语言审查步骤。
  • 仅审查 PHP:用户只想检查语言/运行时约定时(例如,新增 PHP 文件后)。
  • PR 前 PHP 检查清单:确保类型安全、资源清理和 PSR 合规性正确。

使用时机:待审查代码为 PHP,且任务涉及语言/运行时质量时。范围由调用方或用户确定。


行为

本技能的范围
  • 分析:在给定代码范围(调用方提供的文件或差异)内检查 PHP 语言和运行时约定。不要决定范围;将代码范围作为输入接受。
  • 不要:选择范围、进行安全审查或架构审查;除非明确纳入范围,否则不要依据 PHP 专属规则审查非 PHP 文件。
审查清单(仅 PHP 维度)
  1. 严格类型与声明:declare(strict_types=1) 的使用;属性和参数的类型声明;返回类型声明;避免隐式类型转换带来的问题。
  2. 错误处理:异常与错误的区别;Throwable 层次结构;正确使用 try-catch 并重新抛出;避免空 catch 块或范围过宽的 catch;在适用时使用 error_reporting 并将错误转换为异常。
  3. 资源管理:fopen/fclose、数据库连接、流;确保资源已关闭(使用 try-finally 或缩短作用域);避免资源泄漏。
  4. PSR 标准:PSR-4 自动加载和命名空间到路径的映射;PSR-12 编码风格(缩进、花括号、可见性);类和方法命名。
  5. 命名空间和自动加载:正确使用 use 语句;避免污染全局命名空间;确保 composer 自动加载配置一致。
  6. 空值安全:空值合并运算符(??)、空值安全运算符(?->);避免使用 @ 屏蔽错误;区分数组中的 isset 与 array_key_exists。
  7. 生成器和可迭代对象:正确使用 yield;正确实现迭代器;对大型数据集进行内存高效的迭代。
  8. PHP 版本兼容性:所用特性与 composer.json 中的 php 约束是否匹配;已弃用 API 及迁移路径。
  9. 可测试性:依赖注入;静态方法和单例的使用;构造函数注入;便于模拟的接缝。
语气与参考
  • 专业且技术性强:引用具体位置(文件:行号)。输出的发现必须包含 findings-list §5.1 要求的所有要素。

输入与输出

输入
  • 代码范围:用户或范围技能已选定的文件、目录或差异。此技能不决定范围;它仅根据语言规范审查所提供的 PHP 代码。
输出
  • 按 specs/findings-list.md 中定义的格式输出零条或多条发现,Category 为 language-php。
  • 此技能的类别为 language-php。

限制

硬性边界
  • 不得进行安全、架构或范围选择方面的工作。仅遵循 PHP 语言和运行时规范。
  • 不得在没有具体位置或可执行建议的情况下给出结论。
  • 除非明确纳入范围,否则不得针对 PHP 特定规则审查非 PHP 代码。
技能边界

不得执行以下操作(由其他技能负责):

  • 不得选择或定义代码范围——范围由调用方或 orchestrate-code-review 确定
  • 不得进行安全分析(SQL 注入、XSS、CSRF)——使用 review-security
  • 不得进行架构分析——使用 review-architecture
  • 不得进行全面的 SQL 分析——使用 review-sql

以下情况应停止并移交:

  • 输出所有 PHP 相关发现后,移交给 orchestrate-code-review 进行汇总
  • 用户需要完整审查(范围 + 语言 + 认知维度)时,转交给 orchestrate-code-review
  • 发现 SQL 注入或安全问题时,记录并建议使用 review-security

自检

核心成功标准
  • 仅限 PHP 范围:只审查 PHP 语言和运行时规范;不进行范围选择、安全或架构分析
  • 覆盖全部九个 PHP 维度:在相关情况下评估严格类型、错误处理、资源管理、PSR 标准、命名空间/自动加载、空值安全、生成器/可迭代对象、PHP 版本兼容性和可测试性
  • 符合发现格式:每条发现均包含 findings-list §5.1 要求的所有要素,类别为 language-php
  • 文件:行号引用:所有发现均引用带行号的具体文件位置
  • 排除非 PHP 代码:除非明确纳入范围,否则不针对 PHP 特定规则分析非 PHP 文件
过程质量检查
  • 是否仅审查了 PHP 语言/运行时维度(未涉及范围/安全/架构)?
  • 是否在相关情况下涵盖了严格类型、错误处理、资源、PSR、命名空间、空值安全、生成器、版本兼容性和可测试性?
  • 每条发现是否都包含 findings-list §5.1 要求的全部要素,且 category=language-php?
  • 是否使用 file:line 引用问题?
验收测试

输出是否包含一份聚焦 PHP 的发现列表,其中包含 file:line 引用,并涵盖所有相关的语言/运行时维度,且未进行安全、架构或范围分析?


示例

示例 1:资源泄漏
  • 输入:PHP 函数使用 fopen() 打开文件,但并未在所有代码路径中关闭文件。
  • 预期:针对资源管理提出一条发现;建议使用 try-finally,或确保在所有路径中调用 fclose()。类别 = language-php。
示例 2:缺少严格类型
  • 输入:新增的 PHP 文件没有 declare(strict_types=1),且缺少参数类型和返回类型。
  • 预期:针对类型安全提出一条或多条发现;建议在可行时添加严格类型和类型化参数。类别 = language-php。
边缘情况:PHP 和 SQL 混合
  • 输入:包含数据库查询 SQL 字符串的 PHP 文件。
  • 预期:仅审查 PHP 规范(资源处理、错误处理、类型)。不要在此提出 SQL 注入问题;这类问题应交由 review-security 或 review-sql 处理。

评论

支持 Markdown