526 lines
13 KiB
Markdown
526 lines
13 KiB
Markdown
|
||
review
|
||
|
||
---
|
||
|
||
# Code Review Prompt (improved)
|
||
|
||
**Goal:** Provide a rigorous, actionable review that balances correctness, security, and maintainability for the following code.
|
||
|
||
## Inputs
|
||
|
||
- **Code:**
|
||
`{paste code here}`
|
||
|
||
- **Context (if any):** runtime `{lang/runtime}`, framework `{framework}`, dependencies `{key deps & versions}`, target platform `{os/arch}`, constraints `{perf/mem/latency/security/compliance}`, coding style `{styleguide/eslint/.editorconfig}`, known requirements `{tickets/PRD refs}`.
|
||
|
||
|
||
## Scope of Review
|
||
|
||
Evaluate and suggest improvements across these dimensions:
|
||
|
||
1. **Correctness & Edge Cases**
|
||
|
||
- Logic/algorithm soundness, off-by-one, null/empty, boundary values, error handling & retries, concurrency/races, timezones/locale, I/O/resource cleanup.
|
||
|
||
2. **Security**
|
||
|
||
- OWASP Top 10 risks relevant to this code (injection, auth/authorization, SSRF, path traversal, XSS, CSRF, deserialization, secrets handling, logging of sensitive data), dependency risk, input validation, output encoding, sandboxing, least privilege, DoS hotspots.
|
||
|
||
3. **Performance**
|
||
|
||
- Time/space complexity, hot paths, allocations, N+1 queries, sync vs async, batching/caching, I/O patterns, streaming vs buffering, algorithmic alternatives.
|
||
|
||
4. **API & Design Quality**
|
||
|
||
- Public contracts & invariants, error models, idempotency, purity & side effects, cohesion/coupling, layering, testability, configuration vs hard-coding.
|
||
|
||
5. **Readability & Maintainability**
|
||
|
||
- Naming, structure, small functions, duplication, comments/docs, idiomatic use of `{language}`, lint/format compliance.
|
||
|
||
|
||
## Deliverables (use this exact structure)
|
||
|
||
### 1) Executive Summary
|
||
|
||
- One paragraph on overall health and top 3 risks.
|
||
|
||
|
||
### 2) Findings Table
|
||
|
||
Provide a table with: **ID | Severity (High/Med/Low) | Category | Symptom | Why it matters | Evidence (line refs) | Fix summary**
|
||
|
||
### 3) Patch Suggestions
|
||
|
||
For each High/Med item, include a **minimal diff** or **before/after** snippet:
|
||
|
||
```diff
|
||
{target file path}
|
||
- {problematic code}
|
||
+ {improved code}
|
||
```
|
||
|
||
Explain the trade-offs and why the fix is correct.
|
||
|
||
### 4) Tests to Add
|
||
|
||
List concrete test cases (names + intent). Include edge values and failure paths.
|
||
|
||
- Unit: `{TestName_Should...}`
|
||
|
||
- Integration: `{Scenario_When..._Then...}`
|
||
|
||
- Property/Fuzz (if applicable): input domains & invariants.
|
||
|
||
|
||
### 5) Performance Notes
|
||
|
||
- Estimated complexity and bottlenecks.
|
||
|
||
- Quick wins (e.g., cache/batch/stream) and expected impact.
|
||
|
||
|
||
### 6) Security Checklist
|
||
|
||
- Inputs validated? Output encoded? Secrets sourced from vault? Least privilege? Safe defaults? Rate limiting? Logging PII redaction?
|
||
|
||
|
||
### 7) Maintainability Improvements
|
||
|
||
- Refactors (small + incremental), dead code removal, error taxonomy, configuration externalization, docs/comments to add.
|
||
|
||
|
||
### 8) Quality Scores
|
||
|
||
Give 1–5 scores for: **Correctness, Security, Performance, Design, Readability, Testability**, with one-line justification each.
|
||
|
||
## Constraints
|
||
|
||
- Prefer **minimal, targeted changes** over large rewrites.
|
||
|
||
- Match existing project style and patterns.
|
||
|
||
- If context is missing, **state assumptions explicitly** and proceed.
|
||
|
||
- Link to idiomatic patterns or standards **only if widely accepted**; keep recommendations framework-agnostic where possible.
|
||
|
||
|
||
## Output Format
|
||
|
||
Return **only** the sections 1–8 above in Markdown. Keep code blocks self-contained and compilable where possible.
|
||
|
||
---
|
||
|
||
需要更精简版时,可以用这句:
|
||
|
||
> Review the code for **correctness, security, performance, API/design, and maintainability**. Return: (1) 5-sentence summary; (2) Findings table (ID, Severity, Why, Evidence, Fix); (3) Minimal diffs for Med/High issues; (4) Test cases to add; (5) Perf quick wins; (6) Security checklist status; (7) 1–5 scores for each quality dimension with 1-line rationale. Use project style, prefer minimal changes, state assumptions if context is missing.
|
||
|
||
|
||
|
||
|
||
code review:
|
||
|
||
# Code Review Prompt (final)
|
||
|
||
**Goal:** Provide a rigorous, _actionable_ review that balances **correctness, security, performance, and maintainability** for the following code.
|
||
|
||
---
|
||
|
||
## Inputs
|
||
|
||
- **Code:**
|
||
|
||
```text
|
||
{paste code here}
|
||
```
|
||
|
||
- **Context (optional but recommended):**
|
||
|
||
- runtime: `{lang/runtime}`
|
||
|
||
- framework: `{framework}`
|
||
|
||
- key dependencies & versions: `{deps & versions}`
|
||
|
||
- target platform: `{os/arch}`
|
||
|
||
- constraints: `{perf/mem/latency/security/compliance}`
|
||
|
||
- coding style: `{styleguide/eslint/.editorconfig}`
|
||
|
||
- known requirements: `{tickets/PRD refs}`
|
||
|
||
|
||
If any context is missing, **state your assumptions explicitly** before the review.
|
||
|
||
---
|
||
|
||
## Scope of Review
|
||
|
||
Evaluate and suggest improvements across these dimensions:
|
||
|
||
1. **Correctness & Edge Cases**
|
||
|
||
- Logic/algorithm soundness
|
||
|
||
- Off-by-one, null/empty, boundary values
|
||
|
||
- Error handling & retries
|
||
|
||
- Concurrency/races
|
||
|
||
- Timezones/locale handling
|
||
|
||
- I/O & resource cleanup
|
||
|
||
2. **Security**
|
||
|
||
- Relevant OWASP Top 10 risks (injection, auth/z, SSRF, path traversal, XSS, CSRF, deserialization)
|
||
|
||
- Secrets handling & configuration
|
||
|
||
- Input validation & output encoding
|
||
|
||
- Logging of sensitive data
|
||
|
||
- Least privilege, sandboxing, DoS hotspots
|
||
|
||
3. **Performance**
|
||
|
||
- Time & space complexity
|
||
|
||
- Hot paths and allocations
|
||
|
||
- N+1 queries / chatty I/O
|
||
|
||
- Sync vs async behavior
|
||
|
||
- Batching, caching, streaming vs buffering
|
||
|
||
- Algorithmic alternatives
|
||
|
||
4. **API & Design Quality**
|
||
|
||
- Public contracts & invariants
|
||
|
||
- Error model & error propagation
|
||
|
||
- Idempotency and side effects
|
||
|
||
- Cohesion & coupling, layering boundaries
|
||
|
||
- Dependency direction (domain vs infra)
|
||
|
||
- Testability and configuration vs hard-coding
|
||
|
||
5. **Readability & Maintainability**
|
||
|
||
- Naming and intent clarity
|
||
|
||
- Function/module size and structure
|
||
|
||
- Duplication vs reuse
|
||
|
||
- Comments/docs (where needed)
|
||
|
||
- Idiomatic use of `{language}`
|
||
|
||
- Lint/format compliance
|
||
|
||
|
||
---
|
||
|
||
## Deliverables (use this exact structure)
|
||
|
||
### 1) Executive Summary
|
||
|
||
- One short paragraph on overall health.
|
||
|
||
- List the **top 3 risks or opportunities** (bullets).
|
||
|
||
|
||
### 2) Findings Table
|
||
|
||
Provide a table with:
|
||
|
||
- **ID** – short stable identifier (e.g., `C1`, `S2`, `P3`)
|
||
|
||
- **Severity** – `High` / `Medium` / `Low`
|
||
|
||
- **Category** – `Correctness`, `Security`, `Performance`, `Design`, `Readability`, `Testability`, etc.
|
||
|
||
- **Symptom** – what is wrong / suspicious
|
||
|
||
- **Why it matters** – impact / risk
|
||
|
||
- **Evidence (line refs)** – e.g., `file.go:42-57`
|
||
|
||
- **Fix summary** – 1–2 line suggested direction
|
||
|
||
|
||
Example:
|
||
|
||
|ID|Severity|Category|Symptom|Why it matters|Evidence|Fix summary|
|
||
|---|---|---|---|---|---|---|
|
||
|C1|High|Correctness|Possible nil deref on error path|Can cause runtime panic in production|`handler.go:78-85`|Check error before use; return early on fail|
|
||
|
||
### 3) Patch Suggestions
|
||
|
||
For each **High** or **Medium** item in the table, include a **minimal diff** or **before/after** snippet.
|
||
|
||
```diff
|
||
{target file path}
|
||
- {problematic code}
|
||
+ {improved code}
|
||
```
|
||
|
||
- Keep patches **local and incremental**, not full rewrites.
|
||
|
||
- Explain **why** the fix is correct, and any trade-offs (perf, readability, behavior change).
|
||
|
||
|
||
### 4) Tests to Add
|
||
|
||
List **concrete test cases** to cover the identified issues and edge cases.
|
||
|
||
- Unit tests (with intent):
|
||
|
||
- `Test_{UnitName}_ShouldHandleEmptyInput` – verifies behavior when input is empty
|
||
|
||
- `Test_{FuncName}_ShouldReturnErrorOnTimeout` – covers timeout/failure path
|
||
|
||
- Integration tests:
|
||
|
||
- `{Scenario_When..._Then...}` – describe full flows: external calls, DB, queues, etc.
|
||
|
||
- Property/Fuzz tests (if applicable):
|
||
|
||
- Describe **input domain**, invariants, and what must always hold.
|
||
|
||
|
||
Where possible, map tests back to **Finding IDs** (e.g. “C1, S2”).
|
||
|
||
### 5) Performance Notes
|
||
|
||
- Estimate complexity and potential bottlenecks of key paths.
|
||
|
||
- Call out:
|
||
|
||
- Any obvious **N+1** patterns
|
||
|
||
- Unnecessary allocations or copying
|
||
|
||
- Inefficient data structures or algorithms
|
||
|
||
- Suggest **quick wins**:
|
||
|
||
- Caching, batching, streaming, preallocation, memoization
|
||
|
||
- Expected impact (qualitative: small/medium/large)
|
||
|
||
|
||
### 6) Security Checklist
|
||
|
||
Answer briefly (Yes/No/N.A. + short note):
|
||
|
||
- Inputs validated at boundaries?
|
||
|
||
- Outputs properly encoded for their sinks (HTML/SQL/OS/etc.)?
|
||
|
||
- Auth & authorization checks present and correctly ordered?
|
||
|
||
- Secrets kept out of code (config, env, vault)?
|
||
|
||
- Least privilege for external resources (DB, queues, files)?
|
||
|
||
- Safe defaults (e.g., secure TLS, secure cookies, strict modes)?
|
||
|
||
- Rate limiting / throttling for expensive or exposed endpoints?
|
||
|
||
- Logs avoid PII/credential leakage; sensitive data redacted or omitted?
|
||
|
||
|
||
Highlight any **High** severity gaps and link them to Findings IDs.
|
||
|
||
### 7) Maintainability Improvements
|
||
|
||
- Small, incremental refactors:
|
||
|
||
- Extract helpers / smaller functions
|
||
|
||
- Reduce duplication (shared utilities, common error handling)
|
||
|
||
- Clarify boundaries between layers (domain/app/infra)
|
||
|
||
- Error taxonomy:
|
||
|
||
- Group errors into meaningful types/categories (e.g., validation vs system vs external)
|
||
|
||
- Standardize error wrapping and messages
|
||
|
||
- Configuration:
|
||
|
||
- Externalize magic numbers/strings
|
||
|
||
- Centralize feature flags or switches
|
||
|
||
- Documentation:
|
||
|
||
- Add or update docstrings for non-obvious logic
|
||
|
||
- Brief README/ADR notes if design is non-trivial
|
||
|
||
|
||
### 8) Quality Scores
|
||
|
||
Give **1–5** scores (5 = excellent, 1 = poor) with a **one-line justification** each:
|
||
|
||
- **Correctness:** `X/5` – `{short reason}`
|
||
|
||
- **Security:** `X/5` – `{short reason}`
|
||
|
||
- **Performance:** `X/5` – `{short reason}`
|
||
|
||
- **Design:** `X/5` – `{short reason}`
|
||
|
||
- **Readability:** `X/5` – `{short reason}`
|
||
|
||
- **Testability:** `X/5` – `{short reason}`
|
||
|
||
|
||
---
|
||
|
||
## Constraints
|
||
|
||
- Prefer **minimal, targeted changes** over big-bang rewrites.
|
||
|
||
- Match **existing project style and patterns** where visible.
|
||
|
||
- If context is missing, **state assumptions explicitly** and proceed.
|
||
|
||
- Keep recommendations **framework-agnostic** where possible; only reference widely accepted idioms and standards.
|
||
|
||
- When in doubt, **prioritize clarity and safety** over micro-optimizations.
|
||
|
||
|
||
---
|
||
|
||
## Output Format
|
||
|
||
Return **only** sections **1–8** above in Markdown when performing an actual review.
|
||
Keep all code blocks self-contained and compilable where possible.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
----
|
||
|
||
# 可观测性 —— **4.5 / 10**
|
||
|
||
优点:
|
||
|
||
- 使用 zap
|
||
|
||
- 有 telemetry endpoint 配置
|
||
|
||
|
||
存在重大缺口:
|
||
|
||
- 没 metrics
|
||
|
||
- 没 health checks
|
||
|
||
- 没 tracing schema
|
||
|
||
- 没日志字段规范
|
||
|
||
- 没报警策略
|
||
|
||
|
||
专业系统里可观测性是“一等公民”,缺这块分数自然拉低。
|
||
|
||
---
|
||
|
||
# 4️⃣ 可靠性(Reliability & Fault Handling)—— **5.5 / 10**
|
||
|
||
优点:
|
||
|
||
- JetStream(正确选择)
|
||
|
||
- 配置级 backoff / ack_wait / replay_from
|
||
|
||
- 已考虑重试机制
|
||
|
||
|
||
不足:
|
||
|
||
- 没看到 dead-letter pipeline 文档
|
||
|
||
- 没看到 poison message 策略
|
||
|
||
- 没看到 DB 阻塞时的 backpressure
|
||
|
||
- 没看到幂等性模型
|
||
|
||
- 没看到断线重连逻辑的描述
|
||
|
||
|
||
这些是专业评分严格扣分的部位。
|
||
|
||
|
||
|
||
### 严格评审的缺失
|
||
|
||
- 没看到“dead-letter pipeline”定义
|
||
|
||
- 没看到“poison message”策略
|
||
|
||
- 没看到“持久化失败策略”
|
||
|
||
- 没看到“DB 降级”逻辑
|
||
|
||
- 没看到“幂等性策略”(特别关键)
|
||
|
||
- 没看到“重平衡策略”(consumer scaling)
|
||
|
||
- 没看到“高可用拓扑”(replicas 仅是 JetStream 层,服务自身无说明)
|
||
|
||
|
||
按专业级评分,就是 **4/10**。
|
||
|
||
|
||
这个维度是最严格的(专业评分里非常重要)。
|
||
|
||
### ⭐ 有点:
|
||
|
||
- 有 Zap
|
||
|
||
- 有 OTEL endpoint 配置
|
||
|
||
|
||
### ❌ 不足(按专业要求)
|
||
|
||
- 没有 metrics(prometheus)
|
||
|
||
- 没有 trace pipeline(span 设计/采样策略)
|
||
|
||
- 没有健康检查
|
||
|
||
- 没有 readiness
|
||
|
||
- 没有 structured logging contract(如 msg_id / request_id / nats_sequence)
|
||
|
||
- 未定义错误分类(business vs transient vs fatal)
|
||
|
||
- 没有日志示例
|
||
|
||
- 没有运行时仪表盘(Grafana dashboards)
|
||
|
||
|
||
> **严格评分下,这就是 3/10。**
|
||
>
|
||
|
||
---- |