关于 review-php
review-php 是面向 PHP 代码审查的技能,专注语言与运行时规范,并输出带文件和行号的 findings。它不负责范围选择、安全或架构审查,可作为完整代码审查流程中的 PHP 检查步骤。
主要功能
- 01检查类型声明与严格类型
- 02审查异常处理和资源管理
- 03核对 PSR、命名空间与自动加载
- 04检查空值安全及迭代器
- 05核对 PHP 版本兼容性与可测试性
- 06按格式输出带位置的 findings
适用场景
- 01为 PHP 文件执行语言规范审查
- 02作为编排式代码审查的 PHP 步骤
- 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 语言与运行时问题列表。
成功标准(必须全部满足):
- ✅ 仅限 PHP 范围:只审查 PHP 语言和运行时约定;不选择范围、不进行安全或架构分析
- ✅ 涵盖全部九个 PHP 维度:在相关情况下评估严格类型、错误处理、资源管理、PSR 标准、命名空间/自动加载、空值安全、生成器/可迭代对象、PHP 版本兼容性及可测试性
- ✅ 符合问题格式:每个问题都包含 findings-list §5.1 要求的所有要素,类别为
language-php - ✅ 文件:行号引用:所有问题都引用具体文件位置和行号
- ✅ 排除非 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 维度)
- 严格类型与声明:
declare(strict_types=1)的使用;属性和参数的类型声明;返回类型声明;避免隐式类型转换带来的问题。 - 错误处理:异常与错误的区别;
Throwable层次结构;正确使用 try-catch 并重新抛出;避免空 catch 块或范围过宽的 catch;在适用时使用error_reporting并将错误转换为异常。 - 资源管理:
fopen/fclose、数据库连接、流;确保资源已关闭(使用 try-finally 或缩短作用域);避免资源泄漏。 - PSR 标准:PSR-4 自动加载和命名空间到路径的映射;PSR-12 编码风格(缩进、花括号、可见性);类和方法命名。
- 命名空间和自动加载:正确使用
use语句;避免污染全局命名空间;确保 composer 自动加载配置一致。 - 空值安全:空值合并运算符(
??)、空值安全运算符(?->);避免使用@屏蔽错误;区分数组中的isset与array_key_exists。 - 生成器和可迭代对象:正确使用
yield;正确实现迭代器;对大型数据集进行内存高效的迭代。 - PHP 版本兼容性:所用特性与 composer.json 中的
php约束是否匹配;已弃用 API 及迁移路径。 - 可测试性:依赖注入;静态方法和单例的使用;构造函数注入;便于模拟的接缝。
语气与参考
- 专业且技术性强:引用具体位置(文件:行号)。输出的发现必须包含 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