kertenkerem_
· LLM Tools · 2 dk okuma

LLM destekli kod inceleme: pull request'lerde insan gözünden önce AI denetimi

Yazılım geliştirme süreçlerinde code review, yani kod inceleme aşaması genellikle tıkanıklıkların yaşandığı yerdir. Ekip arkadaşınızın PR açmasını beklersiniz, ardından yüzlerce satırlık değişikliği okumak için zaman ayırırsınız. Son yıllarda yükselişe geçen llm destekli araçlar, bu manuel süreci otomatize etmek için yeni bir fırsat sunuyor. automation kavramı burada sadece tekrarlayan işleri yapmak değil, kodun karmaşıklığını ve olası hataları önceden raporlamak anlamına geliyor.

AI tabanlı kod inceleme nasıl çalışır

Sistem temelde basit bir mantığa dayanıyor: GitHub veya GitLab üzerindeki pull request içerikleri, bir LLM aracılığıyla analiz ediliyor. Kodun mantıksal hataları, güvenlik açıkları veya kod standartlarına uyum durumu inceleniyor. Model, tespit ettiği bulguları doğrudan PR üzerine yorum olarak bırakıyor.

Bu araçların en büyük avantajı, insan gözünün kaçırabileceği küçük hataları yakalamasıdır. Örneğin, unutulmuş bir debug satırı veya kullanılmayan bir değişken, AI tarafından saniyeler içinde raporlanabiliyor. İnsan gözü ise mimari tasarıma ve iş mantığına odaklanabiliyor.

Kurulum ve entegrasyon yöntemleri

GitHub üzerinde bu yapıyı kurmak için açık kaynaklı araçlar mevcut. En popüler seçeneklerden biri olan PR-Agent, GitHub Actions ile kolayca entegre edilebilir. Bir workflow dosyası oluşturarak her PR açıldığında kodun otomatik olarak incelenmesini sağlayabilirsiniz.

name: PR Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - name: Run PR Agent
        uses: Codium-ai/pr-agent@main
        env:
          OPENAI_KEY: ${{ secrets.OPENAI_API_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Yukarıdaki örnekte PR-Agent, pull request açıldığında tetikleniyor. Model, kod değişikliğini okuyor ve geliştiriciye önerilerde bulunuyor. Dikkat etmeniz gereken nokta ise API maliyetleridir. Her PR için bir model çağrısı, token kullanımına bağlı olarak maliyet yaratır.

Araçlar ve karşılaştırmalar

Piyasada hem ücretli hem de açık kaynaklı birçok seçenek bulunuyor. İhtiyacınıza göre seçim yaparken şu tabloyu göz önünde bulundurabilirsiniz.

Araç Model Maliyet
PR-Agent Esnek (OpenAI, Anthropic) Açık kaynak (API ücreti hariç)
GitHub Copilot OpenAI Aylık abonelik
CodeRabbit Esnek Ücretli planlar

PR-Agent gibi açık kaynak çözümler, kendi modelinizi seçmenize olanak tanır. Örneğin, hassas kod verisiyle çalışıyorsanız yerel (on-premise) bir model olan Llama 3 kullanarak verinizin dışarı çıkmamasını sağlayabilirsiniz. CodeRabbit gibi hazır servisler ise kurulum kolaylığı sağlar ancak veri gizliliği politikalarını detaylı incelemeniz gerekir.

Teknik borç ve AI denetimi

Teknik borç, birikmeye başladığında sistemin bakımını imkansız hale getirir. LLM tabanlı araçlar, pull request aşamasında kodu inceleyerek karmaşıklığı yüksek (high cyclomatic complexity) fonksiyonları raporlayabilir. Bu sayede kod, ana dala (main branch) birleşmeden önce düzeltilmiş olur.

Yine de AI, her zaman doğru olanı söylemez. Model bazen yanlış pozitif sonuçlar üretebilir veya çok basit bir kodu karmaşık olarak niteleyebilir. Bu yüzden AI denetimini, insanların kod inceleme sürecini tamamen ortadan kaldıran bir araç değil, süreci destekleyen bir yardımcı olarak konumlandırmak daha sağlıklıdır.

Neler beklenmemeli

AI araçlarını kullanırken en büyük yanılgı, tüm hataların çözüleceğine dair beklentidir. Bir model, veritabanı şemanızdaki mantıksal bir hatayı veya iş gereksinimlerindeki bir değişikliği anlayamaz. Bu tür sistemler daha çok söz dizimi, güvenlik açıklarının tespiti ve kod stili düzenlemelerinde başarılıdır.

Ekranda gördüğümüz sonuçlar genelde PR üzerindeki bir liste şeklindedir. AI; "Bu satırdaki hata yönetimi eksik görünüyor" veya "Bu döngü yerine map fonksiyonu kullanmak performansı artırabilir" gibi somut önerilerde bulunur. Geliştirici, bu yorumları dikkate alarak kodunu günceller veya AI’nın önerisini reddedebilir. Sonuçta kontrol her zaman geliştiricidedir.