Miranda Linter (miralinter)
Una extensión con múltiples funcionalidades de ESLint para el lenguaje de programación Miranda. Detecta errores comunes de sintaxis y código.
Características
- 7 reglas de linting para validar código Miranda
- Configuración personalizable mediante
miralinter.config.json
- Detección de errores ejecutando el comando miralinter
- Pattern matching support (definiciones con múltiples cláusulas)
- Parámetros configurables por regla
Configuración
El linter se configura mediante el archivo miralinter.config.json en la raíz del proyecto.
Ejemplo de configuración
{
"rules": {
"bad-identation": {
"enabled": true,
"indentationSpaces": 4
},
"unbalanced-parentheses": {
"enabled": true
},
"unclosed-delimiters": {
"enabled": true
},
"incomplete-definition": {
"enabled": true
},
"duplicate-definition": {
"enabled": true
},
"undefined-variable": {
"enabled": true
},
"undefined-function": {
"enabled": true
}
}
}
Deshabilitar/Habilitar una regla
Para deshabilitar una regla hay que establecer el valor de enabled en false
Para activar una regla hay que establecer el valor de enabled en true
Regla activada
{
"rules": {
"undefined-variable": {
"enabled": true
}
}
}
Regla desactivada
{
"rules": {
"undefined-variable": {
"enabled": false
}
}
}
Reglas disponibles
bad-identation
Detecta indentación incorrecta que no es múltiplo del número de espacios esperado.
- Severidad: warning
- Parámetro:
indentationSpaces (default: 4)
Ejemplo:
f x =
x + 1 // ✗ Error: 2 espacios, se esperan múltiplos de 4
+ 2 // ✓ Válido: 4 espacios
unbalanced-parentheses
Detecta paréntesis desbalanceados o sin cerrar.
Ejemplo:
f x = (x + 1 // ✗ Error: paréntesis sin cerrar
f x = (x + 1) // ✓ Válido
unclosed-delimiters
Detecta corchetes [] y llaves {} sin cerrar.
Ejemplo:
nums = [1,2,3 // ✗ Error: corchete sin cerrar
nums = [1,2,3] // ✓ Válido
incomplete-definition
Detecta definiciones de función incompletas sin expresión.
Ejemplo:
double x = // ✗ Error: falta expresión
double x = 2 * x // ✓ Válido
duplicate-definition
Detecta definiciones duplicadas con el mismo patrón exacto.
Nota: Las definiciones con parámetros diferentes son válidas (pattern matching).
Ejemplo:
square x = x * x // ✓ Válido
square n = n ^ 2 // ✓ Válido (parámetros diferentes)
fact 0 = 1
fact 0 = 2 // ✗ Error: mismo patrón "fact 0"
undefined-variable
Detecta variables no definidas en una expresión.
Ejemplo:
f x = x + y // ✗ Error: y no definida
f x = x + 1 // ✓ Válido
undefined-function
Detecta llamadas a funciones no definidas.
Ejemplo:
main = factorial 5 // ✗ Error: factorial no definida
fact n = n * fact (n - 1)
main = fact 5 // ✓ Válido
Contribuciones
Para reportar bugs, contribuir o descargar el proyecto, leer el documento de CONTRIBUTING.md