오류 처리 안티패턴 규칙 Claude-Mem 코드베이스
Source: Dev.to
프로세스
-
탐지기 실행
# command to run the detector (example) -
결과 분석
CRITICAL,HIGH,MEDIUM,APPROVED_OVERRIDE이슈를 각각 카운트- 먼저 중요한 경로에 있는
CRITICAL이슈를 우선 처리 - 유사한 패턴끼리 그룹화
-
각
CRITICAL이슈에 대해a. Read 도구를 사용해 문제 코드를 읽음
b. 문제 설명
- 왜 위험한가?
- 어떤 디버깅 악몽을 초래할 수 있는가?
- 어떤 구체적인 오류가 무시되고 있는가?
c. 올바른 수정 방안 결정
- 옵션 1: 적절한 로깅 추가 – 실제 오류이며 가시화가 필요할 경우
- 옵션 2:
[APPROVED OVERRIDE]추가 – 기대되거나 문서화된 동작일 경우 - 옵션 3: try‑catch 전체 삭제 – 오류가 전파되어야 할 경우
- 옵션 4: 특정 오류 타입 검사 추가 – 특정 오류만 잡아야 할 경우
d. 수정 제안 및 승인 요청
e. 승인 후 수정 적용
-
문제들을 체계적으로 해결
- 한 번에 하나씩 수정
- 각 수정 배치 후 탐지기 재실행
- 진행 상황 추적, 예: “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 를 참고하세요.