45/ 50
+ 핵심 오류와 수정안을 가장 간결하고 정확하게 제시했다.
- 요구된 ${code} 기반 재사용 프롬프트를 제시하지 않았다.
검토할 코드를 넣으면 논리, 문법, 런타임 오류와 성능·보안 관점의 잠재 문제, 가능한 수정 제안을 간결히 받습니다.
| 분류 | 개발 › 코딩 |
|---|---|
| 태그 | 검토분석개발자코드템플릿 |
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는 재사용 템플릿까지 충족했으나 다소 길고 수정 코드에 작은 결함이 있다.
+ 핵심 오류와 수정안을 가장 간결하고 정확하게 제시했다.
- 요구된 ${code} 기반 재사용 프롬프트를 제시하지 않았다.
+ IDOR 등 보안 위험을 입력 코드에 맞춰 구체화했다.
- 쿠폰 객체 조회는 상속 키 입력 시 NaN을 만들 수 있다.
+ 원본 오류부터 재사용 템플릿까지 폭넓게 다뤘다.
- 설명이 장황하고 잘못된 입력을 0으로 숨기는 수정안이 아쉽다.
| 기준 | ChatGPT | Claude | Gemini | 앞선 모델 |
|---|---|---|---|---|
| 지시 준수 | 8 | 10 | 10 | 동점 |
| 정확성 | 9 | 8 | 8 | ChatGPT +13% |
| 구체성 | 9 | 10 | 9 | Claude +11% |
| 구성·가독성 | 9 | 9 | 8 | 동점 |
| 분량 적정성 | 10 | 7 | 7 | ChatGPT +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;
}주요 문제점은 다음과 같습니다.
calculateDiscounti <= cartItems.length는 마지막 반복에서 cartItems[cartItems.length]를 참조하므로 undefined.price 오류가 발생합니다.cartItems가 배열인지, 각 항목의 price와 qty가 유효한 숫자인지 검증하지 않습니다.couponCode == "SAVE10"은 느슨한 비교이므로 ===를 사용하는 것이 안전합니다.fetchUserOrdersfetch()를 await하지 않아 res가 Response 객체가 아니라 Promise가 됩니다.res.json()도 await하지 않아 data 역시 Promise입니다.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 게임 개발 프롬프트 |