Contents
see List작성일 2025. 11. 30.
AI 코드 리뷰 자동화 - GitHub Actions와 LLM 연동
GitHub Actions와 LLM을 연동하여 Pull Request 코드 리뷰를 자동화하면 코드 품질 향상과 리뷰 시간 단축을 동시에 달성할 수 있습니다.
언제 사용하나요?
- PR 코드 리뷰 자동화
- 코드 품질 일관성 유지
- 시니어 개발자 리뷰 부담 감소
- 24시간 즉시 피드백 제공
- 보안 취약점 자동 검출
아키텍처
PR 생성/업데이트
│
▼
GitHub Actions 트리거
│
▼
변경된 코드 추출 (git diff)
│
▼
LLM API 호출 (OpenAI/Claude)
│
▼
PR 코멘트로 리뷰 결과 게시GitHub Actions 워크플로우
# .github/workflows/ai-code-review.yml
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get changed files
id: changed
run: |
git diff origin/${{ github.base_ref }}...HEAD --name-only > changed_files.txt
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: pip install openai PyGithub
- name: Run AI Review
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: python .github/scripts/ai_review.py리뷰 스크립트 (Python)
# .github/scripts/ai_review.py
import os
from openai import OpenAI
from github import Github
client = OpenAI()
gh = Github(os.environ["GITHUB_TOKEN"])
# 변경된 파일 읽기
with open("changed_files.txt") as f:
files = f.read().splitlines()
# 각 파일 리뷰
for file_path in files:
if not file_path.endswith((".py", ".js", ".java")):
continue
diff = os.popen(f"git diff origin/main...HEAD -- {file_path}").read()
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": """
당신은 시니어 개발자입니다. 코드 리뷰를 수행하세요.
- 버그 가능성
- 보안 취약점
- 성능 이슈
- 코드 스타일
간결하게 핵심만 지적하세요.
"""},
{"role": "user", "content": f"파일: {file_path}
{diff}"}
]
)
review = response.choices[0].message.content
# PR에 코멘트 게시
repo = gh.get_repo(os.environ["GITHUB_REPOSITORY"])
pr = repo.get_pull(int(os.environ["PR_NUMBER"]))
pr.create_issue_comment(f"## AI 코드 리뷰: {file_path}
{review}")프롬프트 엔지니어링 팁
# 효과적인 리뷰 프롬프트
system_prompt = """
당신은 10년차 시니어 개발자입니다.
리뷰 기준:
1. [심각] 버그, 보안 취약점 - 반드시 수정 필요
2. [권장] 성능 개선, 가독성 - 수정 권장
3. [제안] 스타일, 컨벤션 - 선택적 개선
출력 형식:
- 라인 번호와 함께 지적
- 수정 제안 코드 포함
- 칭찬할 점도 언급
"""기존 도구 활용
| 도구 | 특징 |
|---|---|
| CodeRabbit | SaaS, 즉시 사용 가능 |
| PR-Agent | 오픈소스, 커스터마이징 |
| Sourcery | Python 특화 |
| Amazon CodeGuru | AWS 통합 |
비용 최적화
- 변경된 파일만 리뷰 (전체 X)
- 테스트 파일 제외
- gpt-4o-mini로 1차 필터링
- 심각한 이슈만 gpt-4o로 재분석
주의사항
- 민감한 코드는 self-hosted LLM 사용
- AI 리뷰는 보조 수단, 최종 판단은 사람
- 오탐(False Positive) 관리 필요
ai
| No | 작성일 | Title |
|---|---|---|
| 3376 | 2026. 08. 19. | MCP 도구를 안전하게 연결하는 방법: 권한 분리·입력 검증·감사 로그 설계 |
| 3344 | 2026. 08. 10. | RAG 검색 품질 높이는 방법: 청크 분할·메타데이터·재순위화 실전 설계 |
| 3312 | 2026. 08. 02. | LLM 서비스 응답 품질을 안정화하는 구조화 출력과 검증 파이프라인 |
| 3280 | 2026. 07. 25. | MCP 서버 운영 가이드: 권한 범위와 입력 스키마로 AI 도구 호출 통제하기 |
| 3251 | 2026. 07. 17. | RAG 검색 품질 높이는 실전 설계: 청킹·메타데이터·하이브리드 검색 적용법 |
| 3198 | 2026. 07. 08. | LLM 도구 호출 안전 설계: 입력 검증, 승인 단계, 실행 로그 만들기 |
| 3165 | 2026. 06. 30. | LLM 답변 품질 평가 운영 가이드: 골든셋과 자동 채점으로 회귀를 막기 |
| 3109 | 2026. 06. 22. | RAG 검색 품질을 높이는 문서 청킹과 메타데이터 설계 가이드 |
| 3051 | 2026. 06. 14. | AI 에이전트 도구 호출 운영 가이드: 권한, 타임아웃, 재시도 설계 |
| 2964 | 2026. 06. 06. | LLM 응답 품질 평가 자동화: 테스트셋과 회귀 점검으로 답변 흔들림 줄이기 |