@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,473 @@
|
|
|
1
|
+
# Hidden Bug Deep Detection Guide
|
|
2
|
+
|
|
3
|
+
> Specifically designed to discover hidden bugs that are difficult to find through conventional code review.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Hidden Bug Categories](#hidden-bug-categories)
|
|
8
|
+
- [Data Race Detection](#1-data-race-detection)
|
|
9
|
+
- [Memory & Resource Leaks](#2-memory--resource-leaks)
|
|
10
|
+
- [State Inconsistency Issues](#3-state-inconsistency-issues)
|
|
11
|
+
- [Timing & Concurrency Traps](#4-timing--concurrency-traps)
|
|
12
|
+
- [Frontend-Backend Coupling Hidden Issues](#5-frontend-backend-coupling-hidden-issues)
|
|
13
|
+
- [Automated Detection Commands](#automated-detection-commands)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Hidden Bug Categories
|
|
18
|
+
|
|
19
|
+
| Category | Characteristics | Discovery Difficulty | Severity |
|
|
20
|
+
|----------|----------------|---------------------|----------|
|
|
21
|
+
| **Data Races** | Only occurs under concurrency | 🔴 Very Hard | 🔴 Critical |
|
|
22
|
+
| **Memory Leaks** | Only exposed after long runtime | 🔴 Very Hard | 🟠 High |
|
|
23
|
+
| **State Inconsistency** | Triggered by specific operation sequence | 🟠 Hard | 🔴 Critical |
|
|
24
|
+
| **Timing Issues** | Depends on execution order | 🟠 Hard | 🟠 High |
|
|
25
|
+
| **Boundary Overflow** | Triggered by extreme input | 🟡 Medium | 🟠 High |
|
|
26
|
+
| **Resource Leaks** | Uncleared on exception paths | 🟡 Medium | 🟠 High |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 1. Data Race Detection
|
|
31
|
+
|
|
32
|
+
### 1.1 Shared State Modification (Most Dangerous Hidden Bug)
|
|
33
|
+
|
|
34
|
+
**Required patterns to check**:
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
# 🔴 Hidden Bug: Modifying shared object in Service singleton
|
|
38
|
+
class ChatService:
|
|
39
|
+
def __init__(self):
|
|
40
|
+
self.agent = load_agent() # Shared singleton
|
|
41
|
+
|
|
42
|
+
async def chat(self, user_input, llm_id=None):
|
|
43
|
+
if llm_id:
|
|
44
|
+
self.agent.llm_provider_id = llm_id # 💀 Critical! Affects other users
|
|
45
|
+
await self.executor.run(self.agent, user_input)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Detection method**:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Python: Search for all self.xxx = in async functions
|
|
52
|
+
grep -rn "self\.[a-z_]* = " --include="*.py" | grep -E "(async def|await)"
|
|
53
|
+
|
|
54
|
+
# Search for property modifications in singleton patterns
|
|
55
|
+
grep -rn "@singleton\|Singleton\|_instance" --include="*.py" -A 20 | grep "self\."
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Safe pattern**:
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
# ✅ Correct: Pass through parameters, don't modify shared state
|
|
62
|
+
async def chat(self, user_input, llm_id=None):
|
|
63
|
+
await self.executor.run(
|
|
64
|
+
self.agent,
|
|
65
|
+
user_input,
|
|
66
|
+
override_llm_id=llm_id # Pass as parameter instead of modifying
|
|
67
|
+
)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 1.2 Global Variables/Module-Level Cache
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
# 🔴 Hidden Bug: Module-level dict modified concurrently
|
|
74
|
+
_cache = {} # Module-level, shared by all requests
|
|
75
|
+
|
|
76
|
+
async def get_user(user_id):
|
|
77
|
+
if user_id not in _cache:
|
|
78
|
+
_cache[user_id] = await db.fetch(user_id) # Race condition!
|
|
79
|
+
return _cache[user_id]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Detection command**:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Find all module-level mutable objects
|
|
86
|
+
grep -rn "^[a-z_]* = \[\]\|^[a-z_]* = {}\|^[a-z_]* = set()" --include="*.py"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 1.3 Go Language Specific Detection
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Go race detector (MUST run)
|
|
93
|
+
go test -race ./...
|
|
94
|
+
|
|
95
|
+
# Search for unprotected shared variables
|
|
96
|
+
grep -rn "var [a-z]" --include="*.go" | grep -v "sync\."
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 2. Memory & Resource Leaks
|
|
102
|
+
|
|
103
|
+
### 2.1 Event Listener Leaks (Most Common in Frontend)
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
// 🔴 Hidden Bug: useEffect without cleanup
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
window.addEventListener('resize', handleResize);
|
|
109
|
+
// 💀 Listener persists after component unmount, memory leak
|
|
110
|
+
}, []);
|
|
111
|
+
|
|
112
|
+
// ✅ Correct
|
|
113
|
+
useEffect(() => {
|
|
114
|
+
window.addEventListener('resize', handleResize);
|
|
115
|
+
return () => window.removeEventListener('resize', handleResize);
|
|
116
|
+
}, []);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Detection command**:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Search for useEffect without return
|
|
123
|
+
grep -rn "useEffect" --include="*.tsx" --include="*.ts" -A 10 | grep -B 5 "\\[\\])" | grep -v "return"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 2.2 Timer Leaks
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
// 🔴 Hidden Bug: setInterval not cleared
|
|
130
|
+
useEffect(() => {
|
|
131
|
+
const timer = setInterval(fetchData, 5000);
|
|
132
|
+
// 💀 Still executing after component unmount
|
|
133
|
+
}, []);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Detection command**:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Search for setInterval/setTimeout, check if clearInterval/clearTimeout exists
|
|
140
|
+
grep -rn "setInterval\|setTimeout" --include="*.ts" --include="*.tsx" -B 2 -A 5
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 2.3 Database Connection Leaks
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
# 🔴 Hidden Bug: Connection not closed on exception path
|
|
147
|
+
async def query_data():
|
|
148
|
+
conn = await pool.acquire()
|
|
149
|
+
result = await conn.fetch("SELECT ...") # If exception thrown here
|
|
150
|
+
await pool.release(conn) # 💀 Never executed
|
|
151
|
+
return result
|
|
152
|
+
|
|
153
|
+
# ✅ Correct: Use context manager
|
|
154
|
+
async def query_data():
|
|
155
|
+
async with pool.acquire() as conn:
|
|
156
|
+
return await conn.fetch("SELECT ...")
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Detection command**:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# Search for acquire/open not in with statement
|
|
163
|
+
grep -rn "\.acquire()\|\.open(" --include="*.py" | grep -v "with\|async with"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 2.4 Closure Reference Leaks
|
|
167
|
+
|
|
168
|
+
```javascript
|
|
169
|
+
// 🔴 Hidden Bug: Closure holds reference to large object
|
|
170
|
+
function createHandler() {
|
|
171
|
+
const hugeData = loadHugeData(); // 10MB data
|
|
172
|
+
return function handler() {
|
|
173
|
+
console.log(hugeData.length); // Closure holds hugeData reference
|
|
174
|
+
// 💀 Even if hugeData is no longer needed, cannot be GC'd
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 3. State Inconsistency Issues
|
|
182
|
+
|
|
183
|
+
### 3.1 Optimistic Update Rollback Failure
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
// 🔴 Hidden Bug: State inconsistency after optimistic update failure
|
|
187
|
+
const [items, setItems] = useState([]);
|
|
188
|
+
|
|
189
|
+
async function deleteItem(id) {
|
|
190
|
+
const backup = [...items];
|
|
191
|
+
setItems(items.filter(i => i.id !== id)); // Optimistic update
|
|
192
|
+
|
|
193
|
+
try {
|
|
194
|
+
await api.delete(id);
|
|
195
|
+
} catch (e) {
|
|
196
|
+
// 💀 If other operations modified items simultaneously, rollback overwrites
|
|
197
|
+
setItems(backup);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 3.2 Cache & Database Inconsistency
|
|
203
|
+
|
|
204
|
+
```python
|
|
205
|
+
# 🔴 Hidden Bug: Update order causes inconsistency
|
|
206
|
+
async def update_user(user_id, data):
|
|
207
|
+
await cache.delete(f"user:{user_id}") # 1. Delete cache first
|
|
208
|
+
await db.update(user_id, data) # 2. Then update DB
|
|
209
|
+
# 💀 If read request between 1-2, old data written to cache
|
|
210
|
+
|
|
211
|
+
# ✅ Correct: Update DB first, then delete cache (or use delayed double-delete)
|
|
212
|
+
async def update_user(user_id, data):
|
|
213
|
+
await db.update(user_id, data)
|
|
214
|
+
await cache.delete(f"user:{user_id}")
|
|
215
|
+
await asyncio.sleep(0.5) # Delay
|
|
216
|
+
await cache.delete(f"user:{user_id}") # Double delete
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### 3.3 Distributed Transaction Inconsistency
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
# 🔴 Hidden Bug: Cross-service operations without transaction guarantee
|
|
223
|
+
async def create_order(data):
|
|
224
|
+
order = await order_service.create(data) # 1. Create order
|
|
225
|
+
await payment_service.charge(order.total) # 2. Charge payment
|
|
226
|
+
await inventory_service.reduce(order.items) # 3. Reduce inventory
|
|
227
|
+
# 💀 If step 3 fails, order created, payment charged, but inventory not reduced
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Detection method**:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
# Search for cross-service call sequences
|
|
234
|
+
grep -rn "await.*_service\." --include="*.py" -A 3 | grep -E "_service\.[a-z]+\("
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 4. Timing & Concurrency Traps
|
|
240
|
+
|
|
241
|
+
### 4.1 Async Operation Order Dependency
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
// 🔴 Hidden Bug: Depends on execution order but not guaranteed
|
|
245
|
+
async function loadData() {
|
|
246
|
+
fetchUserProfile(); // Async but not awaited
|
|
247
|
+
fetchUserOrders(); // Async but not awaited
|
|
248
|
+
// 💀 Completion order uncertain, errors if there are dependencies
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**Detection command**:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
# Search for async function calls without await
|
|
256
|
+
grep -rn "async function\|async \(" --include="*.ts" -l | xargs grep -n "([a-zA-Z]*)\s*;" | grep -v await
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### 4.2 Promise.all Partial Failure
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// 🔴 Hidden Bug: One failure causes all to fail
|
|
263
|
+
async function loadAllData() {
|
|
264
|
+
const [users, orders, products] = await Promise.all([
|
|
265
|
+
fetchUsers(),
|
|
266
|
+
fetchOrders(),
|
|
267
|
+
fetchProducts()
|
|
268
|
+
]);
|
|
269
|
+
// 💀 If fetchOrders fails, successful results for users and products also lost
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// ✅ Correct: Use Promise.allSettled
|
|
273
|
+
async function loadAllData() {
|
|
274
|
+
const results = await Promise.allSettled([
|
|
275
|
+
fetchUsers(),
|
|
276
|
+
fetchOrders(),
|
|
277
|
+
fetchProducts()
|
|
278
|
+
]);
|
|
279
|
+
// Can handle successful and failed results separately
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 4.3 React 18 Concurrent Mode Traps
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
// 🔴 Hidden Bug: Code that depends on render order
|
|
287
|
+
useEffect(() => {
|
|
288
|
+
globalState.currentUser = user; // 💀 Executes twice in StrictMode
|
|
289
|
+
}, [user]);
|
|
290
|
+
|
|
291
|
+
// ✅ Correct: Use React state management
|
|
292
|
+
const [currentUser, setCurrentUser] = useState(user);
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## 5. Frontend-Backend Coupling Hidden Issues
|
|
298
|
+
|
|
299
|
+
### 5.1 WebSocket State Desync
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
// 🔴 Hidden Bug: State desync after reconnection
|
|
303
|
+
const ws = new WebSocket(url);
|
|
304
|
+
ws.onmessage = (event) => {
|
|
305
|
+
updateState(event.data); // Incremental update
|
|
306
|
+
};
|
|
307
|
+
ws.onopen = () => {
|
|
308
|
+
// 💀 Continues incremental update after reconnect, but missed messages during disconnect
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
// ✅ Correct: Request full state after reconnect
|
|
312
|
+
ws.onopen = () => {
|
|
313
|
+
ws.send(JSON.stringify({ type: 'SYNC_FULL_STATE' }));
|
|
314
|
+
};
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### 5.2 Token Refresh Race
|
|
318
|
+
|
|
319
|
+
```typescript
|
|
320
|
+
// 🔴 Hidden Bug: Multiple requests triggering token refresh simultaneously
|
|
321
|
+
async function apiCall(url) {
|
|
322
|
+
if (isTokenExpired()) {
|
|
323
|
+
await refreshToken(); // 💀 Multiple requests enter simultaneously, multiple refreshes
|
|
324
|
+
}
|
|
325
|
+
return fetch(url);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// ✅ Correct: Use refresh lock
|
|
329
|
+
let refreshPromise = null;
|
|
330
|
+
async function apiCall(url) {
|
|
331
|
+
if (isTokenExpired()) {
|
|
332
|
+
if (!refreshPromise) {
|
|
333
|
+
refreshPromise = refreshToken().finally(() => {
|
|
334
|
+
refreshPromise = null;
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
await refreshPromise;
|
|
338
|
+
}
|
|
339
|
+
return fetch(url);
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### 5.3 Pagination Data Drift
|
|
344
|
+
|
|
345
|
+
```typescript
|
|
346
|
+
// 🔴 Hidden Bug: Data changed while loading next page
|
|
347
|
+
// Page 1 loads with 100 items
|
|
348
|
+
// New data inserted before loading page 2
|
|
349
|
+
// 💀 Page 2 may duplicate last few items from page 1
|
|
350
|
+
|
|
351
|
+
// ✅ Correct: Use cursor pagination
|
|
352
|
+
async function loadMore(cursor) {
|
|
353
|
+
return api.get(`/items?after=${cursor}&limit=20`);
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### 5.4 Optimistic UI vs Server Validation Conflict
|
|
358
|
+
|
|
359
|
+
```typescript
|
|
360
|
+
// 🔴 Hidden Bug: Frontend allows but backend rejects
|
|
361
|
+
// Frontend validation: title length < 200
|
|
362
|
+
// Backend validation: title length < 100
|
|
363
|
+
// 💀 User inputs 150 chars, frontend shows success, backend returns 400
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
**Detection method**:
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
# Compare frontend and backend validation rules
|
|
370
|
+
# Frontend
|
|
371
|
+
grep -rn "maxLength\|max:\|\.length <" --include="*.ts" --include="*.tsx"
|
|
372
|
+
# Backend
|
|
373
|
+
grep -rn "max_length\|Field.*le=\|MaxLength" --include="*.py"
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## Automated Detection Commands
|
|
379
|
+
|
|
380
|
+
### One-Click Detection Script
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
#!/bin/bash
|
|
384
|
+
# hidden-bug-scan.sh - Hidden Bug Auto Scanner
|
|
385
|
+
|
|
386
|
+
echo "=== 1. Data Race Detection ==="
|
|
387
|
+
echo "--- Singleton state modification ---"
|
|
388
|
+
grep -rn "self\.[a-z_]* = " --include="*.py" | grep -v "__init__\|def __"
|
|
389
|
+
|
|
390
|
+
echo ""
|
|
391
|
+
echo "--- Module-level mutable objects ---"
|
|
392
|
+
grep -rn "^[a-z_]* = \[\]\|^[a-z_]* = {}" --include="*.py"
|
|
393
|
+
|
|
394
|
+
echo ""
|
|
395
|
+
echo "=== 2. Resource Leak Detection ==="
|
|
396
|
+
echo "--- Uncleaned useEffect ---"
|
|
397
|
+
grep -rn "useEffect" --include="*.tsx" -A 8 | grep -B 6 "\\[\\])" | grep -v "return () =>"
|
|
398
|
+
|
|
399
|
+
echo ""
|
|
400
|
+
echo "--- Unclosed connections ---"
|
|
401
|
+
grep -rn "\.acquire()\|\.open(" --include="*.py" | grep -v "with\|async with"
|
|
402
|
+
|
|
403
|
+
echo ""
|
|
404
|
+
echo "=== 3. Concurrency Issue Detection ==="
|
|
405
|
+
echo "--- Unawaited async calls ---"
|
|
406
|
+
grep -rn "async function" --include="*.ts" -A 20 | grep -E "\([a-zA-Z]+\)\s*;$" | grep -v await
|
|
407
|
+
|
|
408
|
+
echo ""
|
|
409
|
+
echo "=== 4. Security Issue Detection ==="
|
|
410
|
+
echo "--- Hardcoded credentials ---"
|
|
411
|
+
grep -rn "password\s*=\|api_key\s*=\|secret\s*=" --include="*.py" --include="*.ts" | grep -v "os.environ\|process.env"
|
|
412
|
+
|
|
413
|
+
echo ""
|
|
414
|
+
echo "=== Detection Complete ==="
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### Python Specific Detection
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
# Data race
|
|
421
|
+
python -m bandit -r src/
|
|
422
|
+
go test -race ./... # Go
|
|
423
|
+
|
|
424
|
+
# Memory leak
|
|
425
|
+
python -m memory_profiler script.py
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Frontend Specific Detection
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
# React Hook rules
|
|
432
|
+
npx eslint . --rule 'react-hooks/exhaustive-deps: error'
|
|
433
|
+
|
|
434
|
+
# Memory leak
|
|
435
|
+
# Chrome DevTools → Memory → Heap snapshot
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## Hidden Bug Checklist
|
|
441
|
+
|
|
442
|
+
Required checks for every Code Review:
|
|
443
|
+
|
|
444
|
+
```markdown
|
|
445
|
+
## Hidden Bug Checklist
|
|
446
|
+
|
|
447
|
+
### Data Races
|
|
448
|
+
- [ ] Is shared state modified in singleton Services
|
|
449
|
+
- [ ] Are module-level variables accessed concurrently
|
|
450
|
+
- [ ] Are there unprotected global caches
|
|
451
|
+
|
|
452
|
+
### Resource Leaks
|
|
453
|
+
- [ ] Does useEffect have cleanup function
|
|
454
|
+
- [ ] Is setInterval/setTimeout cleared
|
|
455
|
+
- [ ] Are database/network connections properly closed
|
|
456
|
+
- [ ] Are event listeners removed
|
|
457
|
+
|
|
458
|
+
### State Inconsistency
|
|
459
|
+
- [ ] Is cache update order correct
|
|
460
|
+
- [ ] Is optimistic update failure properly rolled back
|
|
461
|
+
- [ ] Do cross-service operations have transaction guarantees
|
|
462
|
+
|
|
463
|
+
### Timing Issues
|
|
464
|
+
- [ ] Are async operations properly awaited
|
|
465
|
+
- [ ] Does Promise.all handle partial failures
|
|
466
|
+
- [ ] Do concurrent requests have race conditions
|
|
467
|
+
|
|
468
|
+
### Frontend-Backend Coupling
|
|
469
|
+
- [ ] Are frontend/backend validation rules consistent
|
|
470
|
+
- [ ] Does WebSocket reconnection sync state
|
|
471
|
+
- [ ] Does Token refresh have race protection
|
|
472
|
+
- [ ] Does pagination use cursor to prevent data drift
|
|
473
|
+
```
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# IDE Lint Errors Detection and Resolution Guide
|
|
2
|
+
|
|
3
|
+
IDE red squiggly lines (lint errors) indicate code quality issues that must be identified and addressed during code review. This guide provides a systematic approach to detecting, categorizing, and requiring fixes for these errors.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Red underlines in code editors represent diagnostics from language servers, linters, and type checkers. During code review, these errors are automatic P1 findings — code with red underlines should not be approved.
|
|
8
|
+
|
|
9
|
+
## Error Categories
|
|
10
|
+
|
|
11
|
+
### 1. Syntax Errors (P0 - Blocker)
|
|
12
|
+
|
|
13
|
+
**Review Impact**: Code will not compile/run. Automatic BLOCKED verdict.
|
|
14
|
+
|
|
15
|
+
| Common Causes | Detection | Required Action |
|
|
16
|
+
|---------------|-----------|-----------------|
|
|
17
|
+
| Missing semicolons, commas, colons | Parser error at specific line | Require fix before approval |
|
|
18
|
+
| Unmatched brackets/braces/parentheses | Error often at end of block | Require fix |
|
|
19
|
+
| Typos in keywords (`fucntion`, `retrun`) | "Unknown identifier" error | Require fix |
|
|
20
|
+
| Invalid syntax constructs | "Unexpected token" error | Require fix |
|
|
21
|
+
|
|
22
|
+
### 2. Type Errors (P0/P1 - Must Fix)
|
|
23
|
+
|
|
24
|
+
**Review Impact**: Runtime type errors, undefined behavior. P0 if in critical path.
|
|
25
|
+
|
|
26
|
+
| Common Causes | Detection | Required Action |
|
|
27
|
+
|---------------|-----------|-----------------|
|
|
28
|
+
| Type mismatch in assignment | "Type X not assignable to Y" | Require fix or justified cast |
|
|
29
|
+
| Undefined type reference | "Cannot find type X" | Require import or definition |
|
|
30
|
+
| Wrong generic parameters | "Expected N type arguments" | Require fix |
|
|
31
|
+
| Null/undefined not handled | "Object possibly undefined" | Require null check |
|
|
32
|
+
| Incorrect function return type | "Return type mismatch" | Require fix |
|
|
33
|
+
|
|
34
|
+
### 3. Import/Module Errors (P1 - Must Fix)
|
|
35
|
+
|
|
36
|
+
**Review Impact**: Module resolution failures at runtime or build.
|
|
37
|
+
|
|
38
|
+
| Common Causes | Detection | Required Action |
|
|
39
|
+
|---------------|-----------|-----------------|
|
|
40
|
+
| Missing import statement | "X is not defined" | Require import |
|
|
41
|
+
| Wrong import path | "Cannot find module X" | Require path fix |
|
|
42
|
+
| Circular dependencies | Complex error pattern | Require refactor |
|
|
43
|
+
| Package not installed | "Cannot find module X" | Require package installation |
|
|
44
|
+
| Wrong export/import style | "X has no default export" | Require matching import |
|
|
45
|
+
|
|
46
|
+
### 4. Linting Rule Violations (P2/P3 - Should Fix)
|
|
47
|
+
|
|
48
|
+
**Review Impact**: Code quality, maintainability. P2 for safety rules.
|
|
49
|
+
|
|
50
|
+
| Common Causes | Detection | Required Action |
|
|
51
|
+
|---------------|-----------|-----------------|
|
|
52
|
+
| Unused variables/imports | "X is defined but never used" | Recommend removal |
|
|
53
|
+
| Code style violations | Various formatting warnings | Recommend fix |
|
|
54
|
+
| Deprecated API usage | "X is deprecated" | Recommend update |
|
|
55
|
+
| Unsafe patterns | Security/safety warnings | P1 if security-related |
|
|
56
|
+
| Complexity warnings | "Function too complex" | Recommend refactor |
|
|
57
|
+
|
|
58
|
+
### 5. Declaration Errors (P1 - Must Fix)
|
|
59
|
+
|
|
60
|
+
**Review Impact**: Runtime ReferenceError, undefined behavior.
|
|
61
|
+
|
|
62
|
+
| Common Causes | Detection | Required Action |
|
|
63
|
+
|---------------|-----------|-----------------|
|
|
64
|
+
| Using before declaration | "X used before defined" | Require reorder |
|
|
65
|
+
| Missing variable declaration | "X is not defined" | Require declaration |
|
|
66
|
+
| Scope issues | "X is not accessible" | Require scope fix |
|
|
67
|
+
| Missing function definition | "X is not a function" | Require definition |
|
|
68
|
+
|
|
69
|
+
### 6. Configuration Issues (P1 - Must Fix)
|
|
70
|
+
|
|
71
|
+
**Review Impact**: Project-wide build/type failures.
|
|
72
|
+
|
|
73
|
+
| Common Causes | Detection | Required Action |
|
|
74
|
+
|---------------|-----------|-----------------|
|
|
75
|
+
| Missing tsconfig.json | TypeScript errors everywhere | Require config |
|
|
76
|
+
| Wrong compiler options | Unexpected type behavior | Require config fix |
|
|
77
|
+
| Missing type definitions | "Cannot find type X" for packages | Require @types install |
|
|
78
|
+
| Linter misconfiguration | Inconsistent linting | Require config fix |
|
|
79
|
+
| Python venv issues | Import errors for packages | Require env fix |
|
|
80
|
+
|
|
81
|
+
## Review Workflow Integration
|
|
82
|
+
|
|
83
|
+
### Phase 1.1: IDE Lint Error Analysis (MANDATORY)
|
|
84
|
+
|
|
85
|
+
**Before manual code review, run automated lint check:**
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
read_lints(paths: ["path/to/changed/files"])
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Categorize findings by severity:**
|
|
92
|
+
|
|
93
|
+
| Category | Finding Level | Review Action |
|
|
94
|
+
|----------|---------------|---------------|
|
|
95
|
+
| Syntax errors | P0 | BLOCKED — cannot approve |
|
|
96
|
+
| Type errors (critical path) | P0 | BLOCKED — require fix |
|
|
97
|
+
| Type errors (non-critical) | P1 | CHANGES REQUESTED |
|
|
98
|
+
| Import/declaration errors | P1 | CHANGES REQUESTED |
|
|
99
|
+
| Config issues | P1 | CHANGES REQUESTED |
|
|
100
|
+
| Linting warnings (safety) | P2 | Should fix or justify |
|
|
101
|
+
| Linting warnings (style) | P3 | Optional fix |
|
|
102
|
+
|
|
103
|
+
### Lint Error Findings Template
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
## IDE Lint Error Findings
|
|
107
|
+
|
|
108
|
+
| File | Line | Error Type | Message | Severity |
|
|
109
|
+
|------|------|------------|---------|----------|
|
|
110
|
+
| src/component.tsx | 42 | Type | "Property 'X' does not exist" | P1 |
|
|
111
|
+
| src/utils.ts | 15 | Import | "Cannot find module 'Y'" | P1 |
|
|
112
|
+
| ... | ... | ... | ... | ... |
|
|
113
|
+
|
|
114
|
+
**Required Actions:**
|
|
115
|
+
- [ ] Fix all P0/P1 lint errors before re-review
|
|
116
|
+
- [ ] Document any intentional suppressions
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Common Patterns to Flag
|
|
120
|
+
|
|
121
|
+
### High-Risk Lint Errors (Always P1+)
|
|
122
|
+
|
|
123
|
+
| Pattern | Why It's High-Risk | Review Action |
|
|
124
|
+
|---------|-------------------|---------------|
|
|
125
|
+
| any type usage | Bypasses type safety | Require specific type |
|
|
126
|
+
| Ignored Promise | Unhandled async error | Require await/catch |
|
|
127
|
+
| Non-null assertion (!) | Hides null checks | Require proper check |
|
|
128
|
+
| Type assertion (as X) | May hide mismatch | Verify correctness |
|
|
129
|
+
| @ts-ignore / # type: ignore | Suppresses errors | Require justification |
|
|
130
|
+
| Unused catch variable | May hide error info | Require logging |
|
|
131
|
+
|
|
132
|
+
### Patterns That Indicate Deeper Issues
|
|
133
|
+
|
|
134
|
+
| Lint Error Pattern | May Indicate | Follow-up Check |
|
|
135
|
+
|-------------------|--------------|-----------------|
|
|
136
|
+
| Many "X is not defined" | Missing module | Check package.json |
|
|
137
|
+
| Type errors everywhere | Config issue | Check tsconfig |
|
|
138
|
+
| Import path errors | Structure change | Check for refactor |
|
|
139
|
+
| Unused exports | Dead code | Check for removal |
|
|
140
|
+
|
|
141
|
+
## Verification Checklist for Reviewers
|
|
142
|
+
|
|
143
|
+
Before approving ANY PR:
|
|
144
|
+
|
|
145
|
+
- [ ] Run `read_lints` on all changed files
|
|
146
|
+
- [ ] Zero P0 errors (syntax, critical type)
|
|
147
|
+
- [ ] Zero P1 errors (imports, declarations, types)
|
|
148
|
+
- [ ] P2 errors addressed or justified
|
|
149
|
+
- [ ] No new lint errors compared to base branch
|
|
150
|
+
- [ ] Suppressions have documented justification
|
|
151
|
+
|
|
152
|
+
## Integration with Review Report
|
|
153
|
+
|
|
154
|
+
Include lint error findings in the standard review report:
|
|
155
|
+
|
|
156
|
+
```markdown
|
|
157
|
+
## Phase 1: Automated Checks
|
|
158
|
+
|
|
159
|
+
### Lint Error Analysis
|
|
160
|
+
- Files checked: [list]
|
|
161
|
+
- P0 errors: [count] — BLOCKING
|
|
162
|
+
- P1 errors: [count] — Must fix
|
|
163
|
+
- P2 errors: [count] — Should address
|
|
164
|
+
- P3 errors: [count] — Optional
|
|
165
|
+
|
|
166
|
+
### Required Before Approval
|
|
167
|
+
1. Fix syntax error in file.ts:42
|
|
168
|
+
2. Add missing import in utils.ts:15
|
|
169
|
+
3. Address type mismatch in component.tsx:88
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
→ Return to main workflow: Phase 1 Automated Checks
|
|
173
|
+
|