Les échecs auxquels vos tests n'ont pas pensé, suivis de la requête à la base.
SmartScan suit chaque point d'entrée - une action web, un job, un consommateur de messages, un écran d'application - à travers services et handlers jusqu'à la base ou à la requête sortante, et signale ce qui peut casser en route : une recherche qui peut revenir vide, deux écritures qui peuvent réussir à moitié, une colonne que l'entrée peut déborder. Chaque risque arrive avec la chaîne qui y mène.
Écrans d'une installation en fonctionnement
Ce qu'il recherche
Quatre types de risque, chacun trouvé sur un vrai chemin dans votre code - pas sur un motif écrit par quelqu'un.
Enregistrement introuvable
Une recherche fondée sur les données de la requête peut revenir vide et le code utilise le résultat sans vérifier : une 500 au lieu d'une 404, ou un message trompeur.
Écriture partielle
Deux commits séparés dans un même flux sans transaction autour : si le second échoue, le premier reste écrit.
Écarts de contrat
La requête peut contenir plus que la colonne n'accepte, une colonne obligatoire n'est pas vérifiée en route, ou une colonne unique est écrite sans contrôle d'unicité.
Frontend et mobile
Une requête dont personne ne gère l'échec, une erreur prise pour un succès, une réponse utilisée sans vérification : l'écran plante ou reste muet.
Ce que SmartScan voit dans une seule requête
Une commande est créée en six étapes. Chacune est un véritable appel dans le code ; SmartScan les suit et s'arrête là où quelque chose peut casser.
- Point d'entrée
POST /api/ordersOrdersController.Create - Requête mediator
mediator.Send(CreateOrderCommand) - Handler
CreateOrderHandler.Handle - De l'interface à l'implémentation
ICustomerRepository.FindAsyncCustomerRepository !Introuvable : le résultat est utilisé sans vérification - Écritures
SaveChangesAsync() ×2!Écriture partielle : deux commits, pas de transaction - Base de données
orders · order_lines
Comment ça marche
L'unité est une chaîne : de l'entrée d'une requête jusqu'à l'endroit où elle touche les données.
- 01
Partir de chaque point d'entrée
Actions web, jobs planifiés et consommateurs de messages ; dans les frontends et apps, événements, effets, routes et écrans.
- 02
Suivre la chaîne
De l'interface à l'implémentation, surcharges, requêtes mediator vers leurs handlers - jusqu'à l'ORM ou l'appel HTTP.
- 03
Écarter ce qui est protégé
Une vérification, une recherche qui lève une exception, un validateur avec la bonne limite - sur le chemin même de l'écriture - compte. Une chaîne sans risque n'est pas signalée.
- 04
Montrer le chemin
Chaque risque liste ses étapes avec fichier et ligne, du point d'entrée à la colonne.
Un avertissement, pas un verrou
SmartScan n'est pas un jeu de règles : il ne baisse jamais un score et ne fait jamais échouer un pipeline. Chaque risque se clôt un par un, comme tout constat. Il s'active par projet, est désactivé par défaut et ne tourne que sur les analyses complètes : les vérifications de MR restent rapides.
Dans les neuf langages du collecteur
Une règle et un risque SmartScan ne sont pas la même chose
Les deux apparaissent dans le même panneau, mais répondent à des questions différentes et se comportent différemment.
| Constat de règle | Risque SmartScan | |
|---|---|---|
| Ce qu'il cherche | Un motif connu que quelqu'un a décrit | Un chemin à travers votre propre code |
| Score | Le fait baisser, selon la sévérité | N'y touche jamais |
| Pipeline | Peut l'arrêter avec un seuil fail-on | Ne l'arrête jamais |
| Quand il s'exécute | Revues de merge request et analyses complètes | Analyses complètes uniquement, activé par projet |
| Ce que vous obtenez | Fichier, ligne et justification de la règle | Toute la chaîne, étape par étape, avec fichier et ligne |
Questions sur SmartScan
Est-ce un jeu de règles de plus ?
Comment limiter les fausses alertes ?
Ralentit-il les revues de merge request ?
Quels langages et frameworks ?
Voir dans le produit
Toutes les captures
Trouvez les échecs avant vos utilisateurs
Activez SmartScan pour un projet pendant un PoC ; la prochaine analyse complète montre chaque chaîne à risque.