Seçili işlere dön
Repository health CLI deneyi · Geliştirme deneyi

codePulse

Git geçmişi ve import ilişkilerinden bakım risklerini çıkaran; terminal, JSON, Markdown ve görsel HTML raporu üreten yayınlanmamış TypeScript CLI paketi.

codepulse.lab
$ codepulse analyzeRepository tarandı.9 analizör · 438 commit · local
HOTSPOThigh
COUPLINGwatch
BUS FACTORstable
9analizör
4çıktı formatı
Localçalışma modeli
01 / BAĞLAM

Neden yaptım?

Problem

Kod tabanında en riskli dosyalar, birlikte değişen parçalar ve tek kişiye bağımlı alanlar günlük geliştirme sırasında kolayca görünmez kalıyor.

Yaklaşım

Git geçmişini stream ederek değişim sıklığı, churn ve yazar dağılımını topladım; bunu statik import grafiğiyle birleştirdim. Tek bir sağlık puanı yerine hotspot, temporal coupling, bus factor, blast radius ve refactor önceliği gibi ayrı sinyaller ürettim.

02 / MİMARİ

Parçalar değil,
veri akışı.

Her katman tek bir sorumluluğu taşıyor; ürün davranışı sınırların arasında kaybolmuyor.

01Commander CLI giriş katmanı
02git log --numstat stream parser
03Artımlı JSONL commit cache’i
04Ignore/config filtreleme katmanı
05Geçmiş + statik import analizörleri
06Terminal · JSON · Markdown · HTML reporter’ları
03 / PROBLEM ÇÖZME

Zor kısımlar.

CHALLENGE 01

Sinyali gürültüden ayırmak

Lock dosyaları, üretilmiş çıktılar ve büyük toplu commit’ler sonucu kolayca bozabiliyor. Varsayılan filtreler, kullanıcı ignore dosyası ve eşiklerle analiz kapsamını açıkça yapılandırdım.

CHALLENGE 02

Büyük geçmişi tekrar tekrar okumamak

Git çıktısını belleğe bir defada almak yerine stream edip JSONL olarak cache’ledim. HEAD değişmediyse yeniden analizde geçmişi tekrar çağırmayan, ilerlediyse yalnızca yeni aralığı ekleyen bir akış kurdum.

04 / STACK

Doğru iş için
doğru araç.

01
Git CLI + streaming parser

Dil ve framework bağımsız commit verisi toplarken büyük çıktıları tek seferde belleğe almamak için.

02
JSONL artımlı cache

Commitleri satır bazında okuyup yalnızca yeni HEAD aralığını ekleyerek tekrarlı analiz maliyetini düşürmek için.

03
Çoklu analizör modeli

Hotspot, coupling, bus factor ve blast radius gibi farklı riskleri tek, açıklaması zor bir skora gömmemek için.

04
Commander

Path, tarih aralığı ve çıktı formatlarını küçük ama genişleyebilir bir CLI sözleşmesiyle sunmak için.

05
Ayrı reporter katmanı

Aynı analiz sonucunu terminalde hızlı okuma, CI için JSON ve paylaşım için Markdown/HTML olarak kullanmak için.

06
Vitest

Risk formülleri ve analizörlerin eşik davranışlarını hızlı, deterministik testlerle korumak için.

05 / RETROSPECTIVE

Öğrendiklerim.

01

Repository sağlığı tek bir kalite skoruna indirgenemez; farklı risk sinyalleri aynı dosyada kesiştiğinde anlam kazanır.

02

Git geçmişi dil bağımsız güçlü bir kaynak, import grafiği ise değişimin yayılma alanını anlamak için tamamlayıcıdır.

03

Geliştirici aracı çıktıyı terminal, CI ve paylaşılabilir rapor gibi farklı kullanım yerlerine taşıyabilmelidir.

06 / FUTURE PLANS

Bir sonraki sürüm.

Yapılandırılabilir ignore kurallarıCI/CD üzerinde PR risk raporunpm yayını