Araçlar & Çeviriciler
Açık Kaynak

LiveDocGen: Canlı Yenilemeli C++ Dokümantasyon Sunucusu

C++Boost.BeastBoost.AsioStandard Template Library (STL)Custom AST ParserHTTP Server

Boost.Beast kullanan, özel bir C++ dokümantasyon üreticisi ve yerel HTTP sunucusu. Doxygen tarzı başlık (header) yorumlarını ayrıştırır, zaman damgası (timestamp) hash'leme yoluyla canlı yenileme özellikli bir web arayüzü sunar ve otomatik olarak HTML ile Markdown çıktıları üretir.

Teknoloji Yığını

C++Boost.BeastBoost.AsioStandard Template Library (STL)Custom AST ParserHTTP Server

Sistem Metrikleri

İmzasız dosyaları doğrudan I/O sınırında atlayarak devasa kod tabanlarının (codebases) anında ayrıştırılması
Lokalize string akışları ve `std::stringstream` tampon (buffer) yeniden kullanımı sayesinde minimum yığın (heap) parçalanması ve düşük bellek ayak izi
Tek iş parçacıklı asenkron I/O mimarisi, HTTP payload iletimleri sırasında kesinlikle bloklanma (blocking) yaşanmamasını sağlar

Bunu Neden İnşa Ettim?

"Doxygen ve Sphinx inanılmaz derecede güçlü olsalar da, aktif geliştirme aşamasındaki hızlı ve lokalize API dokümantasyonu için genellikle hantal ve yavaş kalıyorlar. API sözleşmelerimi anında görselleştirebilmek için herhangi bir C++ projesine kolayca dahil edebileceğim bu hafif, hiper odaklı aracı geliştirdim. Belirli bir dosya imzasını zorunlu kılarak, ayrıştırıcının devasa üçüncü parti bağımlılık ağaçlarını akıllıca yoksaymasını sağladım. Dahili canlı yenileme yapan HTTP sunucusu sayesinde, kod yazıp kaydettiğim an, manuel olarak hiçbir derleme betiği çalıştırmadan formatlanmış dokümantasyonu ikinci ekranımda anında görebiliyorum."

Mimari & Kararlar

Tamamen modern C++ ile yazılmış olan bu araç, özyineli (recursive) dizin taraması için `std::filesystem`'i, hafif bir yerel sunucu ayağa kaldırmak için ise `Boost.Beast`/`Boost.Asio` ağ yığınını kullanır. Ayrıştırma motoru, belirli etiketleri (`\brief`, `\param`, `\warning`) çıkarmak ve karşılık gelen C++ imzalarını (fonksiyonlar, makrolar, typedef'ler, değişkenler) doğrudan kod üzerinden anlamlandırmak için durumlu (stateful) bir metin tokenleştirici kullanır. Sunucu, tek iş parçacıklı asenkron bir bağlamda (`net::io_context{1}`) çalışır. Uzun süreli sorgulama (long-polling) yapan `/version` uç noktası, dinamik olarak enjekte edilen JavaScript aracılığıyla otomatik istemci tarafı UI yenilemelerini tetiklemek için dosya değiştirme zaman damgalarını hash'ler.

Temel Özellikler

  • 01.Boost.Beast ve Boost.Asio altyapılı, sıfır konfigürasyonlu yerel HTTP sunucusu
  • 02.Üçüncü parti kütüphanelerin taranmasını agresif bir şekilde önlemek için özel bir dosya imzasıyla hedeflenmiş dosya ayrıştırma
  • 03.JS sorgulama ve işletim sistemi düzeyinde zaman damgası hash'leme yoluyla otomatik canlı yenilenen web arayüzü
  • 04.Doğrudan dosya sistemine eşzamanlı statik artifact üretimi (`index.html` ve `index.md`)
  • 05.Ağır derleyici arayüzlerine (compiler frontends) ihtiyaç duymadan fonksiyonlar, makrolar ve typedef'ler için satır içi (in-line) C++ imza çıkarma
Bu araç, hızlı geliştirme döngüleri sırasında ham kaynak kod ile okunabilir dokümantasyon arasındaki boşluğu doldurmaktadır. Karmaşık XML yapılandırmalarıyla veya Doxyfile'larla uğraşmak yerine, sadece bir başlık (header) dosyasını etiketleyip standart blok yorumlar yazarak Boost destekli sunucunun temiz stillendirilmiş, canlı güncellenen bir HTML görünümü sunmasını sağlayabiliyorum. Kendi C++ sistem mühendisliği iş akışımı agresif bir şekilde hızlandırmak adına son derece uzmanlaşmış, düşük bağımlılıklı iç araçlar (internal tooling) yazma felsefemenin doğrudan bir kanıtıdır.