Farol: Pull Request Onaylayanlar İçin Açık Kaynaklı Risk Haritası
Kaynak: Hacker News
İçindekiler 3 başlık
Yapay Zeka Çağında Kod İnceleme ve İnsan Onayı#
Modern yazılım geliştirme süreçlerinde yapay zeka ajanları hem kodu yazıyor hem de ilk incelemeyi (code review) gerçekleştiriyor. Ancak bir Pull Request'in (PR) ana dala birleştirilmesine (merge) dair son karar hala bir insana ait. Geliştirici ekiplerinde en kıt kaynak upravo bu insan dikkati ve onayıdır. Dikkat her PR'a eşit şekilde dağıtıldığında, incelemeler yüzeysel bir göz gezdirmeye dönüşür. Paylaşılan bir kancada (shared hook) yapılan tek satırlık bir değişikliğin kırk farklı sayfayı çökertmesi tam olarak bu dikkat dağınıklığının sonucudur.
Farol, yapay zeka incelemesinin yerine geçmek için değil, ondan hemen sonra devreye girmek için tasarlanmış ücretsiz ve açık kaynaklı (MIT lisanslı) bir CLI aracı ve GitHub Action çözümüdür. İnceleme ajanınız kod farklarındaki (diff) satırlara yorum yaparken; Farol onaylayacak kişiye yapay zekanın güvenilir biçimde veremeyeceği şu kritik bilgiyi sunar: Değişikliği kabul etmenin riski nedir ve bu risk tam olarak hangi dosyalarda barınıyor?
Deterministik Statik Analiz ve Odaklı İnceleme#
Aracın temel amacı yalnızca inceleme sürecini hızlandırmak değildir; düşük riskli PR'ların hızla geçmesini sağlarken, yüksek riskli değişikliklerin risk taşıyan dosyalardan başlanarak satır satır okunmasını mümkün kılmaktır. TypeScript/React, Go ve Python projelerini destekleyen Farol, bir dil modelinin tahminleriyle değil, derleyicinin koda bakış açısını yansıtan statik analiz yöntemiyle çalışır. Bu sayede aynı PR her zaman aynı deterministik sonucu üretir.
Claude Code ekibinin de vurguladığı gibi, inceleme eforu değişikliğin yazarına göre değil, değişikliğin taşıdığı riske göre belirlenmelidir. Portekizcede "deniz feneri" anlamına gelen Farol, incelemeci henüz kod farklarını açmadan önce şu üç temel noktada ön sınıflandırma (triage) yapar:
- Bu değişiklik nereye ulaşıyor? Değiştirilen kodu çalıştıran mevcut her sayfa, API işlemi, RPC metodu, arka plan işi (job) ve betik, her birine giden çağrı zinciriyle (call chain) birlikte haritalandırılır.
- Birleştirme (merge) ne kadar riskli? Etki alanı (reach), diff test kapsamı, güvenlik bulguları, sözleşme kırılmaları (contract breaks) ve bağımlılık değişikliklerinden hesaplanan 0–100 arası bir risk skoru ile net bir karar (hızlı geçiş, hızlı inceleme, dikkatli inceleme) sunulur.
- Nereden başlamalıyım? Satır içi farklar, işaretlenmiş test edilmeyen satırlar ve manuel olarak nelerin denenmesi gerektiğini gösteren bir kontrol listesiyle birlikte en riskli dosyalar ilk sıraya yerleştirilir.
Yazılım Geliştiriciler İçin Pratik Çıkarımlar#
Büyüyen kod tabanlarında ve yapay zeka destekli üretim hızında kaliteyi korumak isteyen ekipler için Farol yaklaşımından çıkarılabilecek önemli dersler vardır. İlk olarak, kod inceleme süreçlerinde tüm dosyalara eşit zaman ayırmak yerine etki alanı analizine (impact analysis) dayalı önceliklendirme yapılmalıdır. İkinci olarak, üretken yapay zeka araçlarının yanına deterministik statik analiz araçları konumlandırmak, halüsinasyonlardan arındırılmış güvenilir bir güvenlik ağı oluşturur.
Herhangi bir hesap veya barındırılan servis gerektirmeyen aracı npx @winninjs/farol komutuyla kendi makinenizde ya da winnin/farol/action ile CI hattınızda çalıştırabilirsiniz. Kodunuzu asla çalıştırmayan (execute etmeyen) ve birleştirmeleri engellemeyen bu araç, mühendislik ekiplerinin bilişsel yükünü doğru noktalara kanalize etmesi için güçlü bir pratik sunar.
Kaynak ve atıf
Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- github.com/winnin/farol