오류 처리 안티패턴 규칙 Claude-Mem 코드베이스

발행: (2026년 1월 13일 오전 12:30 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

프로세스

  1. 탐지기 실행

    # command to run the detector (example)
  2. 결과 분석

    • CRITICAL, HIGH, MEDIUM, APPROVED_OVERRIDE 이슈를 각각 카운트
    • 먼저 중요한 경로에 있는 CRITICAL 이슈를 우선 처리
    • 유사한 패턴끼리 그룹화
  3. CRITICAL 이슈에 대해

    a. Read 도구를 사용해 문제 코드를 읽음

    b. 문제 설명

    • 왜 위험한가?
    • 어떤 디버깅 악몽을 초래할 수 있는가?
    • 어떤 구체적인 오류가 무시되고 있는가?

    c. 올바른 수정 방안 결정

    • 옵션 1: 적절한 로깅 추가 – 실제 오류이며 가시화가 필요할 경우
    • 옵션 2: [APPROVED OVERRIDE] 추가 – 기대되거나 문서화된 동작일 경우
    • 옵션 3: try‑catch 전체 삭제 – 오류가 전파되어야 할 경우
    • 옵션 4: 특정 오류 타입 검사 추가 – 특정 오류만 잡아야 할 경우

    d. 수정 제안 및 승인 요청

    e. 승인 후 수정 적용

  4. 문제들을 체계적으로 해결

    • 한 번에 하나씩 수정
    • 각 수정 배치 후 탐지기 재실행
    • 진행 상황 추적, 예: “Fixed 3/28 critical issues”

Detect‑error‑handling‑antipatterns 스크립트

detect-error-handling-antipatterns.ts 스크립트(≈ 514 LOC)는 안티패턴을 찾기 위한 여러 함수를 정의합니다.
detectAntiPatterns 함수에서는 정규식을 사용해 문제 있는 오류 처리를 찾아냅니다. 예시:

// Example regex patterns
/,\\s(?:error|err|e).message\\s*)/,
{\\s(?:error|err|e):\\s*(?:error|err|e).message\\s*}/,
][^'"]+['"`]\\s*,\\s*(?:error|err|e).message\\s*)/

이 패턴들은 다음과 같이 적용됩니다:

for (const pattern of partialErrorLoggingPatterns) {
  if (pattern.test(trimmed)) {
    if (hasOverride && overrideReason) {
      antiPatterns.push({
        file: relPath,
        line: i + 1,
        // …
      });
    }
  }
}

다른 패턴 집합:

'"`['"]\\s*\\)/i,
](\\w+)['"]\\s*\\)/i,
](\\w+)['"`]\\s*)/i,

정규식 vs. AST

복잡한 JavaScript 코드의 경우 정규식보다 추상 구문 트리(AST)를 활용하는 것이 더 신뢰성 있는 탐지를 제공할 수 있습니다. 관련 논의는 AST on Stack Overflow 를 참고하세요.

참고 자료

Back to Blog

관련 글

더 보기 »

Logger 모듈을 사용한 FastAPI 기본 로깅

Application이 Production에서 충돌할 때 Production에서 애플리케이션이 충돌했으며 사용자는 다음에 무엇을 해야 할지 확신하지 못했습니다. 나는 작년에 이와 같은 상황을 프로젝트에서 경험했습니다.