· kaynak Hacker News – Front Page (native)
Graphify C#, kodlama agent'lerine Roslyn üzerinden derleyici hassasiyetinde Find Usages sağlıyor
MIT lisanslı ücretsiz bir Roslyn indeksleyici, C# kodunun semantik grafını JSON olarak üretiyor; böylece agent'ler grep tarzı tahminlere başvurmadan tam çağrıcıları, implementasyonları ve yalnızca test amaçlı kullanımları çözebiliyor.
Graphify C# ne yapıyor
Graphify C#, kodlama agent'lerine C# için derleyici hassasiyetinde Find Usages sağlayan, MIT lisanslı ve ücretsiz bir komut satırı indeksleyici. Show HN gönderisiyle Hacker News'in ana sayfasına ulaşan projenin README'sine göre araç, bir kod tabanını MSBuild üzerinden yüklüyor ve C# derleyici platformu Roslyn'e her sembolün gerçekte neye çözüldüğünü soruyor. Sonuç, derleyici tarafından çözülmüş çağrıcıları, referansları, implementasyonları, kalıtım ve override ilişkilerini içeren; overload'ları, generic'leri ve projeler arası referansları doğru şekilde ele alan düğümler, kenarlar ve hyperedge'lerden oluşan tek bir JSON belgesi.
Proje için IDE, derlenmiş proje DLL'i ya da veritabanı gerekmiyor; ayrı Graphify aracı da opsiyonel. Geliştiricisi, aracı Rider ya da ReSharper'ın semantik gezinme katmanının Codex ve Claude Code gibi agent'ler için dışa aktarılmış hali olarak konumlandırıyor. Depo, C# 15 sözdizimi desteğini duyuruyor.
Grep neden yeterli değil
README'nin motive edici örneği, hangi metotların yalnızca testler tarafından kullanıldığı sorusu. Bir metin araması eşleşen yazımları bulabilir; ancak hangi overload'un bağlandığını, çağırıcının hangi projede olduğunu ya da bir interface implementasyonunun kastettiğiniz sembol olup olmadığını söyleyemez. Graphify C# ise bir agent'ın tahmin etmek yerine inceleyebileceği kararlı kimlikler ve yönlü ilişkiler üretiyor.
README, aracın kendi koduyla bir örnek veriyor: dahili bir test yardımcısı, tam olarak bir derleyici çözümlü gelen çağrıya sahip — dosya ve satır numarasıyla birlikte adı geçen bir test sınıfından. Bir agent bu metodu yalnızca test amaçlı olarak sınıflandırıp insan incelemesi için işaretleyebilir; bu, bir eşleşme sayısı değil semantik kanıttır.
Kurulum, indeksleme, agent'e öğretme
Araç, net10.0 hedefli bir .NET global tool olarak kuruluyor ve .sln, .slnx, .csproj ya da SDK tarzı dosya tabanlı .cs girdilerine karşı çalışarak eksiksiz bir JSON anlık görüntüsü yazıyor. Deponun SDK'ları, paketleri ve MSBuild girdilerinin yerel olarak mevcut olması gerekiyor. Çıktı bir agent tarafından doğrudan okunabilir, jq ile sorgulanabilir ya da kendi kodunuzdan tüketilebilir.
Pakete dahil bir skill dosyası, Codex ve Claude Code uyumlu agent'lere indeksin ne zaman yenileneceğini, semantik kenarların nasıl takip edileceğini ve statik analizin nerede bittiğini öğretiyor; skill bulunmayan kurulumlar için README kısa bir proje talimatı parçası sunuyor. Bir watch modu Roslyn workspace'ini sıcak tutar ve değişen projeleri arka planda hazırlar; düz bir çalıştırma ise yalnızca eksiksiz ve güncel bir anlık görüntü hazırlandıktan sonra dönen bir yenileme bariyeri işlevi görür. Bir rebuild bayrağı artımlı önbelleği geçersiz kılar.
İndeks neleri kapsıyor
Bildirimler; namespace, sınıf, struct, interface, record, enum ve delegate'lerden constructor, metot, operatör, yerel fonksiyon, property, indexer, alan, event, parametre, yerel değişken ve tip parametrelerine kadar uzanıyor. İlişki kenarları; doğrudan ve constructor çağrılarını, metot gruplarını ve üye erişimlerini; alan, tip, attribute, generic ve typeof referanslarını; inherits, implements ve overrides ilişkilerini; ayrıca derleyicinin seçtiği operatörleri, dönüşümleri, deconstruction, foreach, await, using, pattern, range ve collection expression'ları kapsıyor. Çağrı argümanları kaynak şekli parametrelere bağlanır ve her kenar proje, hedef framework, kaynak konumu ve provenance metadata'sı taşır. Çıkarıcının işleyemediği yapılar, sessizce kaybolmak ya da çalışmayı çökertmek yerine tanılama olarak raporlanır.
Bilinçli kapsam: bir IDE ya da NDepend klonu değil
README sınırları net biçimde çiziyor: Rider ve ReSharper geliştiricilere IDE içinde etkileşimli gezinme, inceleme ve refactoring sunarken, NDepend geniş kapsamlı ticari bir mimari ve kod kalitesi paketi. Graphify C#, çağrıcılar, bağımlılıklar, kalıtım ve ölü kod incelemesi çevresinde NDepend ile örtüşse de kendini, diğer araçların üzerine inşa edebileceği başsız (headless), açık formatta bir Roslyn semantik indeksi olarak tanımlıyor. Graphify ile birlikte kullanıldığında üst düzey sorgu, yol, açıklama ve kümeleme iş akışlarını besler; tek başına kullanıldığında ise herhangi bir tüketicinin sorgulayabileceği yalnızca bir JSON'dur.
Neden önemli
Kodlama agent'leri kodu çoğunlukla bulanık ya da metin tabanlı aramayla geziniyor ve C#'ın tam da burada zorlandığı yer burası: overload'lar, generic'ler ve interface implementasyonları isim eşleşmelerini güvenilmez kılıyor. Belirleyici, derleyici çözümlü bir grafik; hangi bildirim bu tam overload'u çağırıyor, hangi sınıflar bir interface'i implemente ediyor ya da hangi üyelerin gelen referansı sıfır gibi soruları olasılıksal tahminlerden ziyade incelenebilir olgulara dönüştürüyor. Proje sınırları hakkında dürüst: gelen kenarın sıfır olması gözlemlenen statik kanıttır, runtime'da erişilemezliğin kanıtı değil; ayrıca yerel build'ler için doğru SDK'lar ve paketler hâlâ gerekiyor. Yine de, agent'lı kodlama iş akışları olgunlaştıkça, agent'lere grep biçimli yaklaşımlar yerine derleyici seviyesinde kanıt sunan araçlar, araç zincirinin yönünü işaret ediyor.
- #c-sharp
- #roslyn
- #coding-agents
- #developer-tools
- #open-source