← detail.back
通用 detail.difficulty_labelbeginner

代码仓库全面审计与修复

Comprehensive Repository Audit & Remediation Prompt

对整个代码仓库进行深度分析,识别并修复跨编程语言的所有可验证Bug、安全漏洞及关键问题,并完整记录修复过程。

detail.target_platforms ChatGPTClaudeGemini
## 目标
对整个代码库进行彻底分析,识别、优先处理、修复并记录所有可验证的错误、安全漏洞和关键问题,无论它们涉及何种编程语言、框架或技术栈。

## 阶段 1:初始代码库评估

### 1.1 架构映射
- 映射完整的项目结构(src/、lib/、tests/、docs/、config/、scripts/ 等)
- 识别技术栈和依赖项(package.json、requirements.txt、go.mod、pom.xml、Gemfile 等)
- 记录主要入口点、关键路径和系统边界
- 分析构建配置和 CI/CD 流水线
- 审查现有文档(README、API 文档、架构图)

### 1.2 开发环境分析
- 识别测试框架(Jest、pytest、PHPUnit、Go test、JUnit、RSpec 等)
- 审查 linting/格式化配置(ESLint、Prettier、Black、RuboCop 等)
- 检查现有问题跟踪(GitHub Issues、TODO/FIXME/HACK/XXX 注释)
- 分析提交历史以查找近期问题区域
- 审查现有测试覆盖率报告(如果可用)

## 阶段 2:系统性错误发现

### 2.1 要识别的错误类别
**关键错误:**
- 安全漏洞(SQL 注入、XSS、CSRF、认证绕过等)
- 数据损坏或丢失风险
- 系统崩溃或死锁
- 内存泄漏或资源耗尽

**功能错误:**
- 逻辑错误(不正确的条件、错误的计算、差一错误)
- 状态管理问题(竞态条件、状态不一致、不当的修改)
- 不正确的 API 契约或数据映射
- 缺失或不正确的验证
- 损坏的业务规则或工作流

**集成错误:**
- 不正确的外部 API 使用
- 数据库查询错误或效率低下
- 消息队列处理问题
- 文件系统操作问题
- 网络通信错误

**边缘情况与错误处理:**
- 空/未定义/nil 处理
- 空集合或零值边缘情况
- 边界条件和限制违规
- 缺失错误传播或吞噬异常
- 超时和重试逻辑问题

**代码质量问题:**
- 类型不匹配或不安全的类型转换
- 废弃的 API 使用
- 死代码或不可达分支
- 循环依赖
- 性能瓶颈(N+1 查询、低效算法)

### 2.2 发现方法
- 使用特定语言工具进行静态代码分析
- 常见反模式的模式匹配
- 依赖项漏洞扫描
- 对不可达或未测试代码进行代码路径分析
- 配置验证
- 交叉引用文档与实现

## 阶段 3:错误文档与优先级排序

### 3.1 错误报告模板
对于每个已识别的错误,请记录:
```
BUG-ID: [顺序标识符]
严重性: [CRITICAL | HIGH | MEDIUM | LOW]
类别: [Security | Functional | Performance | Integration | Code Quality]
文件: [完整文件路径和行号]
组件: [受影响的模块/服务/功能]

描述:
- 当前行为(哪里出错了)
- 预期行为(应该发生什么)
- 根本原因分析

影响评估:
- 用户影响(用户体验下降、数据丢失、安全暴露)
- 系统影响(性能、稳定性、可伸缩性)
- 业务影响(合规性、收入、声誉)

重现步骤:
1. [分步说明]
2. [如果需要,包含测试数据/条件]
3. [预期结果与实际结果]

验证方法:
- [演示错误的的代码片段或测试]
- [显示问题的指标或日志]

依赖项:
- 相关错误: [相关 BUG-ID 列表]
- 阻塞问题: [需要首先修复的问题]
```

### 3.2 优先级矩阵
使用以下标准对错误进行排名:
- **严重性**:关键 > 高 > 中 > 低
- **用户影响**:受影响用户/功能的数量
- **修复复杂性**:简单 < 中等 < 复杂
- **回归风险**:低 < 中等 < 高

## 阶段 4:修复实施

### 4.1 修复策略
**对于每个错误:**
1. 创建独立的修复分支(如果使用版本控制)
2. 首先编写失败的测试(TDD 方法)
3. 实施最小、集中的修复
4. 验证测试通过
5. 运行回归测试
6. 必要时更新文档

### 4.2 修复指南
- **最小变更原则**:进行最小的变更以正确修复问题
- **避免范围蔓延**:避免不相关的重构或改进
- **保持向后兼容性**:除非错误本身是一个破坏性的 API 变更
- **遵循项目标准**:使用现有的代码风格和模式
- **添加防御性编程**:防止将来出现类似错误

### 4.3 代码审查清单
- [ ] 修复解决了根本原因,而不仅仅是症状
- [ ] 所有边缘情况都已处理
- [ ] 错误消息清晰且可操作
- [ ] 性能影响可接受
- [ ] 考虑了安全隐患
- [ ] 未引入新的警告或 linting 错误

## 阶段 5:测试与验证

### 5.1 测试要求
**对于每个已修复的错误,提供:**
1. **单元测试**:针对特定修复的独立测试
2. **集成测试**:如果错误涉及多个组件
3. **回归测试**:确保修复不会破坏现有功能
4. **边缘情况测试**:覆盖相关的边界条件

### 5.2 测试结构
```[语言特定]
describe('BUG-[ID]: [错误描述]', () => {
  test('应在原始错误下失败', () => {
    // 此测试在修复前会失败
    // 演示错误
  });
  
  test('修复后应通过', () => {
    // 此测试在修复后通过
    // 验证正确行为
  });
  
  test('应处理边缘情况', () => {
    // 额外的边缘情况覆盖
  });
});
```

### 5.3 验证步骤
1. 运行完整的测试套件:`[npm test | pytest | go test ./... | mvn test | 等]`
2. 检查代码覆盖率变化
3. 运行静态分析工具
4. 验证性能基准(如果适用)
5. 在不同环境中测试(如果可能)

## 阶段 6:文档与报告

### 6.1 修复文档
对于每个已修复的错误:
- 更新内联代码注释,解释修复
- 如果行为发生变化,添加/更新 API 文档
- 创建/更新故障排除指南
- 记录未修复问题的任何变通方法

### 6.2 执行摘要报告
```markdown
# 错误修复报告 - [代码库名称]
日期: [YYYY-MM-DD]
分析器: [工具/人员姓名]

## 概述
- 发现的错误总数: [X]
- 修复的错误总数: [Y]
- 未修复/推迟的错误: [Z]
- 测试覆盖率变化: [之前]% → [之后]%

## 关键发现
[列出发现并修复的前 3-5 个最关键的错误]

## 按类别划分的修复摘要
- 安全: [X 个错误已修复]
- 功能: [Y 个错误已修复]
- 性能: [Z 个错误已修复]
- 集成: [W 个错误已修复]
- 代码质量: [V 个错误已修复]

## 详细修复列表
[包含列的表格:BUG-ID | 文件 | 描述 | 状态 | 添加的测试]

## 风险评估
- 剩余的高优先级问题: [列表]
- 建议的下一步行动: [行动]
- 识别的技术债务: [摘要]

## 测试结果
- 测试命令: [使用的确切命令]
- 通过的测试: [X/Y]
- 添加的新测试: [计数]
- 覆盖率影响: [详细信息]
```

### 6.3 交付物清单
- [ ] 所有错误均以标准格式记录
- [ ] 修复已实施并测试
- [ ] 测试套件已更新并通过
- [ ] 文档已更新
- [ ] 代码审查已完成
- [ ] 性能影响已评估
- [ ] 安全审查已进行(针对安全相关修复)
- [ ] 部署说明已准备

## 阶段 7:持续改进

### 7.1 模式分析
- 识别常见的错误模式
- 建议预防措施
- 推荐工具改进
- 提出架构变更以防止类似问题

### 7.2 监控建议
- 建议要跟踪的指标
- 推荐警报规则
- 提出日志记录改进
- 识别需要更好测试覆盖率的区域

## 限制与最佳实践

1. **绝不为了简化而牺牲安全性**
2. **维护所有变更的审计跟踪**
3. 如果修复更改了 API,**遵循语义化版本控制**
4. 测试外部服务时**遵守速率限制**
5. **使用功能标志**进行高