dev.to에 오신 것을 환영합니다! 👋
급하게 커밋을 푸시했다가 나중에 심각한 보안 결함이나 사소한 버그를 도입했다는 사실을 깨달은 적이 있나요? 우리 모두 그런 경험이 있습니다. '앗, 다음 커밋에서 고칠게'라는 순환 고리는 개발자에게 일종의 통과 의례와 같습니다.
만약 푸시하기 전에 시니어 개발자가 어깨 너머로 지켜봐 준다면 어떨까요?
이것이 바로 제가 Git Diff Reviewer를 만든 이유입니다. 이 도구는 CLI(Command Line Interface) 형태로, 사용자의 Git 워크플로우에 직접 통합됩니다. 커밋할 때마다 자동으로 diff를 추출하고, 이를 LLM (Gemini, OpenRouter, Groq 또는 로컬 Ollama)으로 전송하여 터미널에서 구조화된 리뷰를 제공합니다.
작동 방식과 설정 방법을 자세히 살펴보겠습니다!
🛠️ Git Diff Reviewer란 무엇인가?
Git Diff Reviewer는 개인 AI 코드 리뷰어 역할을 하는 pre-commit hook입니다. CI/CD가 실패하거나 팀원이 버그를 발견하기를 기다릴 필요 없이, 즉각적인 피드백을 받을 수 있습니다.
주요 기능
- 다중 제공업체 지원 (Multi-Provider Support): 심층적인 기능을 위한 Gemini, 초저지연성을 위한 Groq, 유연성을 위한 OpenRouter, 또는 100% 로컬 프라이버시를 위한 Ollama.
- 엄격한 리뷰 분류 체계 (Strict Review Taxonomy): 단순히
3. 의존성 설치 (Install dependencies)
pip install -r requirements.txt
4. 환경 변수 설정 (Set up environment variables)
예제 파일을 복사하고 API 키를 추가하세요:
.env 파일을 열고 사용하려는 제공업체(예: Gemini)를 구성하세요:
LLM_PROVIDER=gemini
GEMINI_API_KEY=your_api_key_here
💡 전문가 팁 (Pro tip): 개인 정보 보호를 100% 원한다면, LLM_PROVIDER=ollama로 설정하고 로컬 모델을 실행하세요!
5. Git 훅 설치 (Install the Git hook)
python main.py --install-hook
이것으로 끝입니다! 이제 커밋할 때마다 AI가 코드를 검토해 줄 것입니다.
💻 실제 사용 예시 (Real-World Example)
다음과 같이 코드를 작성했다고 상상해 보세요:
# auth.py
def get_user(user_id):
query = f"SELECT * FROM users WHERE id = {user_id}"
...
커밋하면 AI가 즉시 이를 감지합니다:
=== AI 코드 리뷰 ===
[CRITICAL] SQL Injection 취약점 감지됨
...
이것은 버그가 프로덕션에 도달하기 전에 잡아줍니다. 🛑
⚠️ 솔직한 한계점 (Honest Limitations)
실제 보안 엔지니어들은 과장된 홍보보다는 정직함을 존중합니다. 따라서 이 도구가 할 수 없는 것들은 다음과 같습니다:
- LLM 환각 (LLM hallucinations): AI는 때때로 잘못된 양성(false positives)을 제공할 수 있습니다. 이를 절대적인 진실이 아닌 '두 번째 눈'으로 간주하세요.
- 컨텍스트 창 제한 (Context window limits): 극도로 큰 diff는 모델의 컨텍스트 창을 초과할 수 있습니다.
- 오프라인 제한 (Offline limitation): 로컬 Ollama 모델을 사용하지 않는 한, 인터넷 연결이 필요합니다.
🔮 다음 계획은? (Roadmap)
저는 이제 막 시작하는 단계입니다. v2에서는 다음과 같은 기능을 계획하고 있습니다:
🤝 여러분의 차례, dev.to!
이 프로젝트가 유용하다고 생각되면 GitHub에서 별점(Star)을 부여해 주세요! ⭐
코드를 푸시하기 전에 Git diff를 실행하여, LLM을 사용하여 코드 변경 사항을 검토하거나 비판하고 나쁜 관행을 잡아내는 자동화된 터미널 도구입니다.
Git Diff Reviewer
로컬 git diff를 검사하고 선택한 LLM 제공업체로 전송하여 자동화되고 높은 수준의 보안 및 코드 품질 검토를 수행하는 모듈식, 터미널 기반 CLI 도구입니다.
🌟 주요 기능
- 다중 공급자 지원 (Multi-Provider Support): OpenRouter, Google Gemini, Groq, 그리고 로컬 Ollama 모델 간에 원활하게 전환할 수 있습니다.
- 유연한 Diff 대상: 스테이징된 변경 사항(
--staged), 스테이징되지 않은 변경 사항(--unstaged), 또는 특정 브랜치/커밋 대비 diff를 검토할 수 있습니다 (--branch main).
- 대화형 모드 (Interactive Mode): 필요에 따라 diff 대상과 공급자를 선택하기 위한 안내 터미널 프롬프트가 제공됩니다.
- 엄격한 검토 분류법 (Strict Review Taxonomy): 심각한 버그(Critical Bugs), 보안 취약점(Security Vulnerabilities) (OWASP/CWE/Secret leaks), 안티패턴(Anti-patterns), 성능 병목 현상(Performance Bottlenecks)을 식별하고 실행 가능한 전/후 코드 스니펫으로 강조 표시합니다.
- 풍부한 터미널 렌더링: 터미널 내에서 포맷된 마크다운 및 색상화 패널이 제공됩니다.
- 안전한 자르기 (Safe Truncation): LLM 토큰 컨텍스트 오버플로우를 방지하기 위해 대용량 diff를 자동으로 관리합니다.
- 마크다운으로 내보내기 (Export to Markdown): 검토 결과를 풀 리퀘스트 댓글 등에 직접
.md 파일로 저장할 수 있습니다…
View on GitHub
작동을 망가뜨리고, 퍼즈(fuzz)하며, 버그를 발견하면 이슈를 열어주세요. 저는 모든 이슈를 읽겠습니다.
v2에서 어떤 기능을 보고 싶은지 댓글로 알려주세요!