Saltar al contenido principal
Raigal asigna a cada repositorio una nota de calidad de 0 a 100. En lugar de limitarse a contar problemas brutos, mide la densidad de incidencias respecto al volumen de archivos. Así se evita que un proyecto grande suspenda únicamente por tener más código.

Fórmula de puntuación

Raigal evalúa las incidencias detectadas por sus seis motores mediante una escala logarítmica normalizada por densidad:
Donde:
  • Constante de suavizado (S): Por defecto vale 5 en la configuración (con reserva interna de 10). Evita que un aviso puntual en un proyecto de dos archivos hunda la nota.
  • Escala de densidad: Multiplicador de 5.0 aplicado sobre la densidad de deducción.
  • Archivos fuente efectivos: Recuento de archivos de código y pruebas analizados (o archivos cambiados en escaneos de pull requests).

Multiplicadores de severidad y peso de motores

Cada aviso detectado genera una penalización base según su severidad y el motor de procedencia:

Multiplicadores de severidad

  • error: 3.0 (provoca código de salida 1 de inmediato en CI)
  • warning: 1.0
  • info: 0.25

Peso de los motores

  • security: 1.5 (secretos en código, inyecciones, llamadas inseguras, dependencias vulnerables)
  • architecture: 1.0 (acoplamiento entre capas, importaciones circulares)
  • ai-slop: 1.0 (excepciones silenciadas, comentarios obvios, aserciones de tipo laxas)
  • code-quality: 0.8 (código muerto, funciones demasiado complejas, exceso de parámetros)
  • lint: 0.6 (Oxlint, Ruff, Clippy, Roslynator)
  • format: 0.3 (espacios en blanco, sangrado, orden de importaciones)

Topes dinámicos por regla

Para evitar que problemas menores repetidos (como 500 comas finales) oculten fallos de seguridad o suspendan un proyecto grande, las reglas se dividen en niveles con topes automáticos:

Escalado según el tamaño del repositorio

El tope máximo de penalización de cada regla escala con el número de archivos:

Ejemplos prácticos

Ejemplo 1: Microservicio (10 archivos, 1 advertencia)

  • Incidencia: 1 ai-slop/swallowed-exception (warning, severidad 1.0, motor 1.0, nivel strict 1.0).
  • Cálculo:

Ejemplo 2: Monolito (200 archivos, 500 avisos de formato)

  • Incidencias: 500 comas finales omitidas (format/trailing-comma, info 0.25, motor 0.3, nivel style 0.5, tope 8).
  • Cálculo:

Umbrales y bandas de estado

Raigal utiliza exclusivamente notas numéricas de 0 a 100. No se emplean letras (A - F).

Etiquetas en la CLI

Al ejecutar raigal scan o raigal ci, la terminal muestra el estado según los límites configurados: En CI, raigal ci devuelve código de salida 1 si la nota es menor que ci.failBelow (por defecto: 70) o si se detecta algún error.

Bandas de salud en el panel web

La interfaz de Raigal Cloud (app.raigal.dev) agrupa los proyectos en cuatro bandas visuales:

Veredictos del control de calidad (3 estados)

Las comprobaciones en pull requests devuelven uno de tres veredictos: