정규 표현식(Regex)을 사용하여 코드를 혹평하는 도구를 만들었습니다 — AI는 전혀 사용하지 않았습니다
요약
AI가 생성한 코드의 유지보수 문제를 해결하기 위해 정규 표현식(Regex) 기반의 코드 리뷰 도구인 'Roast My Code'를 소개합니다. LLM 없이 클라이언트 측에서 정적 분석을 수행하여 빠르고 비용 효율적으로 코드의 품질을 점검합니다.
핵심 포인트
- AI 생성 코드로 인한 'AI 부채' 및 유지보수 비용 문제 지적
- LLM 대신 118개의 정규 표현식 패턴을 사용하여 속도와 비용 최적화
- 가독성, 구조, 에러 처리 등 5개 항목에 대한 점수 및 혹평 제공
- 클라이언트 측 실행 방식으로 데이터 보안 및 프라이버시 강화
문제점
2026년, 개발자들은 일주일에 11.4시간을 AI가 생성한 코드를 검토하는 데 소비합니다. 이는 코드를 직접 작성하는 시간보다 더 많은 시간입니다. 우리는 우리가 만든 AI 도구가 작성한 버그를 수정하느라 사이클을 낭비하고 있습니다. 저는 이를 "AI 부채 (AI debt)"라고 부르기 시작했습니다. 어시스턴트가 방금 내뱉은 코드를 실제로 아무도 읽지 않을 때 쌓이는 유지보수세(maintainability tax)를 의미합니다.
저는 PR(Pull Request)을 열기도 전에 파일에 얼마나 많은 부채가 숨어 있는지 확인할 수 있는 빠르고 잔혹한 방법을 원했습니다.
제가 만든 것
Roast My Code — 코드 스니펫을 붙여넣으면 AI 부채 점수(0–100)를 받고, 당신의 죄악에 대해 혹평(roast)을 듣게 됩니다.
- 8개 언어(JS/TS, Python, Go, Rust, Java, PHP, C++)에 걸친 118개의 정규 표현식(regex) 패턴
- 가독성(Readability), 구조(Structure), 에러 처리(Error Handling), 안전성(Safety), 스타일(Style)로 구분된 점수
- 코드 메트릭(Code metrics): 중첩 깊이(nesting depth), 중복률(duplication %), 주석 비율(comment ratio), 평균 줄 길이(avg line length)
- 세 가지 잔혹한 한 줄 혹평 + 발견된 각 문제에 대한 구체적인 수정 방법
반전: AI는 전혀 사용하지 않았습니다. API 호출도, LLM도, 백엔드도 없습니다. 모든 것은 정규 표현식(regex) 패턴 매칭을 통해 클라이언트 측(client-side)에서 실행됩니다. 당신의 코드는 브라우저를 절대 떠나지 않습니다.
왜 AI가 아니라 정규 표현식(regex)인가
솔직히 말하자면 — 아이러니 때문입니다. AI가 만든 쓰레기(slop)를 지적하기 위해 만든 도구가 그 자체로 GPT의 또 다른 래퍼(wrapper)가 되어서는 안 됩니다. 또한 정규 표현식(regex)은 그냥... 더 빠릅니다. API 지연 시간도, 비용도, 속도 제한(rate limits)도, "코드를 분석하는 동안 잠시 기다려 주세요"라는 스피너(spinner)도 없습니다. 붙여넣기만 하면 1초도 안 되어 혹평을 받습니다.
적절한 린터(linter)나 LLM 코드 리뷰어가 잡아낼 수 있는 모든 것을 잡아내지는 못할 것입니다. 그게 핵심이 아닙니다. 이것은 정적 분석 스위트(static analysis suite)가 아니라, 직관적인 점검(gut-check) 도구입니다.
혹평 맛보기
javascript
var API_KEY = "sk_live_51H8xJ2kL9mNpQrStUvWxYz...";
if (a == 1) {
if (b == 2) {
if (c == 3) {
x = eval(a + b + c);
}
}
}
🔒 저게 하드코딩된 자격 증명(credential)인가요? 2026년에 말이죠? 대화가 좀 필요해 보이네요. 당신의 팀원이 일요일에 이걸 다시 작성했습니다. 수정 방법(FIX): 환경 변수(environment variable)나 비밀 저장소(secret store)로 옮긴 다음, 자격 증명을 교체(rotate)하세요.
🎆 eval(). 더 말할 필요도 없겠죠. 당신이 뭘 했는지 알 겁니다. 이건 리뷰어들이 대충 훑고 지나가는 부분입니다. 수정 방법(FIX): eval을 룩업 테이블(lookup table), JSON.parse, 또는 명시적인 파서(explicit parser)로 교체하세요.
한번 시도해보세요
🔗 라이브 앱 💻 GitHub 소스 — MIT 라이선스, PR 환영
당신의 최악의 코드를 붙여넣고 어떤 결과가 나오는지 확인해보세요. 그 참혹한 결과물을 스크린샷으로 찍어 공유하고, 울고 있지 않은 척해보세요.
피드백을 환영합니다 — 특히 누락된 규칙이나, 작동하지 않아야 할 상황에서 작동하는 규칙에 대한 의견을 기다립니다.
GitHub: https://github.com/adamyasingh-05/roast-my-code
라이브 앱 (Lovable): https://easy-link-free.lovable.app
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기