0Pricing
Claude Architect · 강의

거짓 양성 줄이기

오탐이 많은 범주를 일시적으로 비활성화합니다

거짓 양성 줄이기은(는) CoddyKit의 무료 Claude Architect 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Claude Architect 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Claude Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

The False-Positive Problem

You wired Claude Code into your CI pipeline to review every pull request. It works — but developers start ignoring it. Why? Too much noise. The review keeps flagging things that are not real problems: style nitpicks, harmless TODO comments, defensive null checks.

This is the false-positive problem. A reviewer that cries wolf gets muted. In Scenario 5 (Claude Code for CI/CD), one of the core architect skills is minimizing false positives so the signal that remains is trustworthy.

In this lesson you'll learn a fast, surgical tactic: temporarily disable high-noise categories so the review stays useful while you tune the real rules.

Why Noise Kills Trust

A CI reviewer has exactly one job: surface issues a human should act on. The moment it produces more false alarms than real findings, two things happen:

  • Developers stop reading the comments.
  • Real bugs hide inside the noise (lost-in-the-middle: attention drops on the long middle of a list).

Aggregate "we found 40 issues" sounds productive, but if 35 are noise the review has negative value — it costs attention and returns little. Reducing false positives is not cosmetic; it protects the credibility of the whole pipeline.

Identify High-Noise Categories

Before disabling anything, find which categories generate the noise. Run the review in non-interactive mode with machine-readable output so you can count findings by type instead of eyeballing prose.

Use -p (also --print) for non-interactive CI runs and --output-format json for parseable results.

# Non-interactive review, parseable output for CI
claude -p "Review the staged diff for correctness bugs only." \
  --output-format json \
  > review.json

# Tally findings by category to see where the noise is
jq -r '.findings[].category' review.json | sort | uniq -c | sort -rn

Temporarily Disable, Don't Delete

Once you spot a category producing mostly false positives — say style or doc_formatting — the fastest fix is to temporarily disable it. Not delete it forever; mute it now, re-enable once you've written sharper criteria.

The cleanest place to do this is the instruction the reviewer reads. Be explicit about what to skip, because explicit criteria beat vague pleas like "be less noisy."

claude -p "Review the staged diff. Report ONLY:
  - correctness bugs
  - security vulnerabilities
DO NOT report (temporarily disabled): code style, formatting,
naming, missing comments, or TODO notes." \
  --output-format json > review.json

Encode the Mute in CLAUDE.md

A flag on one command only mutes one run. To make the rule consistent across every CI review, put it in the project-level CLAUDE.md (./CLAUDE.md or .claude/CLAUDE.md) — shared via version control so every teammate and every pipeline run inherits it.

Avoid user-level ~/.claude/CLAUDE.md for this: it is personal and NOT shared via VCS, so new teammates and the CI runner would miss the rule.

## CI Review Policy

When reviewing pull requests, report ONLY correctness and
security issues.

Temporarily DISABLED categories (high false-positive rate,
re-evaluate after we add explicit criteria):
- style / formatting
- naming conventions
- missing or outdated comments
- TODO / FIXME notes

Scope the Mute With path-rules

Sometimes a category is noisy only in part of the repo. Generated files or test fixtures, for example, will trip a strict reviewer constantly. Instead of bloating the monolithic CLAUDE.md, use a .claude/rules/ file with YAML frontmatter paths — it loads only when the matching files are in play, saving context and tokens.

---
paths:
  - "**/*.generated.ts"
  - "src/__fixtures__/**"
---

# Reviewer note for generated & fixture files
These files are machine-generated or static test data.
Disable style, naming, and complexity findings here —
report only security issues.

Make the Remaining Rules Explicit

Muting noisy categories buys you breathing room, but the durable fix is sharper criteria for the categories you keep. Explicit criteria beat vague instructions every time.

  • Vague: "Flag bad comments." → fires on everything.
  • Explicit: "Flag a comment ONLY when it contradicts the code it describes." → fires on real defects.

Re-enabling a category with a precise rule is far better than leaving it muted forever.

claude -p "Review the staged diff.
Comment criteria (be strict):
  - Flag a comment ONLY if it contradicts the code.
  - Flag a null check ONLY if the value can truly be null
    on that path.
  - Skip anything that is merely a preference." \
  --output-format json > review.json

Use Few-Shot Examples for Edge Cases

When a category keeps misfiring on borderline cases, don't just describe the boundary — show it. Two to four targeted few-shot examples per ambiguity teach the model the line between signal and noise. The model generalizes from them; it does not merely copy them.

Few-shot is especially strong for consistency, edge cases, output format, and reducing hallucinated findings — exactly the levers that drive false positives down.

claude -p "Flag SQL-injection risks. Examples:

FLAG: db.query('SELECT * FROM u WHERE id=' + req.id)
  -> raw string concatenation of user input.

DO NOT FLAG: db.query('SELECT * FROM u WHERE id=$1', [req.id])
  -> parameterized, input is bound safely.

Now review the staged diff with this standard."

Review in an Isolated Session

One subtle false-positive source: bias. If the same session that generated code also reviews it, the author retains its reasoning and won't challenge itself — it rationalizes its own choices. The same applies to a reviewer primed by long generation context.

Run the review in a fresh, isolated session. An independent instance evaluates the diff on its own merits and produces cleaner, less self-justifying findings.

# BAD: review piggy-backs on the generation session
#   -> biased, fewer real challenges

# GOOD: isolated, single-purpose review session
claude -p "$(cat .claude/review-policy.md)\n\nReview this diff:" \
  --output-format json < staged.diff > review.json

On Re-Runs, Report Only New Issues

A noisy pattern on iterative PRs: the reviewer re-reports the same findings every push, drowning the genuinely new ones. When you re-run a review, feed it the prior results and ask it to report only new or still-unfixed issues.

This keeps each run's output tight and stops developers from scrolling past repeats — another quiet driver of false-positive fatigue.

claude -p "Here are the findings from the previous run:
$(cat prev_review.json)

Review the NEW diff. Report ONLY issues that are new or
still unfixed. Do not repeat already-resolved findings." \
  --output-format json > review.json

Don't Confuse Muting With Enforcement

Disabling a noisy category is a tuning decision about review signal — it is NOT how you enforce critical rules. Prompt-level instructions are roughly 90% probabilistic; they are perfect for shaping what a review reports, but wrong for guarantees.

When a rule has financial, legal, or safety consequences (block a refund over $500, reject a secret committed to the repo), enforce it with a deterministic hook, not a prompt. Mute noise with prompts and config; enforce hard rules with hooks. Keep the two jobs separate.

Quick Check: Taming a Noisy Reviewer

Apply what you've learned to a realistic CI situation.

Recap: Reducing False Positives

Key takeaways for keeping a CI reviewer trustworthy:

  • Noise destroys trust — a reviewer that cries wolf gets muted, and real bugs hide in the list.
  • Measure first — run with -p and --output-format json, then tally findings by category to locate the noise.
  • Temporarily disable high-noise categories; mute now, re-enable with sharper rules later.
  • Encode it in project CLAUDE.md (shared via VCS), and use .claude/rules/ with paths to scope mutes to generated or fixture files.
  • Sharpen the survivors with explicit criteria and 2-4 few-shot examples per ambiguity.
  • Review in an isolated session and report only new/unfixed issues on re-runs.
  • Mute with prompts/config; enforce critical rules with deterministic hooks. Never confuse the two.

자주 묻는 질문

“거짓 양성 줄이기” 강의는 무료인가요?

네 — “거짓 양성 줄이기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Claude Architect 강의 전체를 잠금 해제할 수 있습니다. Claude Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

“거짓 양성 줄이기”에서 뭘 배우나요?

오탐이 많은 범주를 일시적으로 비활성화합니다 브라우저에서 직접 실행하는 실습 코드로 Claude Architect을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Claude Architect을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Claude Architect은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“거짓 양성 줄이기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Claude Architect 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Claude Architect 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 모호한 지시보다 명시적인 기준
  2. 범주별 예시
  3. 예시를 활용한 심각도 기준
  4. 거짓 양성 줄이기
← Claude Architect(으)로 돌아가기