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