Fórmula de puntuación
Raigal evalúa las incidencias detectadas por sus seis motores mediante una escala logarítmica normalizada por densidad:- Constante de suavizado (
S): Por defecto vale5en la configuración (con reserva interna de10). Evita que un aviso puntual en un proyecto de dos archivos hunda la nota. - Escala de densidad: Multiplicador de
5.0aplicado 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.0info: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, severidad1.0, motor1.0, nivel strict1.0). - Cálculo:
Ejemplo 2: Monolito (200 archivos, 500 avisos de formato)
- Incidencias: 500 comas finales omitidas (
format/trailing-comma,info0.25, motor0.3, nivel style0.5, tope8). - 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 ejecutarraigal 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: