Skip to main content
BlogAI

Code Review Bertenaga AI dengan GitHub Actions: Setup Saya

Cara menambahkan AI code review ke alur kerja GitHub PR Anda — pilihan alat, rekayasa prompt, manajemen biaya, dan apa yang AI sebenarnya tangkap vs lewatkan.

Matthews Wong

Software Engineer

Juni 20259 menit baca
AI

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.

Lanskap Alat AI Code 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.

Apa yang Sebenarnya Ditangkap AI Code Review

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.

Arsitektur Integrasi GitHub Actions

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).

Prompt Review yang Berhasil

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.

Menangani PR Besar Tanpa Menguras Kantong

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-review

Review Berfokus Keamanan

Untuk 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%.

Mengintegrasikan dengan Budaya Review Anda

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.

Analisis Biaya dan ROI

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.

Sumber & Bacaan Lanjutan

Artikel Terkait

FAQ

Pertanyaan Umum

Jawaban singkat untuk pertanyaan yang paling sering diajukan pembaca tentang topik ini.

Apa yang sebenarnya bisa ditangkap dan dilewatkan oleh AI code review?

Berdasarkan enam bulan penggunaan produksi, AI code review secara konsisten menangkap kerentanan keamanan (validasi input yang hilang, risiko SQL injection, secret yang dikodekan keras), celah penanganan error, antipattern performa seperti N+1 query, dan masalah keamanan tipe TypeScript. Yang konsisten dilewatkan adalah kebenaran logika bisnis, kekhawatiran arsitektur, dan apa pun yang memerlukan pemahaman konteks domain — hal-hal ini tetap membutuhkan ulasan manusia.

Berapa biaya untuk menjalankan setup AI code review ini?

Setup kustom dengan Claude Sonnet biaya sekitar $8–15 per bulan berdasarkan volume sekitar 50 PR per bulan, dengan setiap review biaya $0,20–0,50 untuk PR tipikal. PR besar dengan 1.000+ baris berubah dapat biaya $2–5 untuk direview sepenuhnya, itulah mengapa priority router diimplementasikan untuk menggunakan Claude Haiku secara selektif pada file berisiko rendah, yang mengurangi biaya per review sebesar 65%.

Bagaimana cara mengurangi false positive pada AI code review?

Tanpa tuning, AI code review menghasilkan 30–40% false positive — temuan yang secara teknis akurat tapi tidak dapat ditindaklanjuti dalam codebase tertentu, yang menyebabkan alert fatigue. Membangun daftar suppression yang mendokumentasikan pola yang disengaja dan menambahkannya ke prompt sebagai contoh yang harus diabaikan berhasil mengurangi false positive dari 35% menjadi kurang dari 10%.

Mengapa output JSON terstruktur penting untuk prompt review?

Prompt review meminta respons JSON dengan array temuan, di mana setiap temuan mencakup file, baris, keparahan, kategori, deskripsi, dan saran. Output terstruktur sangat penting karena teks review yang tidak terstruktur sulit diparsing dan ditampilkan dengan rapi di komentar PR GitHub, serta memudahkan penerapan sistem keparahan bertingkat (kritis, mayor, minor) yang mengontrol cara setiap temuan ditampilkan kepada tim.

Apa bedanya review berfokus keamanan dengan review AI umum?

Review keamanan adalah pass alur kerja terpisah yang dipicu hanya pada PR yang menyentuh autentikasi, otorisasi, endpoint API, atau kueri database. Review ini menggunakan Claude Opus (model yang lebih mumpuni) dan prompt yang fokus secara eksklusif pada kerentanan OWASP Top 10, dengan temuan juga dikirim ke channel Slack untuk visibilitas yang lebih luas di luar PR itu sendiri.