PHP 项目"板凳深度"评级打分方案
"板凳深度"原指体育替补席实力,用到 PHP 项目上,指的是团队后备力量、代码可维护性、知识冗余度、故障恢复能力等"非首发但关键时能顶上"的综合能力,下面给一套可落地的评级方法。

评级维度与权重
| 维度 | 说明 | 权重 |
|---|---|---|
| 人员冗余度 | 关键模块是否有≥2人能接手 | 25% |
| 代码可维护性 | 分层、解耦、注释、PSR 规范 | 20% |
| 文档与知识沉淀 | README、架构图、接口文档、Wiki | 15% |
| 测试覆盖 | 单元/集成测试覆盖率、CI | 15% |
| 故障恢复能力 | 监控、告警、回滚、灰度 | 15% |
| 技术债与依赖健康度 | Composer 依赖更新、废弃 API、漏洞 | 10% |
每个维度按 1–5 分打分,加权后换算为百分制。
各维度打分细则
人员冗余度(25%)
- 5分:核心模块均有 ≥3 人熟悉,有明确 backup
- 4分:核心模块 ≥2 人
- 3分:关键模块 1 主 1 备,但备不熟
- 2分:单点依赖明显(1 人扛核心)
- 1分:全员仅 1 人懂业务/框架
代码可维护性(20%)
用工具量化 + 人工评审:
- PHP_CodeSniffer(PSR-12 合规率)
- PHPStan / Psalm(level ≥ 6 加分)
- PHP Mess Detector(复杂度、重复代码)
- 是否分层(Controller/Service/Repository)、是否依赖注入
- 5分:静态分析通过、分层清晰、圈复杂度低
- 1分:面条代码、全局变量、无分层
文档与知识沉淀(15%)
- README 完整度、部署文档、架构图
- 接口文档(Swagger/OpenAPI)
- ADR(架构决策记录)、故障复盘文档
- 是否有 Wiki / Confluence 沉淀
测试覆盖(15%)
# 用 PHPUnit + Xdebug 生成覆盖率 ./vendor/bin/phpunit --coverage-text
- 5分:覆盖率 ≥ 80%,CI 强约束,含集成/E2E
- 3分:50–70%,核心有测试
- 1分:无测试或 < 20%
故障恢复能力(15%)
- 监控(Prometheus/Sentry/APM)
- 告警响应链路
- 一键回滚、灰度发布、Feature Flag
- 数据库备份与演练
技术债与依赖健康度(10%)
composer outdated # 过期依赖 composer audit # 安全漏洞
- PHP 版本是否在支持期(当前 8.1+)
- 是否用废弃函数(如
mysql_*、each()) - 第三方包维护状态(Star/最近提交)
计算公式
总分 = Σ(维度得分 ÷ 5 × 权重) × 100
示例:人员 3 分、代码 4 分、文档 2 分、测试 3 分、恢复 4 分、债 3 分
= (3/5×25) + (4/5×20) + (2/5×15) + (3/5×15) + (4/5×15) + (3/5×10)
= 15 + 16 + 6 + 9 + 12 + 6
= 64 分
等级划分
| 分数 | 等级 | 含义 |
|---|---|---|
| 90–100 | S 级 | 板凳深厚,主力缺阵无损运转 |
| 75–89 | A 级 | 有可靠替补,风险可控 |
| 60–74 | B 级 | 勉强可轮换,存在薄弱点 |
| 40–59 | C 级 | 单点依赖严重,需重点补强 |
| < 40 | D 级 | 无板凳,主力一走即瘫 |
自动化采集建议(PHP 生态工具链)
| 维度 | 工具 |
|---|---|
| 代码规范 | phpcs, php-cs-fixer |
| 静态分析 | phpstan, psalm, phpmd |
| 测试覆盖 | phpunit --coverage, infection(变异测试) |
| 依赖健康 | composer audit, composer outdated |
| 复杂度 | phpmetrics(生成 HTML 报告) |
| 文档 | 检查 docs/、openapi.yaml 是否存在 |
可以写个脚本汇总这些工具输出,自动算出可维护性、测试、依赖三维度的分数,剩余三维度靠人工评审打分。
加分/减分项(可选)
- ➕ 有 SRE/值班轮转制度:+3
- ➕ 有混沌工程 / 故障演练:+3
- ➖ 核心业务逻辑写在 Controller 里:-5
- ➖ 存在 hardcode 的密钥/账号:-5(一票否决项,直接降级)
需要的话我可以帮您写一个自动采集并生成评分报告的 PHP 脚本,或给一份评审打分表(Excel/表单结构)。