CodeGraph: Kod Tabanınızı Canlı Bilgi Grafiğine Dönüştüren Devrim Niteliğinde Araç Siber Güvenlik

CodeGraph: Kod Tabanınızı Canlı Bilgi Grafiğine Dönüştüren Devrim Niteliğinde Araç

CodeGraph, GitHub reposunu tarayarak tüm fonksiyon çağrılarını grafik veritabanına dönüştürür ve yapacağınız değişikliklerin hangi hatalara yol açacağ

Her geliştirici bilir: Yeni bir kod tabanına katıldığınızda, 50 bin satır kod arasında küçük bir hata düzeltmesi yaparsınız ve aniden ilgisiz üç özellik çöker. Bu sorunu çözmek için CodeGraph'ı geliştirdim. Proje, HACKHAZARDS '26 için hazırlandı ve Neo4j AuraDB, tree-sitter, Groq LLaMA ve Next.js teknolojilerini kullanıyor. Amaç, yazılımcıların kod tabanındaki bağımlılıkları anlamasını sağlayarak değişikliklerin önceden tahmin edilmesini mümkün kılmak.

CodeGraph, herhangi bir genel GitHub deposu URL'sini alır ve saniyeler içinde: tree-sitter kullanarak kod tabanındaki her fonksiyonu ayrıştırır, her fonksiyon çağrısını yönlü bir grafik olarak eşler, tüm verileri Neo4j AuraDB'de canlı bir bilgi grafiği olarak depolar ve kullanıcıların doğal dilde sorular sormasına olanak tanır. Sonuç: Bir GitHub URL'si yapıştırın, tüm kod tabanınızı etkileşimli bir grafik olarak görün, herhangi bir fonksiyona tıklayın ve değiştirirseniz neyin bozulacağını anında öğrenin.

Teknoloji yığını dikkatle seçildi: Backend'de Python + FastAPI, Neo4j AuraDB (grafik veritabanı), tree-sitter (AST ayrıştırıcı), Groq API ile LLaMA 3.3 70B (ücretsiz dil modeli) ve GitPython (depoları çalışma zamanında klonlamak için). Frontend'de ise Next.js 15, TypeScript, Tailwind CSS (koyu tema, mor/turkuaz paleti), Cytoscape.js (etkileşimli grafik görselleştirme), Framer Motion (animasyonlar) ve D3.js (giriş sayfasında dönen küre) yer alıyor.

Sonuç ve Değerlendirme

Neden Neo4j AuraDB? Çünkü bir kod tabanı doğası gereği bir graftır. Fonksiyonlar diğer fonksiyonları çağırır ve bu zincir bazen 5 seviye derinliğe ulaşır. İlişkisel bir veritabanında bu tür sorgular pahalı ve yavaşken, Neo4j'de tek bir Cypher sorgusu ile milisaniyeler içinde sonuç alınır. Örneğin, 495.000 çağrı ilişkisi olan bir kod tabanında bile derinlik sorgusu anında çalışır. Neo4j şeması basittir: Her fonksiyon bir düğüm, her çağrı bir ilişkidir. Bu basit yapı sonsuz analitik güç sağlar.

Adım adım inşa süreci: İlk olarak, tree-sitter ile kod ayrıştırıcı oluşturuldu. Her dosyadaki fonksiyon tanımları, çağrıları ve import ifadeleri çıkarıldı. Python built-in'leri (print, strip, len gibi) filtrelenerek anlamsız gürültü önlendi. İkinci adımda, Neo4j AuraDB'ye veriler MERGE ifadeleriyle yazıldı. ReplyIQ reposu için bu, 628 fonksiyon düğümü ve 495.000'den fazla çağrı ilişkisi üretti ve 30 saniyeden kısa sürede tamamlandı. Üçüncü adımda, Patlama Yarıçapı Skoru (0-100) hesaplandı: Doğrudan çağıranlar 3x, 2-3 seviye uzaktakiler 1x, 4-5 seviye uzaktakiler 0.3x ağırlıklandırıldı.

CodeGraph, yazılım geliştirme sürecinde devrim yaratma potansiyeline sahip. Artık bir değişiklik yapmadan önce kod tabanının tamamını tarayıp hangi fonksiyonların etkileneceğini görebilir, hataları önceden tahmin edebilir ve zaman kaybını önleyebilirsiniz. Proje açık kaynak olarak yayınlanmış olup, geliştiriciler kendi ihtiyaçlarına göre uyarlayabilir. Gelecekte daha fazla dil desteği, CI/CD entegrasyonu ve daha gelişmiş yapay zeka özellikleri planlanmaktadır.

Kaynak: dev.to

Paylaş: