Saya menambahkan AI code review ke alur kerja GitHub Actions saya enam bulan lalu, dan itu mengubah cara saya bekerja. Bukan dengan menggantikan ulasan manusia — saya sebagian besar adalah developer solo — tetapi dengan menangkap kategori masalah yang biasanya saya lewatkan dalam self-review.
Di 2025, pasar AI code review memiliki beberapa opsi matang: CodeRabbit, Sourcegraph Cody, GitHub Copilot Code Review (dalam beta), Amazon CodeGuru, dan setup kustom menggunakan API LLM langsung. Saya menggunakan setup kustom dengan Claude Sonnet — biaya sekitar $8-15/bulan berdasarkan volume PR saya.
Berdasarkan enam bulan penggunaan produksi, AI code review secara konsisten menangkap: kerentanan keamanan, celah penanganan error, antipattern performa, dan masalah keamanan tipe TypeScript. Ini secara konsisten melewatkan: kebenaran logika bisnis, kekhawatiran arsitektur, dan apa pun yang memerlukan pemahaman konteks domain.
Alur kerja: GitHub Action memicu pada peristiwa pull_request. Action mengambil diff PR menggunakan GitHub API, mengirim diff ke LLM dengan prompt review kode, dan memposting respons sebagai komentar PR menggunakan octokit. Seluruh alur kerja berjalan dalam 90 detik untuk PR tipikal dan biaya $0,20-0,50 per review.
AI Code Review — GitHub Actions Workflow
PR Opened / Updated
│
▼
┌───────────────────────────────────────┐
│ GitHub Action Triggered │
│ On: pull_request (opened, sync) │
└──────────────┬────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ Fetch PR Diff (GitHub API) │
│ Filter: skip generated files, │
│ skip lock files │
└──────────────┬────────────────────────┘
│
┌───────┴────────┐
▼ ▼
api/ middleware/ components/ utils/
(Claude Sonnet) (Claude Haiku)
│ │
└───────┬────────┘
▼
┌───────────────────────────────────────┐
│ LLM Review with structured prompt │
│ Returns JSON: [{ │
│ file, line, severity, │
│ category, description, suggestion │
│ }] │
└──────────────┬────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ Post PR Comment (octokit) │
│ CRITICAL → Block merge label │
│ MAJOR → Requires acknowledgment │
│ MINOR → Informational only │
└───────────────────────────────────────┘Keputusan rekayasa prompt terpenting untuk AI code review adalah spesifik tentang apa yang Anda inginkan model fokuskan. Saya menggunakan sistem keparahan bertingkat dalam prompt saya: kritis (kerentanan keamanan — selalu blokir PR), mayor (kesalahan logika — wajib komentar), dan minor (saran gaya — informatif saja).
Setelah banyak iterasi, prompt review saya memiliki: definisi peran, format output terstruktur (JSON dengan array temuan, setiap temuan memiliki file, baris, keparahan, kategori, deskripsi, saran), panduan eksplisit tentang apa yang diabaikan, dan pengingat untuk mengutip kode spesifik yang memicu setiap temuan.
PR besar (1.000+ baris berubah) dapat biaya $2-5 untuk direview sepenuhnya. Strategi: review hanya file yang berubah, lewati file yang dihasilkan otomatis, dan fokuskan review pada direktori paling kritis. File di api/ dan middleware/ mendapat review Claude Sonnet penuh, file TypeScript lainnya mendapat Claude Haiku, dan yang lainnya dilewati.
# .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
- name: Fetch PR diff
id: diff
uses: actions/github-script@v7
with:
script: |
const diff = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
mediaType: { format: 'diff' }
})
return diff.data
- name: Run AI Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
node scripts/ai-review.js --diff "${{ steps.diff.outputs.result }}" --pr "${{ github.event.pull_request.number }}"
# Full script: https://gist.github.com/yourusername/ai-reviewUntuk review keamanan, saya menjalankan pass review khusus yang dipicu hanya pada PR yang menyentuh autentikasi, otorisasi, endpoint API, atau kueri database. Review khusus ini menggunakan model berbeda (saya menggunakan Claude Opus untuk review keamanan), prompt yang fokus secara eksklusif pada kerentanan OWASP Top 10.
Tanpa tuning, AI code review menghasilkan 30-40% false positive. Ini menciptakan alert fatigue: developer berhenti membaca review AI karena penuh dengan noise. Investasikan waktu dalam daftar suppression: dokumentasikan pola yang disengaja dan tambahkan ke prompt sebagai contoh 'jangan tandai'. Daftar suppression saya mengurangi false positive dari 35% menjadi kurang dari 10%.
AI code review bekerja terbaik ketika tim telah menyepakati perannya: AI review adalah pass pertama yang menangkap masalah objektif, bukan pengganti penilaian manusia tentang arsitektur dan logika bisnis.
Biaya aktual saya: ~$10-15/bulan untuk panggilan API pada ~50 PR/bulan. Dalam enam bulan, AI review menangkap 14 masalah yang saya lewatkan dalam self-review: 2 kerentanan keamanan, 5 kasus penanganan error yang hilang, 4 masalah keamanan tipe TypeScript, dan 3 masalah performa.