지저분한 코드를 수정하기 위한 바이브 코딩용 코드 품질 분석기
Code quality analyzer for vibe coding to fix messy code
핵심 요약
코드베이스의 구조, 이력, 복잡도를 분석해 AI 에이전트가 더 나은 코드를 작성하도록 돕는 도구 'Repowise' 소개.
- 코드 품질 분석 — AST와 Git 이력을 활용해 코드의 구조적 문제와 유지보수 난이도를 정량적으로 평가함
- 결정론적 점수 산출 — LLM 호출 없이 25가지 지표를 통해 일관된 코드 건강 점수를 제공함
- 에이전트 최적화 — MCP 도구를 통해 AI 에이전트가 수정 전 코드의 핫스팟을 미리 파악하도록 지원함
- 기존 도구 차별화 — SonarQube와 달리 Git 이력과 변경 패턴을 분석하여 실제 결함 발생 가능성을 예측함
Claude Code, Cursor, Codex를 사용하다 보면 기능은 잘 돌아가고 테스트도 통과하는데, 코드베이스는 여전히 지저분하다고 느껴본 적 있을 거야.
Skill 파일로는 해결이 안 돼. 그건 한 번 적어둔 규칙을 담고 있을 뿐이라 코드가 바뀌면 금방 구식이 되거든. 에이전트한테 이 파일이 매번 다른 파일 3개와 함께 바뀐다거나, 수정하려는 파일의 작성자가 한 명뿐이고 테스트 커버리지도 없다거나, 같은 코드가 이미 다른 곳에 두 번이나 존재한다는 사실을 알려줄 수 없어. 그런 정보는 md 파일이 아니라 Git 이력과 AST에 들어있거든.
그래서 내가 Repowise를 만들었어. 레포를 한 번 인덱싱하고 나면 그 위에 5가지 레이어를 유지해. Tree-sitter AST 기반의 심볼 및 의존성 그래프, Git 이력, 자동 생성 문서, 아키텍처 결정 사항, 그리고 코드 건강 상태가 그것들이지.
코드 건강은 가장 깊은 레이어야. LLM 호출 없이 25개의 결정론적 지표를 사용해 각 파일에 1~10점의 점수를 매기기 때문에, 같은 입력에는 항상 같은 점수가 나와.
지표가 다루는 범위:
- 구조적: 순환 복잡도(cyclomatic complexity), 인지 복잡도, 중첩 깊이, 결합도
- 중복: AST 기반의 트리 편집 거리(tree edit distance), 클러스터링
- 이력: 코드 변경 빈도(churn), 동시 변경 산포도, 버스 팩터(bus factor), 핫스팟 감쇠
- 커버리지: 위험 표면과 결합된 테스트 커버리지
- 가독성: 명명 규칙, 함수 길이, 매개변수 개수
검증 방법: 과거 특정 커밋 시점의 모든 파일 점수를 매기고, Git 이력을 따라가며 실제로 결함 수정 커밋이 발생한 파일을 확인했어. 21개 레포지토리에 걸쳐 ROC AUC 0.74를 기록했지. 같은 리뷰 예산으로 동일한 데이터셋에 CodeScene을 돌렸을 때, Repowise가 2.3배 더 많은 결함을 찾아냈어.
이 모든 정보는 훅과 10개의 MCP 도구를 통해 제공되니까, 에이전트가 파일을 수정한 '후'가 아니라 '전'에 핫스팟을 미리 읽어볼 수 있어.
Repo: https://github.com/repowise-dev/repowise
Python과 TypeScript 코어, 파싱을 위한 tree-sitter 사용, 별 4.5k개, PyPI 다운로드 약 6만 회.


