Ana içeriğe geç
Programlama

ImpactGate kod tabanındaki yapısal bozulmayı ölçüyor

Öne çıkanlar

  • ImpactGate, mevcut karmaşık yapılara eklenen kodları sıfırdan eklenen dosyalara kıyasla daha yüksek puanla cezalandırıyor.
  • Sistem yerel Git kancalarının yanı sıra GitHub Actions, GitLab CI ve Jenkins üzerinde otomatik denetim yapabiliyor.
  • Projelerin geçmiş verileri taranarak mutlak puanlar yerine yüzdelik eğri üzerinden engelleme eşikleri belirlenebiliyor.

OfficeFloor ekibi, kod değişikliklerinin yol açtığı yapısal karmaşıklığı ölçen ve denetleyen açık kaynaklı ImpactGate aracını kullanıma sundu. Sistem, özellikle yapay zeka destekli kod üretim araçlarının mevcut sınıflara ve fonksiyonlara kontrolsüzce ekleme yapması sonucu oluşan yapısal bozulmayı engellemeyi amaçlıyor. Geliştiriciler aracı yerel bir komut satırı arayüzü, Git kancası veya GitHub, GitLab ve Jenkins gibi sürekli entegrasyon sistemlerinde birleştirme kapısı olarak çalıştırabiliyor.

Araç, bir değişikliğin etkisini değiştirilen dosya sayısı, düzenlenen yapının mevcut karmaşıklığı ve satır farkını çarparak hesaplıyor. Sıfırdan yeni bir sınıf veya dosya eklemek düşük puan alırken, halihazırda yoğun ve karmaşık sınıflara yeni dallar eklemek yüksek ceza puanı üretiyor. Hesaplanan etki puanı belirlenen eşiği aştığında sistem uyarı veriyor veya birleştirmeyi doğrudan engelliyor. Sistem ayrıca en çok bozulmaya uğrayan dosyaları sıralayarak yeniden yapılandırma önerileri sunuyor.

Projeler için ham sayısal eşikler belirlemek yerine geçmiş birleştirme verilerine dayalı yüzdelik dilim puanlaması da uygulanabiliyor. ImpactGate, 20 açık kaynaklı depodan elde edilen öncül dağılım ile projenin kendi geçmişini harmanlayarak bir eğri oluşturuyor. Geliştiriciler bu eğri sayesinde değişiklikleri projenin genel geçmişine göre değerlendiriyor. Ekip, gelecekte düzenleyici seviyesinde anlık geri bildirim sağlayacak Dil Sunucusu Protokolü desteği eklemeyi planlıyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.