Vaka çalışması
qlity
GeliştiriliyorStored procedure'lardaki iş mantığını, kanıtıyla koda taşır
SQL Server stored procedure'larının envanterini çıkarır, onları okunabilir C# koduna çevirir ve yeni kodun eski prosedürle aynı sonucu ürettiğini gerçek çağrılarla kanıtlar. Çevrilemeyeni nedenini söyleyerek reddeder.
- 1021 / 1041
- mojoPortal'da üretilen ve eşdeğer kanıtlanan prosedür
- 635 / 682
- DNN Platform'da, her biri kendi prosedürüne karşı
- Sıfır çağrı
- araç müşterinin makinesinden dışarı çıkmaz
Neden başladı
On yıllık bir .NET ve SQL Server sisteminde binlerce stored procedure olması olağan; iş kuralları zamanla oraya yerleşir. Kod review'dan, testten ve sürüm kontrolünden geçmeyen bu kod, buluta geçişin, servislere ayırmanın ve yapay zekâ destekli geliştirmenin önünde duvar olur: araçlar göremedikleri koda dokunamaz. Piyasadaki göç araçları prosedürü başka bir veritabanının prosedürüne çeviriyor, yani problemi taşıyor. Prosedürü uygulama koduna çevirip eşdeğerliğini kanıtlayan bir araç yoktu.
Kritik kararlar
- 01
Asıl ürün çeviri değil, kanıt
Kurumsal bir ekip, yirmi yıllık bir prosedürü "muhtemelen doğru" bir çeviriyle silmez. Bu yüzden kanıt katmanı çeviriden önce kuruldu: üretilen kod ve eski prosedür, tek kullanımlık bir veritabanı kopyasında aynı çağrılarla yan yana çalıştırılır; dönen sonuç da veritabanında kalan değişiklik de karşılaştırılır.
- 02
Yaklaşık çevirme, reddet
T-SQL'in NULL mantığı üç değerli, C#'ınki iki. Koşulu göründüğü gibi yazmak, NULL parametreli bir çağrıda prosedürün döndürmediği satırı döndürüyordu — ölçüldü. Üretilen kod bu yüzden T-SQL'in anlamını açıkça taşıyor; o anlamla yazılamayan her yapı da gerekçesiyle reddediliyor.
- 03
Motor ortak, çıktının şekli müşterinin
Her ekibin istediği kod farklı: kendi repository deseni, kendi katmanları, kendi dosya düzeni. Motor ara bir temsil üretir, şablonlar onu ekibin koduna basar. Değişken kısım tek katmanda kaldığı için ürün her müşteride aynı kalır; müşteriye özel iş, kodu ekiple birlikte mevcut projeye taşıyan danışmanlıkta yapılır.
- 04
Veri makineden çıkmaz
Tek dosya bir komut satırı aracı, müşterinin kendi makinesinde çalışır ve dışarı hiçbir çağrı yapmaz. Kapalı bir aracı üretim veritabanına bağlayacak kurumun ilk sorusu "bu ne gönderiyor?" olur; cevabı baştan hazır.
Bugün nerede
Envanter ve kanıt katmanları bitti, kod üretimi ilerliyor. Dapper ve EF Core hedefleri açık şemalarda ölçülüyor; üretilen her metot kendi prosedürüne karşı kanıtlanıyor. Sırada daha fazla T-SQL yapısı, T-SQL dışında kaynaklar ve C# dışında hedefler var.
Ürünün kendisi
Özellik listesi, ekran görüntüleri ve dokümantasyon ürünün kendi sitesinde.