Testlerinizin aklına gelmeyen hatalar, istekten veritabanına kadar izlenir.
SmartScan her giriş noktasını - bir web aksiyonu, bir job, bir mesaj tüketicisi, uygulamadaki bir ekran - servisler ve handler'lar üzerinden veritabanına ya da giden isteğe kadar izler ve yolda neyin kırılabileceğini işaretler: boş dönebilecek bir arama, yarım kalabilecek iki yazma, girdinin taşırabileceği bir sütun. Her risk, kendisine götüren zincirle gelir.
Çalışan bir kurulumdan ekranlar
Neyi arar
Dört tür risk; her biri birinin yazdığı bir kalıpta değil, kodunuzdaki gerçek bir yolda bulunur.
Kayıt bulunamadı
İstek verisiyle yapılan bir arama boş dönebilir ve kod sonucu kontrol etmeden kullanır: 404 yerine 500 ya da yanıltıcı bir mesaj.
Yarım yazma
Bir akışta, etrafında transaction olmayan iki ayrı commit: ikincisi başarısız olursa birincisi yazılı kalır.
Sözleşme boşlukları
İstek sütunun alabileceğinden fazlasını taşıyabilir, zorunlu bir sütunun yolda kontrolü yoktur ya da tekil bir sütun tekillik kontrolü olmadan yazılır.
Ön yüz ve mobil
Hatasını kimsenin ele almadığı bir istek, başarı sanılan bir hata, kontrol edilmeden kullanılan bir yanıt: ekran çöker ya da sessiz kalır.
SmartScan tek bir istekte neyi görür
Bir sipariş altı adımda oluşturulur. Her adım koddaki gerçek bir çağrıdır; SmartScan bunları izler ve bir şeyin kırılabileceği yerde durur.
- Giriş noktası
POST /api/ordersOrdersController.Create - Mediator isteği
mediator.Send(CreateOrderCommand) - Handler
CreateOrderHandler.Handle - Arayüzden gerçeklemeye
ICustomerRepository.FindAsyncCustomerRepository !Kayıt bulunamadı: sonuç kontrol edilmeden kullanılıyor - Yazmalar
SaveChangesAsync() ×2!Yarım yazma: iki commit, transaction yok - Veritabanı
orders · order_lines
Nasıl çalışır
Birim bir zincirdir: isteğin girdiği yerden veriye dokunduğu yere kadar.
- 01
Her giriş noktasından başlar
Web aksiyonları, zamanlanmış job'lar ve mesaj tüketicileri; ön yüz ve uygulamalarda olaylar, effect'ler, route'lar ve ekranlar.
- 02
Zinciri izler
Arayüzden gerçeklemeye, override'lar, mediator isteklerinden handler'lara - ORM'e ya da HTTP çağrısına kadar.
- 03
Korunanı eler
Yazmanın kendi yolundaki bir kontrol, kayıt bulamayınca hata fırlatan bir arama ya da uzunluğu doğru sınırlayan bir doğrulayıcı koruma sayılır. Risk taşımayan zincir raporlanmaz.
- 04
Yolu gösterir
Her risk adımlarını dosya ve satırıyla, giriş noktasından sütuna kadar listeler.
Uyarır, durdurmaz
SmartScan bir kural seti değildir: skoru asla düşürmez, pipeline'ı asla kırmaz. Her risk, her bulgu gibi tek tek kapatılabilir. Proje bazında açılır, varsayılan olarak kapalıdır ve yalnızca tam taramalarda çalışır; böylece merge request kontrolleri hızlı kalır.
Collector'ın dokuz dilinin hepsinde
Bir kural ile bir SmartScan riski aynı şey değildir
İkisi de aynı panelde görünür ama farklı sorulara cevap verir ve farklı davranır.
| Kural bulgusu | SmartScan riski | |
|---|---|---|
| Neye bakar | Birinin yazdığı bilinen bir kalıp | Kodunuzun içinden geçen gerçek bir yol |
| Skor | Önem derecesine göre düşürür | Asla etkilemez |
| Pipeline | Fail-on eşiğiyle durdurabilir | Asla durdurmaz |
| Ne zaman çalışır | Merge request incelemeleri ve tam taramalar | Yalnızca tam taramalar, proje bazında açılır |
| Ne verir | Dosya, satır ve kuralın gerekçesi | Zincirin tamamı, adım adım, dosya ve satırıyla |
SmartScan hakkında sorular
Bir kural seti daha mı?
Yanlış alarmlar nasıl azaltılıyor?
Merge request incelemelerini yavaşlatır mı?
Hangi diller ve çatılar?
Üründe görün
Tüm ekran görüntüleri
Hataları kullanıcılarınızdan önce bulun
PoC sırasında SmartScan'i bir proje için açın; bir sonraki tam tarama risk taşıyan her zinciri gösterir.