BugCleaner
Azure DevOps'taki teknik borç tipindeki bug'ları her hafta otomatik ele alan console uygulaması. Veri düzeltmelerini kurumsal LLM ile üretip alt ortamlara uyguluyor; .NET ve Angular hatalarında otomatik PR açıyor; çözemediğinde yalnızca çözüm önerisi raporluyor. Prod'a dokunmuyor. Bir anda atanan teknik borç yığını sıfırlandı.
Hangi Sorunu Çözüyor?
Bu bug'lar zamanla birikmedi. Altyapı ekibi, kendi geliştirdiği otomatik bir tespit aracıyla kod tabanını taradı ve ekibimize bir anda büyük bir teknik borç yığını atadı. Hiçbiri "şimdi" değildi; sprint'ler yeni işle dolu olduğu için elle gidilse aylar sürerdi.
BugCleaner, bu yığını haftalık olarak eritmek için yazdığım bir console uygulaması. Task Scheduler ile her hafta çalışıyor, Azure DevOps'taki teknik borç tipindeki bug'ları alıyor ve her birini türüne göre ele alıyor.
BugCleaner VakıfBank bünyesinde, kurum içinde barındırılan bir LLM ile çalışır. Kaynak kodu kuruma aittir.
Karar Tablosu
Her bug için önce "bu ne tür bir değişiklik istiyor?" sorusu cevaplanıyor; davranış buna göre değişiyor:
| Bug türü | Ne yapıyor |
|---|---|
| DML (veri düzeltmesi) | LLM ile çözümü üretip alt ortamlara uyguluyor. Prod'a dokunmuyor; prod'a gitmesi gerekiyorsa rapora ekliyor. |
| DDL (şema değişikliği) | Yalnızca dev'de uyguluyor, taşıma gerektiğini belirtip rapora ekliyor. |
| .NET ya da Angular | Bug branch'i açıyor, değişikliği commit'leyip push'luyor, pull request oluşturuyor ve PR linkini rapora ekliyor. |
| Karmaşık | LLM'in güvenle çözemeyeceği düzeydeyse hiç kod değiştirmiyor; yalnızca çözüm önerisi üretip rapora koyuyor. |
Dördüncü satır bilinçli bir sınır. Araç, emin olmadığı yerde kodu kurcalamak yerine insana bir başlangıç noktası veriyor.
Model tercihi de bağlamla ilgili: bir bug'ın çözümü için ilgili kod, tablo yapısı ve analiz birlikte gerekiyor. Bu yüzden araçların tamamını kurumdaki bağlam penceresi en geniş modele geçirdim.
Nasıl Çalışıyor?
Task Scheduler (haftalık)
└─ BugCleaner (console app)
├─ Azure DevOps: teknik borç bug'ları
├─ Sınıflandırma: DML / DDL / .NET-Angular / karmaşık
├─ Kurum içi LLM: çözüm ya da öneri
├─ Uygulama: alt ortamlar | branch → commit → push → PR
└─ E-posta raporu: çözülenler, taşıma gerekenler, PR linkleri, öneriler
Haftanın sonunda ekibe tek bir e-posta gidiyor: hangi bug'lar çözüldü, hangileri taşıma bekliyor, hangi PR'lar incelenmeyi bekliyor ve hangi bug'lar için yalnızca öneri var.
Sonuç
Bir anda atanan yığın sıfıra indi. Araç hâlâ her hafta çalışıyor; tespit aracının yeni bulduğu teknik borçlar birikmeden ele alınıyor. En çok sevdiğim tarafı, "çözemem" diyebilmesi: LLM'in kapsamı dışındaki işlerde kod değişmeden öneriyle gelmesi, ekibin araca güvenmesini sağladı.
Muhammed Emin Özdemir
VakıfBank'ta senior full-stack geliştirici. Kurumsal sistemler, temiz kod ve LLM tabanlı araçlar üzerine odaklanıyor.
Hakkımda daha fazlası →
Yorumlar
İlk yorumu siz yapın