deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Farol, pull request birleştirme riskini dosya dosya puanlıyor: onayı veren insanlar için

Winnin'in Farol aracı, ücretsiz ve açık kaynak bir CLI ve GitHub Action. Her pull request'e 0-100 arası birleştirme riski puanı veriyor, risk taşıyan dosyaları sıralıyor ve bunu bir dil modeli yerine derleyici tabanlı statik analizle yapıyor.

Farol, pull request birleştirme riskini dosya dosya puanlıyor: onayı veren insanlar için

Winnin'in açık kaynak aracı Farol, 25 Ekim'de Hacker News'te göründü. Pull request'i onaylayan kişiye yönelik ücretsiz bir CLI ve GitHub Action: birleştirmenin ne kadar riskli olduğunu tahmin ediyor, bu riskin hangi dosyalarda yoğunlaştığını gösteriyor ve AI inceleme ajanlarının yerine geçmek değil, onlardan sonraki bir adım olarak çalışıyor.

Ne yapıyor

Projenin README'sine göre Farol, onaylayıcı kişiye üç soruyu yanıtlıyor: değişiklik neye dokunuyor, birleştirme ne kadar riskli ve okumaya nereden başlanmalı. Her değişiklik için, değiştirilen kodu çalıştıran mevcut sayfaları, API operasyonlarını, RPC metodlarını, arka plan işlerini ve scriptleri, her birine giden çağrı zinciriyle birlikte listeliyor. Ardından bir karar veriyor — hızlı geç, hızlı incele ya da dikkatli incele — artı erişim, diff kapsamı, güvenlik bulguları, sözleşme kırılmaları ve bağımlılık değişikliklerinden hesaplanan 0–100 arası bir risk puanı. Dosyalar sıralanıyor; böylece en riskli olanlar satır satır okunurken düşük riskli pull request'ler hızla ilerleyebiliyor.

README, arka plandaki sorunu bir dikkat dağıtım sorunu olarak çerçeveliyor: ajanlar giderek daha fazla kod yazıp incelerken son onay hâlâ bir insan kararı ve bu dikkati her pull request'e eşit yaymak, incelemeyi üstünkörü bir göz gezdirmeye dönüştürüyor. README, Claude Code ekibinin yayımladığı yakınıma atıf yapıyor; bu yaklaşımda inceleme derinliği, değişikliği kimin yaptığına değil değişikliğin riskine göre belirleniyor.

Nasıl çalışıyor

Farol, bir model yerine gerçek derleyiciler kullanan statik analiz üzerine kurulu — TypeScript tip denetleyicisi, Go'nun go/types paketi ve Python'ın ast modülü. README'ye göre bu, çıktıyı deterministik kılıyor: özdeş pull request'ler özdeş raporlar üretiyor ve erişime dair her iddia bir çağrı zinciri üzerinden izlenebiliyor. Araç bir değişikliğin bir kısmını anlayamadığında "bilinmiyor" raporluyor ve belirsiz kısmı güvenli saymak yerine dikkatli inceleme istiyor.

Ayrıca sözleşme kırılmalarını istemcilerden önce yakalamaya çalışıyor: kaldırılan yanıt alanları, yeni zorunlu parametreler ve GraphQL, FastAPI, Go handler'ları ve gRPC genelinde değişen tipler, her endpoint'i çağıran servislerle birlikte. Mevcut CI artefaktları — kapsam, lint, güvenlik ve denetim raporları — değiştirilen koda dair satır bazlı bulgulara katılıyor, böylece hiçbir şey iki kez çalışmıyor. Her push iki rapor üretiyor: biri pull request'in tamamını, diğeri yalnızca önceki push'tan bu yana yapılan commit'leri kapsıyor; böylece bir inceleyici, baştan başlamadan bir tur düzeltmeyi kontrol edebiliyor.

README ayrıca aracı AI inceleme ajanlarıyla karşılaştırıyor: ajanlar diff'i ve bir prompt'a sığan bağlamı okuyup olasılıksal yanıtlar verirken, Farol programın tamamını hem taban hem de head üzerinde okuyup tekrarlanabilir yanıtlar veriyor. Önerilen sıra önce ajan, sonra Farol.

Çalıştırma

Proje MIT lisanslı; hesap gerekmiyor, barındırılan bir servis yok. README'ye göre yerel bir makinede veya bir CI runner üzerinde çalışıyor, proje kodunu hiçbir zaman çalıştırmıyor, hiçbir yere yüklemiyor, her pull request'e yorum yapıyor ve asla bir birleştirmeyi engellemiyor. CLI, npx @winninjs/farol ile veya global npm kurulumuyla çalışıyor; winnin/farol/action GitHub Action'ı ise her PR'de çalıştırıyor. Gereksinimler Node.js 22+ ve git, ayrıca o dillerde yazılmış projeler için Go veya Python 3.11+. Kurulum, stack'i tanımlayan tek satırlık bir farol.config.json; React Router, Next.js, TanStack Router, TypeScript API'leri, Go ve Python servisleri için tarifler mevcut.

Depoda canlı bir demo da var: bir inceleyicinin yakalaması gereken türden sorunları bilinçli olarak içeren bir FastAPI artı React tam stack şablonuna karşı açılmış bir pull request'in CI tarafından üretilmiş raporları — kırıcı bir API değişikliği, f-string ile oluşturulmuş SQL ve test edilmemiş bir paylaşılan bileşen. Hem arka uç hem ön uç raporları dikkatli inceleme gerektiriyor olarak işaretlenmiş durumda; raporlar etkileşimli ve inceleyicilerin dosyaları incelenmiş olarak işaretlemesine, sayfaları bir feature flag arkasında olarak işaretlemesine ve nelerin kontrol edildiğine dair bir kayıt dışa aktarmasına izin veriyor.

Neden önemli

Buradaki ilginç bahis, bir AI inceleyici daha değil; ona deterministik bir tamamlayıcı. Model tabanlı inceleme olasılıksaldır ve yanıldığında kendinden emin görünebilir; Farol'un öne sürdüğü şu: derleyiciye dayalı bir etki alanı haritası — paylaşılan bir yardımcı fonksiyonda yapılan tek satırlık bir değişikliğin gerçekte neye dokunduğu — tam olarak hem ajanların hem insanların gözden kaçırma eğiliminde olduğu bilgi türü ve yerel olarak, tekrarlanabilir biçimde hesaplanabilecek türden bir bilgi. Ekiplerin zaten kalabalık bir inceleme hattına ayrı bir önceliklendirme adımı katıp katmayacağı açık bir soru; ancak AI tarafından üretilen pull request'ler çoğaldıkça, sınırlı bir insan dikkati bütçesinin nerede en iyi harcanacağını onaylayıcı kişiye söyleyen araçlar, gerçek ve büyüyen bir darboğaza nişan alıyor.

  • #open-source
  • #code-review
  • #static-analysis
  • #developer-tools
  • #github-actions

İlgili yazılar