Linter
Wippy incluye un linter integrado que realiza verificacion de tipos y analisis estatico en codigo Lua. Ejecutalo con wippy lint.
wippy lint # Check all Lua entrieswippy lint --level hint # Show all diagnostics including hintswippy lint --json # Output in JSON formatwippy lint --ns app # Check only the app namespacewippy lint --summary # Group results by error codeQue se Verifica
Sección titulada «Que se Verifica»El linter valida todos los tipos de entradas Lua:
function.lua- Funcioneslibrary.lua- Bibliotecasprocess.lua- Procesosworkflow.lua- Workflows
Sus variantes precompiladas .bc (function.lua.bc, library.lua.bc, process.lua.bc, workflow.lua.bc) tambien son analizadas.
Cada entrada es analizada, verificada en tipos y examinada en busca de problemas de correccion.
Niveles de Severidad
Sección titulada «Niveles de Severidad»Los diagnosticos tienen tres niveles de severidad:
| Nivel | Descripcion |
|---|---|
error | Errores de tipo y problemas de correccion que deben corregirse |
warning | Posibles bugs o patrones problematicos |
hint | Sugerencias de estilo y notas informativas |
Controla que niveles aparecen con --level:
wippy lint --level error # Errors onlywippy lint --level warning # Warnings and errors (default)wippy lint --level hint # EverythingCodigos de Error
Sección titulada «Codigos de Error»Errores de Analisis
Sección titulada «Errores de Analisis»| Codigo | Descripcion |
|---|---|
P0001 | Error de sintaxis Lua - el codigo fuente no puede ser analizado |
Errores de Verificacion de Tipos (serie E)
Sección titulada «Errores de Verificacion de Tipos (serie E)»Los errores del verificador de tipos (E0001+) reportan problemas encontrados por el sistema de tipos: incompatibilidades de tipos, variables no definidas, operaciones invalidas y problemas de correccion similares. Siempre se reportan como errores.
local x: number = "hello" -- E: string not assignable to number
local function add(a: number, b: number): number return a + bend
add("one", "two") -- E: string not assignable to numberAdvertencias de Reglas de Lint (Serie W)
Sección titulada «Advertencias de Reglas de Lint (Serie W)»Las reglas de lint proporcionan verificaciones de estilo y calidad. Activalas con --rules:
wippy lint --rules| Codigo | Regla | Descripcion |
|---|---|---|
W0001 | no-empty-blocks | Bloques de sentencias vacios |
W0002 | no-global-assign | Asignacion a variables globales |
W0003 | no-self-compare | Comparacion de un valor consigo mismo |
W0004 | no-unused-vars | Variables locales sin usar |
W0005 | no-unused-params | Parametros de funcion sin usar |
W0006 | no-unused-imports | Importaciones sin usar |
W0007 | no-shadowed-vars | Variable oculta el ambito externo |
Sin --rules, solo se realiza la verificacion de tipos (codigos P y E).
Filtrado
Sección titulada «Filtrado»Por Namespace
Sección titulada «Por Namespace»Verifica namespaces especificos usando --ns:
wippy lint --ns app # Exact namespace matchwippy lint --ns "app.*" # All under appwippy lint --ns app --ns lib # Multiple namespacesLas dependencias de las entradas seleccionadas se cargan para la verificacion de tipos pero sus diagnosticos no se reportan.
Por Codigo de Error
Sección titulada «Por Codigo de Error»Filtra diagnosticos por codigo:
wippy lint --code E0001wippy lint --code E0001 --code E0004Por Cantidad
Sección titulada «Por Cantidad»Limita la cantidad de diagnosticos mostrados:
wippy lint --limit 10 # Show first 10 issuesFormatos de Salida
Sección titulada «Formatos de Salida»Formato Tabla (Por Defecto)
Sección titulada «Formato Tabla (Por Defecto)»Cada diagnostico se muestra con contexto del codigo fuente, ubicacion del archivo y el mensaje de error. Los resultados se ordenan por entrada, severidad y numero de linea.
Una linea de resumen muestra los totales:
Checked 42 entries: 5 errors, 12 warningsFormato Resumen
Sección titulada «Formato Resumen»Agrupa diagnosticos por namespace y codigo de error:
wippy lint --summaryBy namespace:
app 15 issues (5 errors, 10 warnings) lib 2 issues (2 warnings)
By error code:
E0001 [error ] 5 occurrences E0004 [error ] 3 occurrences
Checked 42 entries: 5 errors, 12 warningsFormato JSON
Sección titulada «Formato JSON»Salida legible por maquinas para integracion CI/CD:
wippy lint --json{ "diagnostics": [ { "entry_id": "app:handler", "code": "E0001", "severity": "error", "message": "string not assignable to number", "line": 10, "column": 5 } ], "total_entries": 42, "error_count": 5, "warning_count": 12, "hint_count": 0}El linter almacena resultados en cache para acelerar ejecuciones repetidas. Las claves de cache se basan en el hash del codigo fuente, nombre del metodo, dependencias y configuracion del sistema de tipos.
Limpia el cache si los resultados parecen desactualizados:
wippy lint --cache-resetIntegracion CI/CD
Sección titulada «Integracion CI/CD»Usa la salida JSON y codigos de salida para verificaciones automatizadas:
wippy lint --json --level error > lint-results.jsonEl linter termina con codigo 0 cuando no se encuentran errores, y con un valor distinto de cero cuando hay errores.
Ejemplo de paso en GitHub Actions:
- name: Lint run: wippy lint --level warningReferencia de Flags
Sección titulada «Referencia de Flags»| Flag | Corto | Por Defecto | Descripcion |
|---|---|---|---|
--level | warning | Nivel minimo de severidad (error, warning, hint) | |
--json | false | Salida en formato JSON | |
--ns | Filtrar por patrones de namespace | ||
--code | Filtrar por codigos de error | ||
--limit | 0 | Maximo de diagnosticos a mostrar (0 = ilimitado) | |
--summary | false | Agrupar por codigo de error | |
--no-color | false | Desactivar salida con colores | |
--rules | false | Activar reglas de lint (verificaciones de estilo/calidad serie W) | |
--cache-reset | false | Limpiar cache antes del analisis | |
--lock-file | -l | wippy.lock | Ruta al archivo de bloqueo |