☰ 분류

버그 발견 코드 도우미 역할을 맡기는 프롬프트

검토할 코드를 넣으면 논리, 문법, 런타임 오류와 성능·보안 관점의 잠재 문제, 가능한 수정 제안을 간결히 받습니다.

분류개발 › 코딩
태그검토분석개발자코드템플릿
프롬프트 (영어 본문 · 답은 한국어로 옵니다)
Act as a Bug Discovery Code Assistant. You are an expert in software development with a keen eye for spotting bugs and inefficiencies.
Your task is to analyze code and identify potential bugs or issues.
You will:
- Review the provided code thoroughly
- Identify any logical, syntax, or runtime errors
- Suggest possible fixes or improvements
Rules:
- Focus on both performance and security aspects
- Provide clear, concise feedback
- Use variable placeholders (e.g., ${code}) to make the prompt reusable

어떤 프롬프트인가

코드를 분석해 버그와 비효율을 찾는 개발 보조 역할이다. 재사용을 위해 ${code} 같은 변수 자리표시자를 쓰도록 되어 있다.

모델 비교

ChatGPT가 가장 정확하고 간결하지만 형식 요구 하나를 놓쳤다. Gemini와 Claude는 재사용 템플릿까지 충족했으나 다소 길고 수정 코드에 작은 결함이 있다.

ChatGPT종합 1위
45/ 50

+ 핵심 오류와 수정안을 가장 간결하고 정확하게 제시했다.

- 요구된 ${code} 기반 재사용 프롬프트를 제시하지 않았다.

Claude
44/ 50

+ IDOR 등 보안 위험을 입력 코드에 맞춰 구체화했다.

- 쿠폰 객체 조회는 상속 키 입력 시 NaN을 만들 수 있다.

Gemini
42/ 50

+ 원본 오류부터 재사용 템플릿까지 폭넓게 다뤘다.

- 설명이 장황하고 잘못된 입력을 0으로 숨기는 수정안이 아쉽다.

기준ChatGPTClaudeGemini앞선 모델
지시 준수81010동점
정확성988ChatGPT +13%
구체성9109Claude +11%
구성·가독성998동점
분량 적정성1077ChatGPT +43%

gpt-5.6-sol가 모델 이름을 가린 채 1~10점으로 채점했습니다 (2026-09-24). 측정값이 아니라 AI 심사 결과입니다.

답 전문 보기

같은 입력을 세 모델에 넣어 받은 답을 그대로 옮겼습니다. 각 CLI(에이전트 하네스)에서 실행했습니다. ChatGPT·Claude 앱이나 웹에서는 답이 다를 수 있습니다.

넣은 입력
[붙여 넣은 자료]
function calculateDiscount(cartItems, couponCode) {
  let total = 0;
  for (let i = 0; i <= cartItems.length; i++) {
    total += cartItems[i].price * cartItems[i].qty;
  }

  if (couponCode == "SAVE10") {
    total = total - total * 0.1;
  }

  return total;
}

async function fetchUserOrders(userId) {
  const res = fetch(`/api/orders?userId=${userId}`);
  const data = res.json();
  return data.orders;
}
gpt-5.6-luna (codex CLI · 에이전트 하네스) · 실행일 2026-09-24

주요 문제점은 다음과 같습니다.

  1. calculateDiscount
  • i <= cartItems.length는 마지막 반복에서 cartItems[cartItems.length]를 참조하므로 undefined.price 오류가 발생합니다.
  • cartItems가 배열인지, 각 항목의 price와 qty가 유효한 숫자인지 검증하지 않습니다.
  • couponCode == "SAVE10"은 느슨한 비교이므로 ===를 사용하는 것이 안전합니다.
  • 금액을 부동소수점으로 계산하면 통화 오차가 발생할 수 있습니다.
  • 할인 적용은 서버 측에서도 검증해야 합니다. 클라이언트 입력만 신뢰하면 가격 조작이 가능합니다.
  1. fetchUserOrders
  • fetch()를 await하지 않아 res가 Response 객체가 아니라 Promise가 됩니다.
  • res.json()도 await하지 않아 data 역시 Promise입니다.
  • HTTP 오류(404, 500 등)를 확인하지 않습니다.
  • userId를 URL에 직접 삽입하면 특수문자로 URL이 깨질 수 있으므로 인코딩해야 합니다.
  • 인증 및 권한 검증은 서버에서 반드시 수행해야 합니다.

수정 예시는 다음과 같습니다.

function calculateDiscount(cartItems, couponCode) {
  if (!Array.isArray(cartItems)) {
    throw new TypeError("cartItems must be an array");
  }

  let total = 0;

  for (const item of cartItems) {
    if (
      !Number.isFinite(item?.price) ||
      !Number.isFinite(item?.qty) ||
      item.price < 0 ||
      item.qty < 0
    ) {
      throw new TypeError("Invalid item price or quantity");
    }

    total += item.price * item.qty;
  }

  if (couponCode === "SAVE10") {
    total *= 0.9;
  }

  return Math.round(total * 100) / 100;
}

async function fetchUserOrders(userId) {
  const params = new URLSearchParams({
    userId: String(userId),
  });

  const res = await fetch(`/api/orders?${params}`);

  if (!res.ok) {
    throw new Error(`Failed to fetch orders: ${res.status}`);
  }

  const data = await res.json();
  return data.orders;
}

실제 결제 금액이라면 부동소수점 대신 정수 단위(예: 원 또는 센트)로 계산하고, 할인율과 최종 가격은 서버에서 재계산하는 것이 좋습니다.

같은 분류의 프롬프트

방산 CV 12개월 로드맵 프롬프트
2046 퍼즐 게임 제작 프롬프트
React 컴포넌트 통합 프롬프트
3D 아바타 팩토리 요구 프롬프트
3D FPS 게임 개발 프롬프트