피드로 돌아가기
Dev.toBackend
원문 읽기
AST 파싱 기반 colref 도입으로 DB 컬럼 참조 검색 노이즈 99% 제거
grep Said 1,202. The Real Answer Was 10. — Introducing colref
AI 요약
Context
텍스트 기반 grep 검색 방식은 파일 확장자, 주석, 문자열 리터럴을 구분하지 못해 과도한 False Positive 발생. DB 컬럼 삭제 시 수천 개의 검색 결과 중 실제 참조를 수동으로 필터링해야 하는 운영 효율성 저하 문제 직면.
Technical Solution
- 소스 코드를 Abstract Syntax Tree(AST)로 파싱하여 단순 텍스트가 아닌 Attribute-access 노드만 추출하는 구조 설계
- ORM Schema 분석 레이어를 추가하여 파싱된 필드 이름이 실제 대상 모델에 존재하는지 검증하는 Disambiguation 과정 수행
- Django의 models.py 및 Rails의 schema.rb를 분석하여 모델-필드 간의 매핑 정보를 사전 로드하는 메커니즘 구축
- String literal, Comment, Docstring 등 실행 코드와 무관한 노드를 AST Walker 단계에서 원천 배제하는 필터링 적용
- Rails 프로젝트의 schema.rb 부재 상황을 대비한 Migration Replay 방식의 스키마 복구 로직 구현
Impact
- Wagtail 프로젝트 기준 검색 결과 1,202건에서 실제 참조 10건으로 정밀도 향상
- Signal-to-Noise Ratio를 약 1%에서 100% 수준으로 개선
- Mastodon(.domain) 및 Zulip(.name) 등 대규모 OSS 프로젝트에서 텍스트 노이즈 제거 검증 완료
실천 포인트
1. 코드 분석 도구 설계 시 정규표현식 기반 검색보다 AST 파싱을 통한 구문 분석 우선 검토
2. 도메인 지식(ORM Schema)을 분석 레이어에 결합하여 타입 추론 및 식별자 모호성 해결
3. Implicit Self와 같은 엣지 케이스를 식별하여 Receiver-aware Pass 등의 고도화 전략 수립