## Mục tiêu
Tiến hành phân tích kỹ lưỡng toàn bộ kho lưu trữ để xác định, ưu tiên, sửa chữa và ghi lại TẤT CẢ các lỗi có thể kiểm chứng, lỗ hổng bảo mật và các vấn đề nghiêm trọng trên mọi ngôn ngữ lập trình, khung hoặc ngăn xếp công nghệ.
## Giai đoạn 1: Đánh giá kho lưu trữ ban đầu
### 1.1 Lập bản đồ kiến trúc
- Map cấu trúc dự án hoàn chỉnh (src/, lib/, test/, docs/, config/, scripts/, v.v.)
- Xác định ngăn xếp công nghệ và các phần phụ thuộc (package.json, require.txt, go.mod, pom.xml, Gemfile, v.v.)
- Ghi lại các điểm vào chính, các đường dẫn quan trọng và ranh giới hệ thống
- Phân tích cấu hình bản dựng và đường ống CI/CD
- Xem lại tài liệu hiện có (README, tài liệu API, sơ đồ kiến trúc)
### 1.2 Phân tích môi trường phát triển
- Xác định các framework kiểm thử (Jest, pytest, PHPUnit, Go test, JUnit, RSpec, v.v.)
- Xem lại cấu hình linting/format (ESLint, Prettier, Black, RuboCop, v.v.)
- Kiểm tra theo dõi sự cố hiện có (Sự cố GitHub, nhận xét TODO/FIXME/HACK/XXX)
- Phân tích lịch sử cam kết cho các khu vực có vấn đề gần đây
- Xem xét các báo cáo phạm vi kiểm tra hiện có nếu có
## Giai đoạn 2: Khám phá lỗi có hệ thống
### 2.1 Danh mục lỗi cần xác định
**Lỗi nghiêm trọng:**
- Các lỗ hổng bảo mật (SQL SQL, XSS, CSRF, bỏ qua xác thực, v.v.)
- Nguy cơ hỏng hoặc mất dữ liệu
- Hệ thống gặp sự cố hoặc bế tắc
- Rò rỉ bộ nhớ hoặc cạn kiệt tài nguyên
**Lỗi chức năng:**
- Lỗi logic (sai điều kiện, tính toán sai, lỗi sai)
- Các vấn đề về quản lý nhà nước (điều kiện chủng tộc, trạng thái không nhất quán, đột biến không phù hợp)
- Hợp đồng API hoặc ánh xạ dữ liệu không chính xác
- Xác nhận thiếu hoặc không chính xác
- Các quy tắc kinh doanh hoặc quy trình làm việc bị vi phạm
**Lỗi tích hợp:**
- Sử dụng API bên ngoài không chính xác
- Lỗi truy vấn cơ sở dữ liệu hoặc không hiệu quả
- Vấn đề xử lý hàng đợi tin nhắn
- Vấn đề vận hành hệ thống tập tin
- Lỗi truyền thông mạng
**Các trường hợp biên & xử lý lỗi:**
- Xử lý null/không xác định/không
- Bộ sưu tập trống hoặc trường hợp cạnh có giá trị bằng 0
- Điều kiện ranh giới và giới hạn vi phạm
- Thiếu lan truyền lỗi hoặc nuốt ngoại lệ
- Thời gian chờ và thử lại các vấn đề logic
**Vấn đề về chất lượng mã:**
- Loại không khớp hoặc phôi không an toàn
- Việc sử dụng API không còn được dùng nữa
- Mã chết hoặc các nhánh không thể truy cập được
- Phụ thuộc vòng tròn
- Tắc nghẽn về hiệu suất (truy vấn N+1, thuật toán kém hiệu quả)
### 2.2 Phương pháp khám phá
- Phân tích mã tĩnh bằng các công cụ dành riêng cho ngôn ngữ
- So khớp mẫu cho các mẫu chống phổ biến
- Quét lỗ hổng phụ thuộc
- Phân tích đường dẫn mã cho mã không thể truy cập hoặc chưa được kiểm tra
- Xác nhận cấu hình
- Tài liệu tham khảo chéo với việc thực hiện
## Giai đoạn 3: Tài liệu lỗi & Ưu tiên
### 3.1 Mẫu báo cáo lỗi
Đối với mỗi lỗi được xác định, hãy ghi lại:
```
BUG-ID: [Sequential identifier]
Severity: [CRITICAL | HIGH | MEDIUM | LOW]
Category: [Security | Functional | Performance | Integration | Code Quality]
File(s): [Complete file path(s) and line numbers]
Component: [Module/Service/Feature affected]
Description:
- Current behavior (what's wrong)
- Expected behavior (what should happen)
- Root cause analysis
Impact Assessment:
- User impact (UX degradation, data loss, security exposure)
- System impact (performance, stability, scalability)
- Business impact (compliance, revenue, reputation)
Reproduction Steps:
1. [Step-by-step instructions]
2. [Include test data/conditions if needed]
3. [Expected vs actual results]
Verification Method:
- [Code snippet or test that demonstrates the bug]
- [Metrics or logs showing the issue]
Dependencies:
- Related bugs: [List of related BUG-IDs]
- Blocking issues: [What needs to be fixed first]
```
### 3.2 Ma trận ưu tiên
Xếp hạng lỗi bằng cách sử dụng:
- **Mức độ nghiêm trọng**: Nguy hiểm > Cao > Trung bình > Thấp
- **Tác động của người dùng**: Số lượng người dùng/tính năng bị ảnh hưởng
- **Khắc phục độ phức tạp**: Đơn giản < Trung bình < Phức tạp
- **Rủi ro hồi quy**: Thấp < Trung bình < Cao
## Giai đoạn 4: Thực hiện khắc phục
### 4.1 Chiến lược sửa lỗi
**Đối với mỗi lỗi:**
1. Tạo nhánh sửa lỗi riêng biệt (nếu sử dụng kiểm soát phiên bản)
2. Viết bài kiểm tra thất bại ĐẦU TIÊN (phương pháp TDD)
3. Thực hiện sửa lỗi tối thiểu, tập trung
4. Xác minh các lần vượt qua bài kiểm tra
5. Chạy thử nghiệm hồi quy
6. Cập nhật tài liệu nếu cần
### 4.2 Hướng dẫn khắc phục
- **Nguyên tắc thay đổi tối thiểu**: Thực hiện thay đổi nhỏ nhất để khắc phục vấn đề một cách chính xác
- **No Scope Creep**: Tránh tái cấu trúc hoặc cải tiến không liên quan
- **Duy trì khả năng tương thích ngược**: Trừ khi bản thân lỗi đó là một API vi phạm
- **Tuân theo Tiêu chuẩn Dự án**: Sử dụng kiểu và mẫu mã hiện có
- **Thêm lập trình phòng thủ**: Ngăn chặn các lỗi tương tự trong tương lai
### 4.3 Danh sách kiểm tra đánh giá mã
- [ ] Khắc phục tận gốc nguyên nhân, không chỉ triệu chứng
- [ ] Tất cả các trường hợp cạnh đều được xử lý
- [ ] Thông báo lỗi rõ ràng và có thể xử lý được
- [ ] Tác động đến hiệu suất có thể chấp nhận được
- [ ] Đã xem xét các tác động bảo mật
- [ ] Không có cảnh báo mới hoặc lỗi linting nào được đưa ra
## Giai đoạn 5: Kiểm tra & Xác nhận
### 5.1 Yêu cầu kiểm tra
**Đối với MỌI lỗi đã được khắc phục, hãy cung cấp:**
1. **Kiểm tra đơn vị**: Kiểm tra riêng biệt để khắc phục lỗi cụ thể
2. **Thử nghiệm tích hợp**: Nếu lỗi liên quan đến nhiều thành phần
3. **Kiểm tra hồi quy**: Đảm bảo bản sửa lỗi không làm hỏng chức năng hiện có
4. **Thử nghiệm trường hợp biên**: Bao gồm các điều kiện biên liên quan
### 5.2 Cấu trúc kiểm tra
```[language-specific]
describe('BUG-[ID]: [Bug description]', () => {
test('should fail with original bug', () => {
// This test would fail before the fix
// Demonstrates the bug
});
test('should pass after fix', () => {
// This test passes after the fix
// Verifies correct behavior
});
test('should handle edge cases', () => {
// Additional edge case coverage
});
});
```
### 5.3 Các bước xác thực
1. Chạy bộ thử nghiệm đầy đủ: `[npm test | pytest | go test ./... | mvn test | etc.]`
2. Kiểm tra các thay đổi về phạm vi mã
3. Chạy các công cụ phân tích tĩnh
4. Xác minh điểm chuẩn hiệu suất (nếu có)
5. Thử nghiệm ở các môi trường khác nhau (nếu có thể)
## Giai đoạn 6: Lập tài liệu & Báo cáo
### 6.1 Tài liệu sửa lỗi
Đối với mỗi lỗi đã sửa:
- Cập nhật nhận xét mã nội tuyến giải thích cách khắc phục
- Thêm/cập nhật tài liệu API nếu hành vi thay đổi
- Tạo/cập nhật hướng dẫn khắc phục sự cố
- Ghi lại mọi cách giải quyết cho các vấn đề chưa được khắc phục
### 6.2 Báo cáo tóm tắt điều hành
```markdown
# Bug Fix Report - [Repository Name]
Date: [YYYY-MM-DD]
Analyzer: [Tool/Person Name]
## Overview
- Total Bugs Found: [X]
- Total Bugs Fixed: [Y]
- Unfixed/Deferred: [Z]
- Test Coverage Change: [Before]% → [After]%
## Critical Findings
[List top 3-5 most critical bugs found and fixed]
## Fix Summary by Category
- Security: [X bugs fixed]
- Functional: [Y bugs fixed]
- Performance: [Z bugs fixed]
- Integration: [W bugs fixed]
- Code Quality: [V bugs fixed]
## Detailed Fix List
[Organized table with columns: BUG-ID | File | Description | Status | Test Added]
## Risk Assessment
- Remaining High-Priority Issues: [List]
- Recommended Next Steps: [Actions]
- Technical Debt Identified: [Summary]
## Testing Results
- Test Command: [exact command used]
- Tests Passed: [X/Y]
- New Tests Added: [Count]
- Coverage Impact: [Details]
```
### 6.3 Danh sách kiểm tra các sản phẩm bàn giao
- [ ] Tất cả lỗi được ghi lại ở định dạng chuẩn
- [ ] Đã triển khai và thử nghiệm các bản sửa lỗi
- [ ] Đã cập nhật và vượt qua bộ thử nghiệm
- [ ] Đã cập nhật tài liệu
- [ ] Đã hoàn tất quá trình xem xét mã
- [ ] Đã đánh giá tác động đến hiệu suất
- [ ] Đã tiến hành đánh giá bảo mật (đối với các bản sửa lỗi liên quan đến bảo mật)
- [ ] Đã chuẩn bị ghi chú triển khai
## Giai đoạn 7: Cải tiến liên tục
### 7.1 Phân tích mẫu
- Xác định các mẫu lỗi thường gặp
- Đề xuất biện pháp phòng ngừa
- Đề xuất cải tiến dụng cụ
- Đề xuất thay đổi kiến trúc để ngăn chặn các vấn đề tương tự
### 7.2 Khuyến nghị giám sát
- Đề xuất các chỉ số cần theo dõi
- Đề xuất các quy tắc cảnh báo
- Đề xuất cải tiến việc ghi nhật ký
- Xác định các khu vực cần phạm vi kiểm tra tốt hơn
## Ràng buộc & Thực tiễn tốt nhất
1. **Không bao giờ thỏa hiệp bảo mật** vì sự đơn giản
2. **Duy trì dấu vết kiểm tra** của tất cả các thay đổi
3. **Tuân theo phiên bản ngữ nghĩa** nếu sửa lỗi, hãy thay đổi API
4. **Tôn trọng giới hạn tỷ lệ** khi thử nghiệm các dịch vụ bên ngoài
5. **Sử dụng cờ tính năng** để khắc phục rủi ro cao (nếu có)
6. **Xem xét chiến lược khôi phục** cho mỗi lần khắc phục
7. **Giả định về tài liệu** được đưa ra trong quá trình phân tích
## Định dạng đầu ra
Cung cấp kết quả ở cả hai:
- Markdown cho khả năng đọc của con người
- JSON/YAML để xử lý tự động
- CSV để nhập hệ thống theo dõi lỗi
## Những cân nhắc đặc biệt
- Đối với monorepos: Phân tích riêng từng gói
- Đối với microservice: Xem xét sự phụ thuộc giữa các dịch vụ
- Đối với mã kế thừa: Cân bằng giữa rủi ro khắc phục và lợi ích
- Đối với các phần phụ thuộc của bên thứ ba: Báo cáo ngược dòng nếu cần