Producto
Archito NuevoAprende de sus merge requests y señala lo atascado Integraciones 25
Soluciones
Por rol
Por qué AppArch
Recursos
Clientes Precios Contacto
Idioma
Contáctanos

Los fallos en los que sus tests no pensaron, seguidos de la petición a la base de datos.

SmartScan sigue cada punto de entrada - una acción web, un job, un consumidor de mensajes, una pantalla de una app - a través de servicios y handlers hasta la base de datos o la petición saliente, y señala lo que puede romperse: una búsqueda que puede volver vacía, dos escrituras que pueden quedarse a medias, una columna que la entrada puede desbordar. Cada riesgo llega con la cadena que lleva a él.

Pantallas de una instalación en funcionamiento

Qué busca

Cuatro tipos de riesgo, cada uno hallado en un camino real por su código - no en un patrón que alguien escribió.

Registro no encontrado

Una búsqueda con datos de la petición puede volver vacía y el código usa el resultado sin comprobar: un 500 en lugar de un 404, o un mensaje engañoso.

Escritura parcial

Dos commits separados en un mismo flujo sin transacción: si el segundo falla, el primero queda escrito.

Huecos de contrato

La petición puede traer más de lo que cabe en la columna, una columna obligatoria no se comprueba por el camino, o una columna única se escribe sin comprobar la unicidad.

Frontend y móvil

Una petición cuyo fallo nadie maneja, un error tomado por éxito, una respuesta usada sin comprobar: la pantalla se cae o se queda en silencio.

Lo que SmartScan ve en una sola petición

Un pedido se crea en seis pasos. Cada paso es una llamada real en el código; SmartScan los sigue y se detiene donde algo puede romperse.

  1. Punto de entrada POST /api/orders OrdersController.Create
  2. Petición mediator mediator.Send(CreateOrderCommand)
  3. Handler CreateOrderHandler.Handle
  4. De la interfaz a la implementación ICustomerRepository.FindAsync CustomerRepository No encontrado: el resultado se usa sin comprobarlo
  5. Escrituras SaveChangesAsync() ×2 Escritura parcial: dos commits, sin transacción
  6. Base de datos orders · order_lines

Cómo funciona

La unidad es una cadena: desde donde entra una petición hasta donde toca los datos.

  1. 01

    Empezar en cada punto de entrada

    Acciones web, jobs programados y consumidores de mensajes; en frontends y apps, eventos, efectos, rutas y pantallas.

  2. 02

    Seguir la cadena

    De la interfaz a la implementación, sobrescrituras, peticiones de mediator a sus handlers - hasta el ORM o la llamada HTTP.

  3. 03

    Descartar lo protegido

    Una comprobación, una búsqueda que lanza excepción, un validador con el límite correcto - en el propio camino de la escritura - cuentan. Una cadena sin riesgo no se informa.

  4. 04

    Mostrar el camino

    Cada riesgo lista sus pasos con archivo y línea, del punto de entrada a la columna.

Un aviso, no una barrera

SmartScan no es un conjunto de reglas: nunca baja una puntuación ni hace fallar un pipeline. Cada riesgo se cierra uno a uno, como cualquier hallazgo. Se activa por proyecto, viene desactivado y solo se ejecuta en análisis completos, así las comprobaciones de MR siguen siendo rápidas.

En los nueve lenguajes del collector

.NET Java Python Go PHP Ruby TypeScript Kotlin Swift

Una regla y un riesgo de SmartScan no son lo mismo

Ambos aparecen en el mismo panel, pero responden preguntas distintas y se comportan de forma diferente.

Hallazgo de reglaRiesgo de SmartScan
Qué buscaUn patrón conocido que alguien escribióUna ruta a través de su propio código
PuntuaciónLa reduce, según la severidadNunca la toca
PipelinePuede detenerlo con un umbral fail-onNunca lo detiene
Cuándo se ejecutaRevisiones de merge request y análisis completosSolo análisis completos, activado por proyecto
Qué obtieneArchivo, línea y el razonamiento de la reglaToda la cadena, paso a paso, con archivo y línea

Preguntas sobre SmartScan

¿Es otro conjunto de reglas?
No. Un conjunto de reglas crece con cada escenario que alguien imagina; SmartScan sigue los caminos del propio código. Avisa, nunca baja una puntuación y nunca hace fallar un pipeline.
¿Cómo se evitan las falsas alarmas?
Una protección solo cuenta en el propio camino de la escritura: una comprobación explícita, una búsqueda que lanza excepción si no encuentra nada, un validador con el límite correcto. Cada tipo de riesgo se comprobó a mano en código real antes de publicarse.
¿Ralentiza las revisiones de merge request?
No. SmartScan solo se ejecuta en análisis completos del repositorio; las comprobaciones de MR mantienen su camino rápido.
¿Qué lenguajes y frameworks?
Los nueve lenguajes del collector: .NET, Java, Python, Go, PHP, Ruby, TypeScript (frontends con React y Next.js incluidos), Kotlin (Android y Spring) y Swift (iOS).

Míralo en el producto

Todas las capturas

Encuentre los fallos antes que sus usuarios

Active SmartScan en un proyecto durante una PoC; el siguiente análisis completo muestra cada cadena en riesgo.