ast-grep의 개요
ast-grep은 텍스트가 아니라 구조로 코드를 찾습니다. `$A && $A()`처럼 평범한 코드처럼 보이는 패턴을, 바뀌는 부분은 자리표시자로 두고 쓰면 공백이나 변수 이름과 상관없이 그 모양 을 가진 모든 곳을 코드베이스에서 찾아냅니다. 같은 패턴으로 YAML 린트 규칙(`ast-grep scan`), 규칙 테스트, 재작성을 실행하며, 재작성은 한꺼번에 또는 `--interactive`로 하나씩 적용할 수 있습니다. 파싱에는 tree-sitter를 쓰고 Bash와 C부터 TypeScript와 Zig까지 28개 언어를 기본 지원합니다.
Herrington Darkholme이 이끄는 이 프로젝트는 MIT 라이선스이고 Rust로 작성되었으며 GitHub 스타는 약 16,600개입니다. 릴리스 0.51.2는 2026년 11월 11일에 나왔습니다. Homebrew, npm, pip, cargo, MacPorts, Nix로 설치할 수 있고 JavaScript, Python, WebAssembly API, 편집기용 언어 서버, JSON 출력 모드도 제공합니다. 코딩 에이전트를 위해서는 `outline` 명령(0.44.0부터 알파 프리뷰), 공식 에이전트 스킬, 실험적 MCP 서버가 있습니다.
ast-grep, 쓸 만한 가치가 있습니까?
대부분의 리팩터링에서 텍스트 검색은 맞지 않는 도구이고, 에이전트는 사람보다 더 빨리 그 실수를 합니다. 함수 호출을 바꾸는 정규식은 주석, 문자열, 우연히 이름이 같은 변수 속 같은 단어까지 바꿉니다. ast-grep은 먼저 파일을 파싱하므로 패턴은 그 모양의 실제 코드에만 일치합니다. 그래서 에이전트 구성에서 흔한 의존성이 되었습니다. npm은 2026년 11월 12일까지 30일 동안 @ast-grep/cli 다운로드를 약 960만 건으로 집계했는데, 이 수치에는 CI와 전이적 설치가 포함되며 사람이 직접 명령을 친 횟수만은 아닙니다.
설계는 패턴을 읽기 쉽게 유지합니다. 질의 언어를 배우는 대신 메타변수가 들어간 코드를 쓰고, 패턴만으로 부족할 때 YAML 규칙(inside, has, not, any)을 더합니다. 규칙에는 수정안, 심각도, 테스트를 붙일 수 있어 일회성 검색이 프로젝트 린터가 됩니다. 릴리스 주기는 꾸 준해 0.51.1이 11월 2일, 0.51.2가 그로부터 9일 뒤에 나왔고, 기록에는 100명이 넘는 기여자가 있습니다.
주의할 점: 구문만 봅니다. FAQ는 스코프, 타입, 제어 흐름, 데이터 흐름, taint 분석이 없다고 분명히 밝힙니다. 따라서 특정 타입의 변수를 찾거나 사용자 입력을 데이터베이스 호출까지 추적할 수 없습니다. 그런 보안 규칙에는 Semgrep이나 CodeQL이 더 멀리 갑니다. 패턴은 tree-sitter가 파싱할 수 있는 코드여야 해서 단독 JSON 키 같은 조각에서 막히기 쉽고, Linux에서는 짧은 별칭 `sg`가 시스템의 setgroups 명령과 충돌합니다. MCP 서버는 실험적이라고 표시되어 있고 Python과 uv로 실행되므로, 대부분의 에이전트에는 CLI와 스킬이 더 낫습니다.
결론: ast-grep은 함수 호출이 어디서 시작하고 끝나는지 아는 grep이라고 보면 됩니다. 모양이 있는 검색과 재작성은 모두 에이전트에게 맡기고, 의미에 관한 질문에는 타입을 이해하는 도구를 남겨 두는 편이 맞습니다.
제 역할을 하는 곳
대규모 TypeScript 모노레포를 맡은 플랫폼 엔지니어
주석이나 문자열은 건드리지 않고 폐기 예정 로깅 호출을 모두 교체
수정안이 붙은 패턴 하나를 쓰고 `ast-grep run --interactive`로 확인한 뒤 트리 전체에 적용합니다. 대부분의 저장소에서 로컬로 몇 초 만에 끝나고 비용이 없습니다. 타입에 의존하는 부분은 여전히 컴파일러가 필요합니다.
CI에서 사내 규칙을 강제하는 테크 리드
내부 API를 잘못 호출하는 새 코드를 막기
sgconfig.yml 프로젝트에 YAML 규칙을 추가하고 각각 테스트 케이스를 붙인 뒤 파이프라인에서 `ast-grep scan`을 실행합니다. 규칙은 저장소에 있고 코드처럼 리뷰되며 라이선스 비용이 없습니다.
낯선 코드베이스에서 Claude Code를 쓰는 개발자
에이전트가 정규식 대신 구조로 코드를 찾고 편집하게 하기
CLI와 공식 스킬을 설치해 에이전트가 ast-grep 규칙을 쓰게 하고, 파일 전체를 읽기 전에 `ast-grep outline`으로 심볼 목록을 보게 합니다. 엉뚱한 편집이 줄어듭니다. outline은 아직 알파 프리뷰입니다.
도입 전 확인할 점
- 설정
- `brew install ast-grep`, `npm i @ast-grep/cli -g`, `pip install ast-grep-cli`, `cargo install ast-grep --locked` 중 하나로 설치하며 첫 검색까지 1분 정도 걸립니다. `ast-grep new`로 규칙 프로젝트 골격을 만듭니다.
- 연동
- 28개 내장 언어와 tree-sitter를 통한 사용자 언어, VS Code 등 편집기용 언어 서버, JSON 출력, JavaScript(napi), Python, WebAssembly API, 온라인 playground, ast-grep/agent-skill 플러그인, 실험적 ast-grep-mcp 서버.
- 데이터와 개인정보
- 모두 사용자 컴퓨터에서 로컬 파일을 대상으로 실행되며 계정이나 네트워크 서비스가 관여하지 않습니다. MIT 라이선스입니다.
- 대규모 사용 시 비용
- 무료이며 유료 등급이 없습니다. 메인테이너는 GitHub Sponsors를 받습니다. 대규모에서의 실제 비용은 규칙을 쓰고 테스트하는 일입니다.
- 제한
- 구문만 다루며 타입, 스코프, 제어 흐름, 데이터 흐름, taint 분석은 없습니다. 패턴은 파싱 가능한 코드여야 합니다. `outline`은 알파 프리뷰라 지원 언어가 바뀔 수 있습니다. 마지막 확인 시점에 열린 issue와 pull request는 약 46개입니다.
좋은 점
- 자리표시자가 있는 평범한 코드로 패턴을 작성
- tree-sitter 기반 28개 내장 언어
- 검색, 테스트가 딸린 린트 규칙, 재작성을 하나의 바이너리로
- JavaScript, Python, WebAssembly API와 언어 서버
아쉬운 점
- 타입, 스코프, 데이터 흐름 분석 없음
- 패턴이 유효한 코드여야 해서 처음 쓰는 사람이 헷갈림
- 별칭 `sg`가 Linux 시스템 명령과 충돌
- MCP 서버는 아직 실험적
추천 대상
컴파일러 플러그인을 작성하지 않고 큰 코드베이스에서 정확하고 반복 가능한 검색과 codemod가 필요한 개발자와 코딩 에이전트.
ast-grep 대안
ast-grep: 자주 묻는 질문
- ast-grep, 쓸 만한 가치가 있습니까?
- ast-grep은 코딩 에이전트가 sed에 손대기 전에 쥐여 줄 구조 검색 도구입니다. 단, 구문 일치를 의미 분석으로 착각하지 않는다는 전제에서입니다. 평점은 5점 만점에 4.5점입니다.
- ast-grep의 가격은 얼마입니까?
- 무료 오픈 소스(MIT)입니다.
- ast-grep의 단점은 무엇입니까?
- 타입, 스코프, 데이터 흐름 분석 없음; 패턴이 유효한 코드여야 해서 처음 쓰는 사람이 헷갈림; 별칭 `sg`가 Linux 시스템 명령과 충돌; MCP 서버는 아직 실험적.
- ast-grep에 적합한 사람은 누구입니까?
- 컴파일러 플러그인을 작성하지 않고 큰 코드베이스에서 정확하고 반복 가능한 검색과 codemod가 필요한 개발자와 코딩 에이전트.
- 팀이나 프로덕션 환경에서 ast-grep의 비용은 얼마입니까?
- 무료이며 유료 등급이 없습니다. 메인테이너는 GitHub Sponsors를 받습니다. 대규모에서의 실제 비용은 규칙을 쓰고 테스트하는 일입니다.
- ast-grep에 회사 데이터를 맡겨도 안전합니까?
- 모두 사용자 컴퓨터에서 로컬 파일을 대상으로 실행되며 계정이나 네트워크 서비스가 관여하지 않습니다. MIT 라이선스입니다.
- ast-grep의 가장 좋은 대안은 무엇입니까?
- 저희가 리뷰한 것 중 가장 가까운 대안은 grepai, Repowise 및 jevgrep입니다.
답변 확인일: 2026년 11월 13일.