问题修复
修复已报告 bug 时,用系统化复现、根因分析…
适用于修复已报告 bug 并创建 PR 时,确保根因被解决、修复经过验证且添加回归测试。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
修复已报告 bug 时,用系统化复现、根通用
解决思路
- 在修复前先复现 bug:记录精确的复现步骤。
- 用截图捕获错误信息或异常行为。
- 记录复现频率(如 100% 可复现、间歇性等)。
- 如果涉及 UI 或复杂交互,录制视频。
- 识别受影响的版本和环境。
- 记录用户找到的任何临时绕过方法。
- 在干净环境中验证 bug 存在,而不仅是本地环境。
- 使用复现文档模板记录:Steps to Reproduce、Expected Behavior、Actual Behavior、Environment、Screenshots。
- 进行根因分析:检查服务器日志、浏览器控制台、错误追踪。
- 跟踪代码执行路径:从触发点到错误。
- 定位破坏点:找到发生 bug 的精确行或函数。
- 理解上下文:代码为什么这样表现?
- 检查最近变更:是否是最近提交引入的?
- 审查相关代码:其他地方是否有类似模式?
- 使用根因文档模板记录:Investigation、Root Cause、Why This Wasn't Caught。
- 实现修复时只改必要部分,保持最小变更。
- 添加防御性编码:增加校验或守卫。
- 遵循现有错误处理模式,保持一致性。
- 使用类型安全防止类似 bug。
- 对不明显的修复添加注释说明。
- 在数组操作前增加 null、undefined 和 Array.isArray 守卫,返回空数组并记录警告(如示例 generateReport)。
- 验证修复:按相同复现步骤确认 bug 不再发生。
- 测试修复周围的边界情况。
- 验证没有引入新错误。
- 检查修复在多个环境(dev、staging)中有效。
- 验证修复行为符合预期。
- 使用验证文档模板记录:Testing Performed、Edge Cases Tested、No New Issues。
- 为每个 bug 修复添加测试以防止回归。
- 添加能复现原始 bug 的测试,修复后应通过。
- 为调查中发现的边界情况添加测试。
- 如果 bug 涉及多个组件,添加集成测试。
- 如果现有测试需要处理新场景,更新它们。
- 编写示例测试覆盖 null、undefined、空数组、单条交易、多条交易等场景,并断言正确结果和警告调用。
- 在 PR 中提供全面的 bug 修复描述。
- PR 模板中包含:Ticket、Problem、Reproduction Steps (Before Fix)、Expected、Actual。
- PR 中记录 Root Cause:位置、原因、影响。
- PR 中记录 Solution:如何修复,包括 null 或 undefined 检查、返回空数组、用户提示、更防御性的 API 响应处理。
- PR 中记录 Fix Verification (After):复现步骤不再触发、边界情况、浏览器、staging、无新错误。
- PR 中记录 Test Coverage:新增单元测试、集成测试、现有测试通过、覆盖率变化。
- PR 中记录 Regression Prevention:新增测试、检查类似模式、更新文档。
- PR 中附上前后截图或证据。
- PR 中记录 Deployment Notes:迁移、环境变量、部署安全性、回滚方式。
- PR 中关联相关 issue(Closes、Related to)。
- 调查时避免:未验证就假设知道原因。
- 调查时避免:只修症状不修根因。
- 调查时避免:不检查其他地方是否存在类似 bug。
- 调查时避免:跳过在干净环境中复现。
- 实现时避免:做超出修复 bug 的改动。
- 实现时避免:在 bug 修复 PR 中重构无关代码。
- 实现时避免:在修复 bug 时添加功能。
- 实现时避免:不处理发现的所有边界情况。
- 验证时避免:修复后只测 happy path。
- 验证时避免:不在多个环境中测试。
- 验证时避免:跳过回归测试。
- 验证时避免:不记录测试了什么。
- 文档时避免:PR 描述含糊(如「Fixed bug」)。
- 文档时避免:不解释根因。
- 文档时避免:缺少前后证据。
- 文档时避免:不链接原始 bug 报告。
- 满足最低质量标准:根因已识别并记录。
- 满足最低质量标准:修复最小且有针对性。
- 满足最低质量标准:添加测试防止回归。
- 满足最低质量标准:验证有证据记录。
- 满足最低质量标准:没有引入新 bug。
- 满足最低质量标准:在所有支持环境中可用。
- 追求卓越指标:检查并修复类似模式。
- 追求卓越指标:测试多个边界情况。
- 追求卓越指标:测量性能影响。
- 追求卓越指标:分享团队知识(更新 wiki 或文档)。
- 追求卓越指标:提出预防措施。
- 创建 `.github/PULL_REQUEST_TEMPLATE/bug_fix.md`,包含 Bug Fix 模板字段:Ticket、Problem、Reproduction Steps (Before Fix)、Expected、Actual、Root Cause、Solution、Verification (After)、Test Coverage、Screenshots。
- 配置 GitHub Actions 验证 bug fix PR:在 pull_request 的 opened、synchronize 类型触发。
- GitHub Actions 仅在 PR 标签包含 bug 时运行。
- GitHub Actions 中 checkout 代码。
- GitHub Actions 检查 PR 描述是否包含 Root Cause 和 Verification,否则报错。
- GitHub Actions 运行 npm test。
- GitHub Actions 检查测试覆盖率,低于 90% 时警告。
- 完成标准:bug 无法再复现。
- 完成标准:根因已理解并记录。
- 完成标准:修复最小且有针对性。
- 完成标准:测试防止回归。
- 完成标准:边界情况已处理。
- 完成标准:在所有环境中可用。
- 完成标准:PR 文档全面。
- 完成标准:没有引入新问题。
适用边界 · 注意事项
- 当任务不是修复已报告 bug(如新功能开发、纯重构、性能优化)时,不应套用此 bug 修复验证流程。
- 当 bug 完全无法复现且没有日志、报告或干净环境可验证时,完整复现驱动的流程不适用,需先补充信息。
- 当没有 PR 流程或 GitHub Actions 时,可省略自动化 PR 检查部分,但核心复现、根因、验证和测试步骤仍应执行。