한 줄 정의

소스 코드를 수정하기 전후에 발생할 수 있는 잠재적 파급 효과와 의존 관계를 파악하기 위해, 구문 분석(tree-sitter)으로 컴파일된 코드 그래프를 조회하여 직접 및 간접 영향도를 정밀하게 추적하는 프로세스이다.

핵심 요지

  • 기존 키워드 매칭(Grep) 극복: 단순 텍스트 매칭이 포착하지 못하는 2단계 이상의 간접 의존성 및 호출 흐름을 정확히 식별한다.
  • 안드레이 카파시의 지식 컴파일과의 연계: 매 쿼리마다 전체 코드베이스를 새로 탐색하는 대신, 사전 컴파일된 SQLite 기반의 코드 위키 구조에 직접 쿼리를 날려 탐색 비용을 절감한다.
  • 코딩 에이전트 인지적 비용 최소화: 수정한 코드로 인해 영향받는 핵심 내용만 정제하여 조회하므로, 불필요한 파일을 읽는 LLM 컨텍스트 소비를 98% 이상 절감하여 최적화한다.
  • 테스트 케이스 맵핑 및 위험도 점수 평가: 풀 리퀘스트(PR) 병합 전 단계에서 영향 범위(Blast Radius) 내의 구체적인 테스트 보장 상태 및 가중치 기반 위험도 점수(Risk Score)를 분석하여 개발 안전성을 극대화한다.

상세

코드 변경 영향 범위 분석은 코딩 에이전트와 개발자가 변경 작업을 수행할 때 소스 코드의 수정이 시스템의 다른 부분에 미칠 수 있는 충격과 부작용을 식별하는 일련의 작업이다. 전통적인 단순 텍스트 매칭 방식은 코드의 논리적 연결 관계를 인식하지 못하여 의존성을 누락하거나 무관한 텍스트 매칭을 대량으로 유발함으로써 컨텍스트 윈도우의 효율성을 떨어뜨린다.

  1. 정적 그래프를 활용한 영향 범위 파악:

    • tree-sitter 기반 파싱: 구문 분석기를 이용해 들여쓰기나 단순 어림짐작을 극복하고 함수의 경계를 정확히 구분한 뒤, 심볼을 노드(Node)로, 호출·임포트·상속 관계를 연결선(Edge)으로 식별한다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
    • SQLite를 이용한 로컬 컴파일: 외부 클라우드 통신이나 API 키 없이 로컬 PC에 SQLite 파일 하나로 관계 데이터를 보존하여 데이터 유출 위험이 없으며 추가 비용이 발생하지 않는다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
    • MCP(Model Context Protocol) 연동: 구축된 데이터베이스를 MCP 서버로 제공하여, 에이전트가 매 세션마다 파일을 처음부터 새로 파싱하고 읽을 필요 없이 그래프 정보를 고속으로 쿼리한다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
  2. 작업 주기별 도구 매칭 전략:

    • 코딩 및 설계 단계 (codegraph 활용): 빠른 인덱스 빌드 속도를 바탕으로 일상적인 함수 호출 관계 탐색과 간접 의존도 파악을 돕는다. 8,000개가 넘는 소스 파일을 지닌 오픈소스 OmniRoute 프로젝트 기준 인덱싱에 34초가 소요되며 디스크 용량은 약 325MB(원본 233MB 대비 약간 큰 수준)를 차지한다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
    • 병합 및 리뷰 단계 (code-review-graph 활용): 풀 리퀘스트(PR)를 올리기 직전, 의존성 관계 외에도 구체적인 테스트 케이스와의 맵핑 및 가중치 기반 위험도 점수(Risk Score)를 계산한다. OmniRoute 기준 빌드에 2분 25초가 걸리고 디스크 용량은 1.4GB를 차지하여 codegraph보다 무겁지만 더 구체적인 단위의 리뷰 정보를 제공한다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).

예시

시나리오: OmniRoute 프로젝트의 classifyRoute 함수 수정 영향 범위 분석

사용자 권한 부여 파이프라인 깊숙이 위치한 핵심 인증 함수인 classifyRoute를 수정하고 그 파급 범위를 파악하는 시나리오이다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).

  1. 기존 grep 검색 방식의 한계:

    • “classifyRoute” 텍스트를 검색하면 파일 3개에서 17개의 매칭 결과를 찾지만, 해당 함수를 직접 호출하지 않는 proxy.ts 파일은 탐지하지 못한다.
    • proxy.ts는 중간 매개 함수인 runAuthzPipeline을 통해 classifyRoute와 2단계 간접 의존성으로 연결되어 있기 때문에 단순 키워드 매칭으로는 검출할 수 없다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
  2. codegraph를 활용한 간접 의존성 분석:

    • 에이전트가 codegraph impact classifyRoute 명령을 실행한다.
    • 단 한 번의 호출로 344바이트 분량의 간결하고 정제된 답변이 반환되며, 직접 호출처와 2단계 거리에 위치한 proxy.ts까지 완벽하게 탐지한다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
    • 반환되는 컨텍스트의 데이터 크기는 매칭된 파일 전체를 직접 훑어보는 기존 RAG 방식 대비 **98.7%**나 감소하여 효율성을 보여준다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
  3. code-review-graph를 활용한 정밀 테스트 보장 및 위험도 검증:

    • code-review-graph를 통해 classifyRoute 영향 범위를 쿼리한다.
    • 단순 파일 단위 요약을 넘어, classifyRoute를 구동하는 구체적인 테스트 케이스 4개의 정확한 명칭과 코드 상의 시작/끝 라인 번호까지 정밀하게 확보한다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
    • 수정한 코드의 호출 빈도, 테스트 커버리지 유무, 보안 관련 키워드 일치 여부 등 6개 가중치 요인을 합산하고 상한선을 적용한 위험도 점수(Risk Score)를 도출하여, 특정 임계점 돌파 시 PR 병합을 보류(Gate)하는 등의 자동 제어 파이프라인을 구축한다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).

충돌

  • 자동 실시간 동기화 오작동: 코드 편집 도중 파일 저장 시 이전 파일의 해시 기준으로 인덱싱되어 예전 노드가 유지되거나 신규 노드가 누락되는 동기화 지연 문제가 보고되었다. 따라서 중대한 결정을 내리기 전에는 인덱스를 완전히 재구축(Rebuild)하는 편이 안전하다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
  • 매크로 중심 프로그래밍 언어의 파싱 결손: 전처리기 매크로 사용량이 높은 C 언어 등의 경우 tree-sitter가 매크로 구문을 명확하게 파싱하지 못해 의존성 그래프 상에 누락이나 공백이 발생한다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md).
  • 영향 범위 탐색의 허위 탐지(False Positive): code-review-graph가 의존성 하에 있다고 분류한 파일 10개 중 4개(40%)는 실제 동작 흐름 상 아무런 영향이 없는 잘못된 매칭이었다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md). 또한 광범위한 쿼리를 유도하면 596KB에 달하는 대용량 텍스트가 출력되며 영향받는 노드 5,264개 중 500개만 표시되고 나머지는 누락되는 현상이 확인되었다 (raw/Andrej Karpathy’s Fix for LLM Memory Works on Code Too.md). 따라서 그래프 분석 정보는 1차 의존성 필터링 도구로 사용해야 하며 개발자의 교차 검증이 필수적이다.

관련 노트

  • codegraph: 일상적인 코딩 및 의존성 식별에 강점을 지닌 SQLite 기반의 범용 코드 그래프 분석 도구.
  • code-review-graph: PR(Pull Request) 단계에서 구체적인 테스트 케이스 연계 및 위험 점수 산정에 특화된 도구.
  • 코드 위키: 코드베이스 구조를 파싱하여 지속적으로 질의 가능한 지식 구조로 관리하는 상위 설계 아키텍처.
  • 안드레이 카파시의 지식 컴파일: 질문할 때마다 매번 같은 문서를 일일이 검색하는 대신 사전에 단 한 번 구조적으로 컴파일하여 쿼리하는 상위 철학.
  • 코딩 에이전트: 코드 위키 및 영향 범위 분석 도구를 활용하여 인지적 비용을 최소화하고 의존성 누락 없이 수정 작업을 완수하는 LLM 기반 시스템.