İçeriğe geç
Muslu Yüksektepe

NexusAnalyzer

Python projelerini tarayıp bağımlılık ve mimari haritası çıkaran, sonucu Markdown rapor olarak veren araç.

NexusAnalyzer, bir Python projesini baştan sona tarayıp bağımlılık ve mimari haritasını çıkaran bir komut satırı aracı. Yalnızca Python dosyalarını değil, web ve yapılandırma dosyalarını da inceliyor. Bulduklarını altı ayrı Markdown dosyasına yazıyor. 2026 yılının başında geliştirdim ve PyPI'da nexus-analyzer adıyla yayınladım.

Amaç

Devraldığım ya da uzun süre dokunmadığım bir projeyi anlamaya çalışırken hep aynı soruları soruyordum. Projede hangi API uç noktaları tanımlı, kod dışarıya hangi servislere istek atıyor, hangi veritabanlarına bağlanıyor, Docker ya da Nginx tarafında neler var ve dosyalar nasıl bir düzende duruyor. Bu soruların cevabını elle bulmak saatler alıyordu. NexusAnalyzer'ı bu ilk keşif işini otomatikleştirmek için yazdım. Amacım, bir projenin genel resmini birkaç saniyede okunabilir bir rapor hâline getirmekti.

Nasıl çalışır

Araç verilen dizinden başlayarak bütün klasörleri dolaşıyor. node_modules, venv, .git, __pycache__, build ve dist gibi taranması anlamsız klasörleri atlıyor. Her dosyayı uzantısına göre ilgili çözümleyiciye gönderiyor.

Python dosyalarını iki yoldan inceliyor. Birinci yolda satırları düzenli ifadelerle tarayıp OAuth2 kimlik doğrulaması, hız sınırlama, Celery görevleri, MQTT istemcisi, SSE akışı ve gateway kalıbı gibi özelliklerin izlerini arıyor. İkinci yolda dosyayı ast modülüyle sözdizimi ağacına çeviriyor. AST üzerinden FastAPI uygulamasının başlığını ve sürümünü, async ve normal fonksiyonların sayısını, get, post, put, delete, patch ve websocket dekoratörleriyle tanımlanmış uç noktaları ve bu uç noktaların parametrelerini çıkarıyor. requests, httpx ya da benzeri istemcilerle yapılan dış istekleri de yöntemi, hedefi, kimlik bilgisi kullanılıp kullanılmadığı ve gönderilen parametrelerle birlikte kaydediyor. WebSocket ve BackgroundTasks tipindeki argümanları ve rol ya da admin içeren dekoratör bağımlılıklarını da ayrıca işaretliyor.

Yapılandırma dosyalarında Docker imajlarını, konteyner adlarını, YAML servis anahtarlarını, Nginx'in dinlediği portları ve bağlantı adreslerini arıyor. JavaScript ve TypeScript dosyalarında ise fetch ve axios çağrılarını bularak ön yüzün hangi adreslere istek attığını listeliyor. Ön yüz çağrısı bulunursa projeyi tam yığın bir web uygulaması, bulunmazsa backend API olarak sınıflandırıyor.

Öne çıkan özellikler

  • Veritabanı, Redis ve mesaj kuyruğu bağlantı adreslerinde parola görünüyorsa bunu raporda yıldızlarla maskeliyor.
  • İçinde "secret" geçen yapılandırma satırlarını rapora hiç almıyor.
  • Her bulgunun hangi dosyanın hangi satırında olduğunu yazdığı için doğrudan koda gidip kontrol etmek kolay oluyor.
  • Tespit edilen her gelişmiş özellik için neden tespit edildiğini de gösteriyor.
  • Dosya ağacı en fazla 2000 satırla sınırlı tutuluyor; böylece çok büyük projelerde rapor okunamaz hâle gelmiyor.

Çıktılar

Rapor, proje dizininde tarih ve saat damgalı bir klasöre yazılıyor. Klasörde altı dosya bulunuyor. İlki proje kimliği ve özet; burada mimari türü, uygulama adı, sürüm, uç nokta sayısı, dosya türü dağılımı ve klasör istatistikleri yer alıyor. İkincisi API uç noktalarının tablosu. Üçüncüsü dış servis istekleri. Dördüncüsü tespit edilen gelişmiş özellikler. Beşincisi altyapı servisleri ve bağlantılar. Altıncısı da projenin dosya ağacı.

Teknik altyapı

NexusAnalyzer yalnızca Python standart kütüphanesini kullanıyor; ast, re, pathlib ve collections modülleri işin büyük kısmını yapıyor. Herhangi bir dış bağımlılığı yok. Paket pyproject.toml ile setuptools üzerinden derleniyor ve Python 3.9 ve üzerini destekliyor. Kurulduktan sonra nexus-cli adlı bir komut ekleniyor; proje dizininde nexus-cli . yazmak taramayı başlatıyor.

Kullanım alanları

  • Yeni devraldığım bir projenin mimarisini ilk gün anlamak için kullanırım.
  • Bir servisin dışarıya hangi API'lere istek attığını tek tabloda görmek, güvenlik ve bağımlılık değerlendirmesi yaparken işimi kolaylaştırıyor.
  • Proje belgesi yazarken uç nokta listesini ve altyapı bağlantılarını elle toplamak yerine bu raporlardan başlarım.
  • Çıktılar Markdown biçiminde olduğu için raporları doğrudan projenin deposuna ekleyip ekiple paylaşabilirim.
Kategori
Geliştirici araçları
Yıl
2026

Teknolojiler

  • Python
  • PyPI
  • Open Source

Bağlantılar

  • GitHub https://github.com/muslu/NexusAnalyzer
  • PyPI https://pypi.org/project/nexus-analyzer/

Tüm projelere dön