@tinkcarlos/skillora 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/.temp-skill-index.md +245 -0
- package/.claude/skills/SKILL.md +264 -0
- package/.claude/skills/api-scaffolding/SKILL.md +431 -0
- package/.claude/skills/api-scaffolding/agents/backend-architect.md +282 -0
- package/.claude/skills/api-scaffolding/agents/django-pro.md +144 -0
- package/.claude/skills/api-scaffolding/agents/fastapi-pro.md +156 -0
- package/.claude/skills/api-scaffolding/agents/graphql-architect.md +146 -0
- package/.claude/skills/api-scaffolding/skills/fastapi-templates/SKILL.md +171 -0
- package/.claude/skills/api-testing-observability/SKILL.md +583 -0
- package/.claude/skills/api-testing-observability/agents/api-documenter.md +146 -0
- package/.claude/skills/api-testing-observability/commands/api-mock.md +1320 -0
- package/.claude/skills/brainstorming/SKILL.md +283 -0
- package/.claude/skills/bug-fixing/SKILL.md +382 -0
- package/.claude/skills/bug-fixing/references/backend-guide.md +132 -0
- package/.claude/skills/bug-fixing/references/bug-guide.md +354 -0
- package/.claude/skills/bug-fixing/references/bug-record-template.md +134 -0
- package/.claude/skills/bug-fixing/references/bug-records.md +88 -0
- package/.claude/skills/bug-fixing/references/code-review-gate.md +81 -0
- package/.claude/skills/bug-fixing/references/common-bugs.md +140 -0
- package/.claude/skills/bug-fixing/references/complete-workflow.md +361 -0
- package/.claude/skills/bug-fixing/references/config-driven-fixes.md +136 -0
- package/.claude/skills/bug-fixing/references/context-isolation-protocol.md +268 -0
- package/.claude/skills/bug-fixing/references/cross-surface-regression.md +120 -0
- package/.claude/skills/bug-fixing/references/database-investigation.md +129 -0
- package/.claude/skills/bug-fixing/references/dependency-and-integrity-protocol.md +369 -0
- package/.claude/skills/bug-fixing/references/fix-completeness-checklist.md +239 -0
- package/.claude/skills/bug-fixing/references/frontend-guide.md +219 -0
- package/.claude/skills/bug-fixing/references/fullstack-joint-guide.md +123 -0
- package/.claude/skills/bug-fixing/references/functional-breakage.md +117 -0
- package/.claude/skills/bug-fixing/references/ide-lint-errors-guide.md +176 -0
- package/.claude/skills/bug-fixing/references/impact-analysis.md +511 -0
- package/.claude/skills/bug-fixing/references/investigation-checklist.md +263 -0
- package/.claude/skills/bug-fixing/references/knowledge-extraction-guide.md +531 -0
- package/.claude/skills/bug-fixing/references/knowledge-workflow.md +212 -0
- package/.claude/skills/bug-fixing/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/bug-fixing/references/python-env-and-testing.md +126 -0
- package/.claude/skills/bug-fixing/references/rca-guide.md +428 -0
- package/.claude/skills/bug-fixing/references/similar-bug-patterns.md +113 -0
- package/.claude/skills/bug-fixing/references/skill-delegation-guide.md +350 -0
- package/.claude/skills/bug-fixing/references/skill-orchestration.md +155 -0
- package/.claude/skills/bug-fixing/references/testing-strategy.md +350 -0
- package/.claude/skills/bug-fixing/references/tooling-build-scripts.md +162 -0
- package/.claude/skills/bug-fixing/references/user-input-validation.md +77 -0
- package/.claude/skills/bug-fixing/references/ux-patterns.md +158 -0
- package/.claude/skills/bug-fixing/references/windows-terminal-hygiene.md +106 -0
- package/.claude/skills/bug-fixing/references/zero-regression-matrix.md +239 -0
- package/.claude/skills/bug-fixing/references/zero-risk-protocol.md +102 -0
- package/.claude/skills/bug-fixing/scripts/format_code.py +611 -0
- package/.claude/skills/bug-fixing/scripts/generate_report_template.py +74 -0
- package/.claude/skills/bug-fixing/scripts/lint_check.py +816 -0
- package/.claude/skills/bug-fixing/scripts/requirements.txt +36 -0
- package/.claude/skills/cicd-pipeline/SKILL.md +300 -0
- package/.claude/skills/code-review/SKILL.md +535 -0
- package/.claude/skills/code-review/references/anti-pattern-scan.md +102 -0
- package/.claude/skills/code-review/references/automated-analysis.md +456 -0
- package/.claude/skills/code-review/references/backend-common-issues.md +589 -0
- package/.claude/skills/code-review/references/backend-expert-guide.md +415 -0
- package/.claude/skills/code-review/references/backend-review.md +868 -0
- package/.claude/skills/code-review/references/batch-processing-strategy.md +198 -0
- package/.claude/skills/code-review/references/call-chain-analysis-protocol.md +166 -0
- package/.claude/skills/code-review/references/common-patterns.md +321 -0
- package/.claude/skills/code-review/references/configuration-review.md +425 -0
- package/.claude/skills/code-review/references/control-flow-completeness.md +114 -0
- package/.claude/skills/code-review/references/database-review.md +298 -0
- package/.claude/skills/code-review/references/dependency-and-integrity-protocol.md +313 -0
- package/.claude/skills/code-review/references/external-standards.md +51 -0
- package/.claude/skills/code-review/references/feature-review.md +329 -0
- package/.claude/skills/code-review/references/file-review-template.md +326 -0
- package/.claude/skills/code-review/references/frontend-advanced.md +654 -0
- package/.claude/skills/code-review/references/frontend-common-issues.md +482 -0
- package/.claude/skills/code-review/references/frontend-expert-guide.md +342 -0
- package/.claude/skills/code-review/references/frontend-review.md +783 -0
- package/.claude/skills/code-review/references/fullstack-consistency.md +418 -0
- package/.claude/skills/code-review/references/fullstack-review.md +477 -0
- package/.claude/skills/code-review/references/functional-completeness.md +386 -0
- package/.claude/skills/code-review/references/hidden-bugs-detection.md +473 -0
- package/.claude/skills/code-review/references/ide-lint-errors-guide.md +173 -0
- package/.claude/skills/code-review/references/infrastructure-review.md +453 -0
- package/.claude/skills/code-review/references/iteration-review.md +264 -0
- package/.claude/skills/code-review/references/job-review.md +335 -0
- package/.claude/skills/code-review/references/layered-checklist-protocol.md +157 -0
- package/.claude/skills/code-review/references/logic-completeness.md +535 -0
- package/.claude/skills/code-review/references/mandatory-checklist.md +288 -0
- package/.claude/skills/code-review/references/multi-language-guide.md +800 -0
- package/.claude/skills/code-review/references/new-project-review.md +226 -0
- package/.claude/skills/code-review/references/non-code-files-review.md +451 -0
- package/.claude/skills/code-review/references/overlooked-issues.md +657 -0
- package/.claude/skills/code-review/references/platform-specific-review.md +195 -0
- package/.claude/skills/code-review/references/precision-analysis-protocol.md +260 -0
- package/.claude/skills/code-review/references/python-patterns.md +494 -0
- package/.claude/skills/code-review/references/rca-techniques.md +362 -0
- package/.claude/skills/code-review/references/report-template.md +430 -0
- package/.claude/skills/code-review/references/resource-limits-and-degradation.md +137 -0
- package/.claude/skills/code-review/references/review-dimensions.md +311 -0
- package/.claude/skills/code-review/references/review-guide.md +202 -0
- package/.claude/skills/code-review/references/review-knowledge-workflow.md +257 -0
- package/.claude/skills/code-review/references/review-progress-tracker-protocol.md +172 -0
- package/.claude/skills/code-review/references/review-record-template.md +195 -0
- package/.claude/skills/code-review/references/skill-orchestration.md +143 -0
- package/.claude/skills/code-review/references/ui-ux-review.md +470 -0
- package/.claude/skills/containerization/SKILL.md +313 -0
- package/.claude/skills/database-migrations/agents/database-admin.md +142 -0
- package/.claude/skills/database-migrations/agents/database-optimizer.md +144 -0
- package/.claude/skills/database-migrations/commands/migration-observability.md +408 -0
- package/.claude/skills/database-migrations/commands/sql-migrations.md +492 -0
- package/.claude/skills/finishing-a-development-branch/SKILL.md +319 -0
- package/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/.claude/skills/frontend-design/SKILL.md +587 -0
- package/.claude/skills/frontend-design/references/color-consistency.md +487 -0
- package/.claude/skills/frontend-design/references/color-palettes-full.md +657 -0
- package/.claude/skills/frontend-design/references/design-system-generator.md +285 -0
- package/.claude/skills/frontend-design/references/font-pairings-full.md +705 -0
- package/.claude/skills/frontend-design/references/industry-anti-patterns.md +281 -0
- package/.claude/skills/frontend-design/references/layout-anti-patterns.md +582 -0
- package/.claude/skills/frontend-design/references/motion-patterns.md +659 -0
- package/.claude/skills/frontend-design/references/pre-delivery-checklist.md +153 -0
- package/.claude/skills/frontend-design/references/responsive-design.md +555 -0
- package/.claude/skills/frontend-design/references/style-modification-rules.md +335 -0
- package/.claude/skills/frontend-design/references/ui-styles-full.md +383 -0
- package/.claude/skills/frontend-design/references/ui-styles-rating.md +191 -0
- package/.claude/skills/frontend-design/references/ux-guidelines.md +640 -0
- package/.claude/skills/fullstack-developer/SKILL.md +512 -0
- package/.claude/skills/fullstack-developer/references/api-contract-guide.md +312 -0
- package/.claude/skills/fullstack-developer/references/api-response-patterns.md +223 -0
- package/.claude/skills/fullstack-developer/references/async-patterns.md +220 -0
- package/.claude/skills/fullstack-developer/references/bug-prevention.md +914 -0
- package/.claude/skills/fullstack-developer/references/code-quality-checklist.md +271 -0
- package/.claude/skills/fullstack-developer/references/complete-development-workflow.md +278 -0
- package/.claude/skills/fullstack-developer/references/context-isolation-protocol.md +256 -0
- package/.claude/skills/fullstack-developer/references/database-migration.md +331 -0
- package/.claude/skills/fullstack-developer/references/dependency-and-integrity-protocol.md +390 -0
- package/.claude/skills/fullstack-developer/references/development-phases.md +333 -0
- package/.claude/skills/fullstack-developer/references/expert-guide.md +214 -0
- package/.claude/skills/fullstack-developer/references/file-import-patterns.md +114 -0
- package/.claude/skills/fullstack-developer/references/graceful-degradation-patterns.md +78 -0
- package/.claude/skills/fullstack-developer/references/ide-lint-errors-guide.md +183 -0
- package/.claude/skills/fullstack-developer/references/integration-testing.md +301 -0
- package/.claude/skills/fullstack-developer/references/mock-api-patterns.md +307 -0
- package/.claude/skills/fullstack-developer/references/phase-gate-template.md +249 -0
- package/.claude/skills/fullstack-developer/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/fullstack-developer/references/python-engineering.md +79 -0
- package/.claude/skills/fullstack-developer/references/skill-orchestration.md +214 -0
- package/.claude/skills/fullstack-developer/references/skill-router-table.md +304 -0
- package/.claude/skills/fullstack-developer/references/state-sync.md +217 -0
- package/.claude/skills/fullstack-developer/references/ui-testing-checklist.md +292 -0
- package/.claude/skills/fullstack-developer/scripts/format_code.py +611 -0
- package/.claude/skills/fullstack-developer/scripts/lint_check.py +816 -0
- package/.claude/skills/fullstack-developer/scripts/requirements.txt +36 -0
- package/.claude/skills/performance-optimization/SKILL.md +250 -0
- package/.claude/skills/product-requirements/SKILL.md +357 -0
- package/.claude/skills/product-requirements/references/acceptance-criteria.md +335 -0
- package/.claude/skills/product-requirements/references/answer-first-questioning-protocol.md +299 -0
- package/.claude/skills/product-requirements/references/competitive-analysis-guide.md +183 -0
- package/.claude/skills/product-requirements/references/document-accuracy-protocol.md +253 -0
- package/.claude/skills/product-requirements/references/document-management-protocol.md +278 -0
- package/.claude/skills/product-requirements/references/external-standards.md +62 -0
- package/.claude/skills/product-requirements/references/feature-spec-template.md +359 -0
- package/.claude/skills/product-requirements/references/knowledge-acquisition-protocol.md +251 -0
- package/.claude/skills/product-requirements/references/plan-execution-protocol.md +334 -0
- package/.claude/skills/product-requirements/references/plan-generation-protocol.md +264 -0
- package/.claude/skills/product-requirements/references/prioritization-frameworks.md +80 -0
- package/.claude/skills/product-requirements/references/requirement-decomposition-protocol.md +291 -0
- package/.claude/skills/product-requirements/references/user-story-examples.md +297 -0
- package/.claude/skills/product-requirements/references/workflow-templates.md +266 -0
- package/.claude/skills/react-best-practices/SKILL.md +198 -0
- package/.claude/skills/react-best-practices/references/advanced-patterns.md +94 -0
- package/.claude/skills/react-best-practices/references/bundle-optimization.md +182 -0
- package/.claude/skills/react-best-practices/references/client-data-fetching.md +112 -0
- package/.claude/skills/react-best-practices/references/complete-guide.md +2249 -0
- package/.claude/skills/react-best-practices/references/eliminating-waterfalls.md +169 -0
- package/.claude/skills/react-best-practices/references/javascript-performance.md +256 -0
- package/.claude/skills/react-best-practices/references/rendering-performance.md +230 -0
- package/.claude/skills/react-best-practices/references/rerender-optimization.md +214 -0
- package/.claude/skills/react-best-practices/references/server-performance.md +182 -0
- package/.claude/skills/security-audit/SKILL.md +226 -0
- package/.claude/skills/shared-references/advanced-debugging-techniques.md +186 -0
- package/.claude/skills/shared-references/code-quality-checklist.md +218 -0
- package/.claude/skills/shared-references/code-review-efficiency-guide.md +125 -0
- package/.claude/skills/shared-references/mcp-dependency-compatibility-protocol.md +276 -0
- package/.claude/skills/shared-references/skill-call-graph.md +230 -0
- package/.claude/skills/shared-references/skill-orchestration-protocol.md +281 -0
- package/.claude/skills/shared-references/subagent-dispatch-templates.md +199 -0
- package/.claude/skills/skill-expert-skills/LICENSE.txt +204 -0
- package/.claude/skills/skill-expert-skills/QUICK_NAVIGATION.md +374 -0
- package/.claude/skills/skill-expert-skills/SKILL.md +247 -0
- package/.claude/skills/skill-expert-skills/docs/_index.md +91 -0
- package/.claude/skills/skill-expert-skills/references/deep-research-methodology.md +389 -0
- package/.claude/skills/skill-expert-skills/references/docs-generation-workflow.md +398 -0
- package/.claude/skills/skill-expert-skills/references/domain-expertise-protocol.md +343 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/_index.md +54 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/backend-expertise.md +517 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/bug-fixing-expertise.md +363 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/code-review-expertise.md +392 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/frontend-expertise.md +410 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge-template.md +503 -0
- package/.claude/skills/skill-expert-skills/references/examples.md +782 -0
- package/.claude/skills/skill-expert-skills/references/integration-examples.md +655 -0
- package/.claude/skills/skill-expert-skills/references/knowledge-validation-checklist.md +246 -0
- package/.claude/skills/skill-expert-skills/references/latest-knowledge-acquisition.md +461 -0
- package/.claude/skills/skill-expert-skills/references/mcp-tools-guide.md +439 -0
- package/.claude/skills/skill-expert-skills/references/official-best-practices.md +616 -0
- package/.claude/skills/skill-expert-skills/references/patterns.md +218 -0
- package/.claude/skills/skill-expert-skills/references/plugin-skills-guide.md +432 -0
- package/.claude/skills/skill-expert-skills/references/requirement-elicitation-protocol.md +290 -0
- package/.claude/skills/skill-expert-skills/references/skill-creator-SKILL.md +353 -0
- package/.claude/skills/skill-expert-skills/references/skill-templates.md +583 -0
- package/.claude/skills/skill-expert-skills/references/skills-knowledge-base.md +561 -0
- package/.claude/skills/skill-expert-skills/references/tools-guide.md +379 -0
- package/.claude/skills/skill-expert-skills/references/troubleshooting.md +378 -0
- package/.claude/skills/skill-expert-skills/references/universality-guide.md +205 -0
- package/.claude/skills/skill-expert-skills/references/writing-style-guide.md +466 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/universal_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/analyze_trigger.py +425 -0
- package/.claude/skills/skill-expert-skills/scripts/diff_with_official.py +188 -0
- package/.claude/skills/skill-expert-skills/scripts/init_skill.py +349 -0
- package/.claude/skills/skill-expert-skills/scripts/package_skill.py +156 -0
- package/.claude/skills/skill-expert-skills/scripts/quick_validate.py +493 -0
- package/.claude/skills/skill-expert-skills/scripts/requirements.txt +2 -0
- package/.claude/skills/skill-expert-skills/scripts/universal_validate.py +182 -0
- package/.claude/skills/skill-expert-skills/scripts/upgrade_skill.py +431 -0
- package/.claude/skills/subagent-driven-development/SKILL.md +268 -0
- package/.claude/skills/test-driven-development/SKILL.md +246 -0
- package/.claude/skills/test-driven-development/references/testing-anti-patterns.md +192 -0
- package/.claude/skills/using-git-worktrees/SKILL.md +266 -0
- package/.claude/skills/using-skillstack/SKILL.md +127 -0
- package/.claude/skills/vercel-deploy/SKILL.md +166 -0
- package/.claude/skills/vercel-deploy/scripts/deploy.sh +249 -0
- package/.claude/skills/verification-before-completion/SKILL.md +305 -0
- package/.claude/skills/writing-plans/SKILL.md +259 -0
- package/README.md +69 -0
- package/bin/cli.js +468 -0
- package/lib/init.js +333 -0
- package/package.json +29 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# 高级调试技术 (Advanced Debugging Techniques)
|
|
2
|
+
|
|
3
|
+
## 5 Whys 根因分析法
|
|
4
|
+
|
|
5
|
+
**核心原则**: 连续问 5 次"为什么",直到找到根本原因。
|
|
6
|
+
|
|
7
|
+
### 示例
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
问题: 用户登录失败
|
|
11
|
+
|
|
12
|
+
Why 1: 为什么登录失败?
|
|
13
|
+
→ 因为 API 返回 500 错误
|
|
14
|
+
|
|
15
|
+
Why 2: 为什么 API 返回 500?
|
|
16
|
+
→ 因为数据库查询超时
|
|
17
|
+
|
|
18
|
+
Why 3: 为什么数据库查询超时?
|
|
19
|
+
→ 因为 users 表没有索引
|
|
20
|
+
|
|
21
|
+
Why 4: 为什么没有索引?
|
|
22
|
+
→ 因为迁移脚本漏掉了索引创建
|
|
23
|
+
|
|
24
|
+
Why 5: 为什么迁移脚本漏掉了?
|
|
25
|
+
→ 因为没有 code review 检查索引
|
|
26
|
+
|
|
27
|
+
根因: 缺少数据库迁移的 code review 检查项
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 5 Whys 模板
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
## 5 Whys 分析: [问题描述]
|
|
34
|
+
|
|
35
|
+
| # | 问题 | 答案 |
|
|
36
|
+
|---|------|------|
|
|
37
|
+
| 1 | 为什么 [症状]? | 因为 [直接原因] |
|
|
38
|
+
| 2 | 为什么 [直接原因]? | 因为 [中间原因1] |
|
|
39
|
+
| 3 | 为什么 [中间原因1]? | 因为 [中间原因2] |
|
|
40
|
+
| 4 | 为什么 [中间原因2]? | 因为 [深层原因] |
|
|
41
|
+
| 5 | 为什么 [深层原因]? | 因为 [根本原因] |
|
|
42
|
+
|
|
43
|
+
**根因**: [根本原因]
|
|
44
|
+
**修复**: [修复方案]
|
|
45
|
+
**预防**: [预防措施]
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 鱼骨图 (Ishikawa Diagram)
|
|
51
|
+
|
|
52
|
+
**用途**: 系统性分析问题的多个可能原因。
|
|
53
|
+
|
|
54
|
+
### 6M 分类
|
|
55
|
+
|
|
56
|
+
| 类别 | 英文 | 检查点 |
|
|
57
|
+
|------|------|--------|
|
|
58
|
+
| 人员 | Man | 操作错误、培训不足 |
|
|
59
|
+
| 机器 | Machine | 硬件故障、配置错误 |
|
|
60
|
+
| 材料 | Material | 数据质量、输入错误 |
|
|
61
|
+
| 方法 | Method | 流程缺陷、算法错误 |
|
|
62
|
+
| 测量 | Measurement | 监控不足、指标错误 |
|
|
63
|
+
| 环境 | Mother Nature | 网络、第三方服务 |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 二分法调试 (Binary Search Debugging)
|
|
68
|
+
|
|
69
|
+
**用途**: 快速定位问题代码范围。
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
1. 确定问题存在的代码范围 (A-Z)
|
|
73
|
+
2. 在中点 (M) 添加日志/断点
|
|
74
|
+
3. 如果问题在 M 之前 → 范围缩小到 A-M
|
|
75
|
+
4. 如果问题在 M 之后 → 范围缩小到 M-Z
|
|
76
|
+
5. 重复直到定位到具体行
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Git Bisect
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
git bisect start
|
|
83
|
+
git bisect bad HEAD
|
|
84
|
+
git bisect good <last-known-good-commit>
|
|
85
|
+
# Git 自动检出中间提交,测试后标记 good/bad
|
|
86
|
+
git bisect reset # 完成后重置
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 橡皮鸭调试法 (Rubber Duck Debugging)
|
|
92
|
+
|
|
93
|
+
**原理**: 向他人(或橡皮鸭)解释代码时,往往能发现问题。
|
|
94
|
+
|
|
95
|
+
**步骤**:
|
|
96
|
+
1. 逐行解释代码的预期行为
|
|
97
|
+
2. 解释每个变量的值
|
|
98
|
+
3. 解释每个条件分支
|
|
99
|
+
4. 发现解释与实际不符的地方
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 时间线分析 (Timeline Analysis)
|
|
104
|
+
|
|
105
|
+
**用途**: 分析间歇性问题或竞态条件。
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
## 时间线: [问题描述]
|
|
109
|
+
|
|
110
|
+
| 时间 | 事件 | 状态 | 备注 |
|
|
111
|
+
|------|------|------|------|
|
|
112
|
+
| T+0ms | 请求开始 | 正常 | |
|
|
113
|
+
| T+50ms | 数据库查询 | 正常 | |
|
|
114
|
+
| T+100ms | 缓存写入 | 🔴 失败 | 连接超时 |
|
|
115
|
+
| T+150ms | 响应返回 | 异常 | 缓存未更新 |
|
|
116
|
+
|
|
117
|
+
**发现**: T+100ms 缓存写入失败导致后续请求读取旧数据
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 差异分析 (Diff Analysis)
|
|
123
|
+
|
|
124
|
+
**用途**: 对比正常和异常情况的差异。
|
|
125
|
+
|
|
126
|
+
| 对比项 | 正常情况 | 异常情况 | 差异 |
|
|
127
|
+
|--------|----------|----------|------|
|
|
128
|
+
| 环境 | 生产 | 测试 | 配置不同 |
|
|
129
|
+
| 数据 | 小数据集 | 大数据集 | 数据量 |
|
|
130
|
+
| 时间 | 白天 | 凌晨 | 定时任务 |
|
|
131
|
+
| 用户 | 普通用户 | 管理员 | 权限 |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 日志分析技巧
|
|
136
|
+
|
|
137
|
+
### 关键日志模式
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# 搜索错误
|
|
141
|
+
grep -i "error\|exception\|fail" app.log
|
|
142
|
+
|
|
143
|
+
# 搜索特定请求
|
|
144
|
+
grep "request_id=abc123" app.log
|
|
145
|
+
|
|
146
|
+
# 统计错误频率
|
|
147
|
+
grep -c "ERROR" app.log
|
|
148
|
+
|
|
149
|
+
# 查看错误上下文
|
|
150
|
+
grep -B5 -A5 "ERROR" app.log
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 结构化日志查询
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# JSON 日志
|
|
157
|
+
cat app.log | jq 'select(.level == "error")'
|
|
158
|
+
|
|
159
|
+
# 按时间范围
|
|
160
|
+
cat app.log | jq 'select(.timestamp > "2024-01-01")'
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 调试检查清单
|
|
166
|
+
|
|
167
|
+
### 开始调试前
|
|
168
|
+
|
|
169
|
+
- [ ] 能稳定复现问题吗?
|
|
170
|
+
- [ ] 问题是什么时候开始的?
|
|
171
|
+
- [ ] 最近有什么变更?
|
|
172
|
+
- [ ] 只影响特定用户/环境吗?
|
|
173
|
+
|
|
174
|
+
### 调试过程中
|
|
175
|
+
|
|
176
|
+
- [ ] 使用了 5 Whys 吗?
|
|
177
|
+
- [ ] 检查了日志吗?
|
|
178
|
+
- [ ] 尝试了二分法吗?
|
|
179
|
+
- [ ] 对比了正常/异常情况吗?
|
|
180
|
+
|
|
181
|
+
### 修复后
|
|
182
|
+
|
|
183
|
+
- [ ] 根因已确认?
|
|
184
|
+
- [ ] 修复已验证?
|
|
185
|
+
- [ ] 类似问题已排查?
|
|
186
|
+
- [ ] 知识已记录?
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# 代码质量检查清单 (Code Quality Checklist)
|
|
2
|
+
|
|
3
|
+
## 核心原则
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
安全第一 → 性能优化 → 错误处理 → 代码质量 → 边界条件
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🔴 安全性检查 (Security - P0)
|
|
12
|
+
|
|
13
|
+
| 检查项 | 风险 | 防护措施 | 检测方法 |
|
|
14
|
+
|--------|------|----------|----------|
|
|
15
|
+
| SQL 注入 | 数据泄露/篡改 | 参数化查询、ORM | 搜索字符串拼接 SQL |
|
|
16
|
+
| XSS 攻击 | 用户数据窃取 | 输入转义、CSP、sanitize | 搜索 innerHTML/dangerouslySetInnerHTML |
|
|
17
|
+
| CSRF | 伪造请求 | Token 验证、SameSite Cookie | 检查表单/API 是否有 CSRF 保护 |
|
|
18
|
+
| 敏感信息泄露 | 密钥泄露 | 环境变量、.gitignore | 搜索硬编码密钥/密码 |
|
|
19
|
+
| 权限验证 | 越权访问 | 每个端点检查 authz | 检查 API 是否有权限校验 |
|
|
20
|
+
| 路径遍历 | 文件系统访问 | 路径规范化、白名单 | 搜索用户输入拼接路径 |
|
|
21
|
+
| 命令注入 | 系统命令执行 | 参数化、白名单 | 搜索 exec/spawn/system |
|
|
22
|
+
|
|
23
|
+
### 安全检查命令
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Node.js
|
|
27
|
+
npm audit
|
|
28
|
+
npx snyk test
|
|
29
|
+
|
|
30
|
+
# Python
|
|
31
|
+
pip-audit
|
|
32
|
+
bandit -r .
|
|
33
|
+
|
|
34
|
+
# 搜索硬编码密钥
|
|
35
|
+
grep -rn "password\|secret\|api_key\|token" --include="*.py" --include="*.js" --include="*.ts"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 🔴 性能检查 (Performance - P1)
|
|
41
|
+
|
|
42
|
+
| 问题 | 检测方法 | 解决方案 |
|
|
43
|
+
|------|----------|----------|
|
|
44
|
+
| N+1 查询 | 日志分析、ORM 警告 | 预加载 (eager loading)、JOIN |
|
|
45
|
+
| 内存泄漏 | 监控工具、heap dump | 及时释放资源、WeakMap |
|
|
46
|
+
| 大文件处理 | 压力测试 | 流式处理、分片上传 |
|
|
47
|
+
| 竞态条件 | 并发测试 | 锁、原子操作、事务 |
|
|
48
|
+
| 重复计算 | 性能分析 | 缓存、memoization |
|
|
49
|
+
| 阻塞主线程 | UI 卡顿 | Web Worker、异步处理 |
|
|
50
|
+
|
|
51
|
+
### 性能检测问题清单
|
|
52
|
+
|
|
53
|
+
| # | 问题 | 必须回答 |
|
|
54
|
+
|---|------|----------|
|
|
55
|
+
| 1 | 1000 事件/秒会卡 UI 吗? | 需要节流/防抖 |
|
|
56
|
+
| 2 | 循环内有数据库查询吗? | 需要批量查询 |
|
|
57
|
+
| 3 | 大数组操作会阻塞吗? | 需要分片处理 |
|
|
58
|
+
| 4 | 有未取消的定时器/订阅吗? | 需要清理 |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 🔴 错误处理检查 (Error Handling - P1)
|
|
63
|
+
|
|
64
|
+
| 检查项 | 要求 | 反模式 |
|
|
65
|
+
|--------|------|--------|
|
|
66
|
+
| 异常捕获 | 不吞掉异常,记录上下文 | `catch(e) {}` 空捕获 |
|
|
67
|
+
| 错误日志 | 包含堆栈、请求ID、用户上下文 | 只记录 `error.message` |
|
|
68
|
+
| 用户提示 | 友好信息,不暴露内部细节 | 直接显示堆栈 |
|
|
69
|
+
| 降级策略 | 外部服务失败时有备选方案 | 直接抛出/崩溃 |
|
|
70
|
+
| 重试机制 | 网络请求有重试+指数退避 | 无限重试/立即重试 |
|
|
71
|
+
| 超时设置 | 所有外部调用有超时 | 无超时等待 |
|
|
72
|
+
|
|
73
|
+
### 错误处理模式
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
// ❌ 反模式
|
|
77
|
+
try {
|
|
78
|
+
await api.call();
|
|
79
|
+
} catch (e) {
|
|
80
|
+
// 吞掉异常
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ✅ 正确模式
|
|
84
|
+
try {
|
|
85
|
+
await api.call();
|
|
86
|
+
} catch (e) {
|
|
87
|
+
logger.error('API call failed', { error: e, context: { userId, requestId } });
|
|
88
|
+
throw new UserFacingError('服务暂时不可用,请稍后重试');
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 🔴 代码质量检查 (Code Quality - P2)
|
|
95
|
+
|
|
96
|
+
| 检查项 | 标准 | 工具 |
|
|
97
|
+
|--------|------|------|
|
|
98
|
+
| 函数长度 | < 50 行 | ESLint/Pylint |
|
|
99
|
+
| 圈复杂度 | < 10 | ESLint/radon |
|
|
100
|
+
| 重复代码 | DRY 原则 | jscpd/pylint |
|
|
101
|
+
| 命名规范 | 语义清晰、一致性 | 代码审查 |
|
|
102
|
+
| 注释质量 | 解释 why,不是 what | 代码审查 |
|
|
103
|
+
| 类型安全 | 避免 any/unknown | TypeScript strict |
|
|
104
|
+
|
|
105
|
+
### 代码质量命令
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# TypeScript
|
|
109
|
+
npx tsc --noEmit --strict
|
|
110
|
+
|
|
111
|
+
# ESLint
|
|
112
|
+
npx eslint . --max-warnings 0
|
|
113
|
+
|
|
114
|
+
# Python
|
|
115
|
+
pylint --max-line-length=120 .
|
|
116
|
+
flake8 --max-complexity 10 .
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 🔴 边界条件检查 (Edge Cases - P1)
|
|
122
|
+
|
|
123
|
+
| 场景 | 必须处理 | 检测方法 |
|
|
124
|
+
|------|----------|----------|
|
|
125
|
+
| 空值/null | 空检查、默认值 | 搜索 `.length`/`.map` 无空检查 |
|
|
126
|
+
| 空数组/集合 | 循环前检查 | 搜索 `for`/`forEach` 无空检查 |
|
|
127
|
+
| 边界值 | 0、-1、MAX_INT | 单元测试 |
|
|
128
|
+
| 超时 | 设置合理超时 | 搜索无超时的网络请求 |
|
|
129
|
+
| 并发 | 锁/原子操作 | 搜索共享状态修改 |
|
|
130
|
+
| 编码 | UTF-8 处理 | 测试特殊字符 |
|
|
131
|
+
|
|
132
|
+
### 边界条件检测问题
|
|
133
|
+
|
|
134
|
+
| # | 问题 | 必须回答 |
|
|
135
|
+
|---|------|----------|
|
|
136
|
+
| 1 | 输入为 null/undefined 会怎样? | 需要空检查 |
|
|
137
|
+
| 2 | 数组为空会怎样? | 需要空数组处理 |
|
|
138
|
+
| 3 | 字符串为空/超长会怎样? | 需要长度校验 |
|
|
139
|
+
| 4 | 数字为 0/负数/超大会怎样? | 需要范围校验 |
|
|
140
|
+
| 5 | 并发调用会怎样? | 需要并发控制 |
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 🔴 资源管理检查 (Resource Management - P1)
|
|
145
|
+
|
|
146
|
+
| 检查项 | 要求 | 检测方法 |
|
|
147
|
+
|--------|------|----------|
|
|
148
|
+
| 文件句柄 | 使用后关闭 | 搜索 open/fopen 无 close |
|
|
149
|
+
| 数据库连接 | 连接池、及时释放 | 搜索连接创建无释放 |
|
|
150
|
+
| 事件监听 | 组件卸载时移除 | 搜索 addEventListener 无 remove |
|
|
151
|
+
| 定时器 | 清除 interval/timeout | 搜索 setInterval 无 clear |
|
|
152
|
+
| 订阅 | 取消订阅 | 搜索 subscribe 无 unsubscribe |
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 快速检查清单 (Quick Checklist)
|
|
157
|
+
|
|
158
|
+
### 每次提交前必查
|
|
159
|
+
|
|
160
|
+
- [ ] 🔴 无硬编码密钥/密码
|
|
161
|
+
- [ ] 🔴 用户输入已验证/转义
|
|
162
|
+
- [ ] 🔴 数据库查询已参数化
|
|
163
|
+
- [ ] 🔴 异常已捕获并记录
|
|
164
|
+
- [ ] 🔴 资源已正确释放
|
|
165
|
+
- [ ] 空值/边界条件已处理
|
|
166
|
+
- [ ] 无 console.log/print 调试代码
|
|
167
|
+
- [ ] 类型检查通过
|
|
168
|
+
- [ ] Lint 检查通过
|
|
169
|
+
|
|
170
|
+
### 代码审查必查
|
|
171
|
+
|
|
172
|
+
- [ ] 🔴 安全漏洞 (SQL注入/XSS/CSRF)
|
|
173
|
+
- [ ] 🔴 权限验证
|
|
174
|
+
- [ ] 🔴 错误处理完整性
|
|
175
|
+
- [ ] 性能问题 (N+1/内存泄漏)
|
|
176
|
+
- [ ] 边界条件处理
|
|
177
|
+
- [ ] 代码可读性
|
|
178
|
+
- [ ] 测试覆盖
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 输出契约
|
|
183
|
+
|
|
184
|
+
### 代码质量报告模板
|
|
185
|
+
|
|
186
|
+
```markdown
|
|
187
|
+
## 代码质量检查报告
|
|
188
|
+
|
|
189
|
+
### 安全性 (P0)
|
|
190
|
+
| 检查项 | 状态 | 备注 |
|
|
191
|
+
|--------|------|------|
|
|
192
|
+
| SQL 注入 | ✅/❌ | |
|
|
193
|
+
| XSS | ✅/❌ | |
|
|
194
|
+
| 敏感信息 | ✅/❌ | |
|
|
195
|
+
|
|
196
|
+
### 性能 (P1)
|
|
197
|
+
| 检查项 | 状态 | 备注 |
|
|
198
|
+
|--------|------|------|
|
|
199
|
+
| N+1 查询 | ✅/❌ | |
|
|
200
|
+
| 内存泄漏 | ✅/❌ | |
|
|
201
|
+
|
|
202
|
+
### 错误处理 (P1)
|
|
203
|
+
| 检查项 | 状态 | 备注 |
|
|
204
|
+
|--------|------|------|
|
|
205
|
+
| 异常捕获 | ✅/❌ | |
|
|
206
|
+
| 降级策略 | ✅/❌ | |
|
|
207
|
+
|
|
208
|
+
### 边界条件 (P1)
|
|
209
|
+
| 检查项 | 状态 | 备注 |
|
|
210
|
+
|--------|------|------|
|
|
211
|
+
| 空值处理 | ✅/❌ | |
|
|
212
|
+
| 超时设置 | ✅/❌ | |
|
|
213
|
+
|
|
214
|
+
### 总结
|
|
215
|
+
- P0 问题: X 个
|
|
216
|
+
- P1 问题: X 个
|
|
217
|
+
- P2 问题: X 个
|
|
218
|
+
```
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# 代码审查效率指南 (Code Review Efficiency Guide)
|
|
2
|
+
|
|
3
|
+
## 核心原则
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
小批量 + 高频率 > 大批量 + 低频率
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🔴 审查规模限制
|
|
12
|
+
|
|
13
|
+
| 指标 | 推荐值 | 原因 |
|
|
14
|
+
|------|--------|------|
|
|
15
|
+
| 单次审查行数 | < 400 行 | 超过 400 行缺陷检出率下降 50% |
|
|
16
|
+
| 单次审查时间 | < 60 分钟 | 注意力下降导致遗漏 |
|
|
17
|
+
| 单次审查文件数 | < 10 个 | 上下文切换成本 |
|
|
18
|
+
|
|
19
|
+
### 大型变更处理
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
大型变更 (> 400 行)
|
|
23
|
+
↓
|
|
24
|
+
拆分为多个小 PR
|
|
25
|
+
↓
|
|
26
|
+
按依赖顺序审查
|
|
27
|
+
↓
|
|
28
|
+
每个 PR 独立合并
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 🔴 审查优先级
|
|
34
|
+
|
|
35
|
+
| 优先级 | 关注点 | 时间分配 |
|
|
36
|
+
|--------|--------|----------|
|
|
37
|
+
| P0 | 安全漏洞、数据丢失风险 | 30% |
|
|
38
|
+
| P1 | 逻辑错误、边界条件 | 30% |
|
|
39
|
+
| P2 | 性能问题、资源泄漏 | 20% |
|
|
40
|
+
| P3 | 代码风格、命名规范 | 10% |
|
|
41
|
+
| P4 | 文档、注释 | 10% |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 🔴 审查清单 (快速版)
|
|
46
|
+
|
|
47
|
+
### 5 分钟快速审查
|
|
48
|
+
|
|
49
|
+
- [ ] 变更目的清晰?
|
|
50
|
+
- [ ] 无明显安全问题?
|
|
51
|
+
- [ ] 无硬编码密钥?
|
|
52
|
+
- [ ] 测试覆盖?
|
|
53
|
+
|
|
54
|
+
### 15 分钟标准审查
|
|
55
|
+
|
|
56
|
+
- [ ] 逻辑正确?
|
|
57
|
+
- [ ] 边界条件处理?
|
|
58
|
+
- [ ] 错误处理完整?
|
|
59
|
+
- [ ] 无性能问题?
|
|
60
|
+
- [ ] 代码可读?
|
|
61
|
+
|
|
62
|
+
### 30 分钟深度审查
|
|
63
|
+
|
|
64
|
+
- [ ] 架构合理?
|
|
65
|
+
- [ ] 可扩展性?
|
|
66
|
+
- [ ] 可维护性?
|
|
67
|
+
- [ ] 测试充分?
|
|
68
|
+
- [ ] 文档完整?
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 审查反馈技巧
|
|
73
|
+
|
|
74
|
+
### 反馈分类
|
|
75
|
+
|
|
76
|
+
| 类型 | 前缀 | 示例 |
|
|
77
|
+
|------|------|------|
|
|
78
|
+
| 必须修复 | `[MUST]` | `[MUST] 这里有 SQL 注入风险` |
|
|
79
|
+
| 建议修改 | `[SHOULD]` | `[SHOULD] 建议添加空值检查` |
|
|
80
|
+
| 可选优化 | `[COULD]` | `[COULD] 可以用 map 替代 for 循环` |
|
|
81
|
+
| 疑问 | `[Q]` | `[Q] 这个逻辑的目的是什么?` |
|
|
82
|
+
| 赞扬 | `[NICE]` | `[NICE] 这个抽象很优雅` |
|
|
83
|
+
|
|
84
|
+
### 反馈原则
|
|
85
|
+
|
|
86
|
+
| 原则 | 说明 |
|
|
87
|
+
|------|------|
|
|
88
|
+
| 对事不对人 | "这段代码" 而非 "你的代码" |
|
|
89
|
+
| 提供建议 | 不只指出问题,还要给解决方案 |
|
|
90
|
+
| 解释原因 | 说明为什么这样更好 |
|
|
91
|
+
| 承认不确定 | "我不确定,但..." |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 自动化辅助
|
|
96
|
+
|
|
97
|
+
### 可自动化的检查
|
|
98
|
+
|
|
99
|
+
| 检查项 | 工具 |
|
|
100
|
+
|--------|------|
|
|
101
|
+
| 代码格式 | Prettier, Black |
|
|
102
|
+
| 静态分析 | ESLint, Pylint |
|
|
103
|
+
| 类型检查 | TypeScript, mypy |
|
|
104
|
+
| 安全扫描 | npm audit, bandit |
|
|
105
|
+
| 测试覆盖 | Jest, pytest-cov |
|
|
106
|
+
|
|
107
|
+
### 人工审查重点
|
|
108
|
+
|
|
109
|
+
| 检查项 | 原因 |
|
|
110
|
+
|--------|------|
|
|
111
|
+
| 业务逻辑 | 需要领域知识 |
|
|
112
|
+
| 架构决策 | 需要全局视角 |
|
|
113
|
+
| 边界条件 | 需要创造性思维 |
|
|
114
|
+
| 可读性 | 主观判断 |
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 审查效率指标
|
|
119
|
+
|
|
120
|
+
| 指标 | 计算方式 | 目标 |
|
|
121
|
+
|------|----------|------|
|
|
122
|
+
| 审查速度 | 行数/小时 | 200-400 行/小时 |
|
|
123
|
+
| 缺陷密度 | 缺陷数/千行 | 记录趋势 |
|
|
124
|
+
| 审查覆盖率 | 已审查/总变更 | 100% |
|
|
125
|
+
| 反馈响应时间 | 提交到首次反馈 | < 24 小时 |
|