Linter
O Wippy inclui um linter integrado que realiza verificacao de tipos e analise estatica em codigo Lua. Execute-o com wippy lint.
wippy lint # Verifica todas as entradas Luawippy lint --level hint # Mostra todos os diagnosticos incluindo hintswippy lint --json # Saida em formato JSONwippy lint --ns app # Verifica apenas o namespace appwippy lint --summary # Agrupa resultados por codigo de erroO Que e Verificado
Seção intitulada “O Que e Verificado”O linter valida todos os tipos de entradas Lua:
function.lua- Funcoeslibrary.lua- Bibliotecasprocess.lua- Processosworkflow.lua- Workflows
Suas variantes pre-compiladas .bc (function.lua.bc, library.lua.bc, process.lua.bc, workflow.lua.bc) tambem sao analisadas.
Cada entrada e analisada sintaticamente, verificada quanto a tipos e analisada para problemas de corretude.
Niveis de Severidade
Seção intitulada “Niveis de Severidade”Os diagnosticos possuem tres niveis de severidade:
| Nivel | Descricao |
|---|---|
error | Erros de tipo e problemas de corretude que devem ser corrigidos |
warning | Provaveis bugs ou padroes problematicos |
hint | Sugestoes de estilo e notas informativas |
Controle quais niveis aparecem com --level:
wippy lint --level error # Apenas erroswippy lint --level warning # Warnings e erros (padrao)wippy lint --level hint # TudoCodigos de Erro
Seção intitulada “Codigos de Erro”Erros de Parse
Seção intitulada “Erros de Parse”| Codigo | Descricao |
|---|---|
P0001 | Erro de sintaxe Lua - codigo-fonte nao pode ser analisado |
Erros de Verificacao de Tipos (serie E)
Seção intitulada “Erros de Verificacao de Tipos (serie E)”Os erros do verificador de tipos (E0001+) reportam problemas encontrados pelo sistema de tipos: incompatibilidades de tipo, variaveis indefinidas, operacoes invalidas e problemas de corretude similares. Estes sao sempre reportados como erros.
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 numberAvisos de Regras de Lint (Serie W)
Seção intitulada “Avisos de Regras de Lint (Serie W)”As regras de lint fornecem verificacoes de estilo e qualidade. Ative-as com --rules:
wippy lint --rules| Codigo | Regra | Descricao |
|---|---|---|
W0001 | no-empty-blocks | Blocos de instrucoes vazios |
W0002 | no-global-assign | Atribuicao a variaveis globais |
W0003 | no-self-compare | Comparacao de um valor consigo mesmo |
W0004 | no-unused-vars | Variaveis locais nao utilizadas |
W0005 | no-unused-params | Parametros de funcao nao utilizados |
W0006 | no-unused-imports | Importacoes nao utilizadas |
W0007 | no-shadowed-vars | Variavel oculta o escopo externo |
Sem --rules, apenas a verificacao de tipos (codigos P e E) e realizada.
Filtragem
Seção intitulada “Filtragem”Por Namespace
Seção intitulada “Por Namespace”Verifique namespaces especificos usando --ns:
wippy lint --ns app # Correspondencia exata de namespacewippy lint --ns "app.*" # Tudo dentro de appwippy lint --ns app --ns lib # Multiplos namespacesDependencias das entradas selecionadas sao carregadas para verificacao de tipos, mas seus diagnosticos nao sao reportados.
Por Codigo de Erro
Seção intitulada “Por Codigo de Erro”Filtre diagnosticos por codigo:
wippy lint --code E0001wippy lint --code E0001 --code E0004Por Quantidade
Seção intitulada “Por Quantidade”Limite o numero de diagnosticos exibidos:
wippy lint --limit 10 # Mostra os primeiros 10 problemasFormatos de Saida
Seção intitulada “Formatos de Saida”Formato Tabela (Padrao)
Seção intitulada “Formato Tabela (Padrao)”Cada diagnostico e exibido com contexto do codigo-fonte, localizacao do arquivo e a mensagem de erro. Os resultados sao ordenados por entrada, severidade e numero de linha.
Uma linha de resumo mostra os totais:
Checked 42 entries: 5 errors, 12 warningsFormato Resumo
Seção intitulada “Formato Resumo”Agrupa diagnosticos por namespace e codigo de erro:
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
Seção intitulada “Formato JSON”Saida legivel por maquina para integracao com 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}O linter armazena resultados em cache para acelerar execucoes repetidas. As chaves de cache sao baseadas no hash do codigo-fonte, nome do metodo, dependencias e configuracao do sistema de tipos.
Limpe o cache se os resultados parecerem desatualizados:
wippy lint --cache-resetIntegracao CI/CD
Seção intitulada “Integracao CI/CD”Use a saida JSON e codigos de saida para verificacoes automatizadas:
wippy lint --json --level error > lint-results.jsonO linter retorna codigo de saida 0 quando nenhum erro e encontrado, e diferente de zero quando ha erros.
Exemplo de step no GitHub Actions:
- name: Lint run: wippy lint --level warningReferencia de Flags
Seção intitulada “Referencia de Flags”| Flag | Curta | Padrao | Descricao |
|---|---|---|---|
--level | warning | Nivel minimo de severidade (error, warning, hint) | |
--json | false | Saida em formato JSON | |
--ns | Filtrar por padroes de namespace | ||
--code | Filtrar por codigos de erro | ||
--limit | 0 | Maximo de diagnosticos a exibir (0 = ilimitado) | |
--summary | false | Agrupar por codigo de erro | |
--no-color | false | Desabilitar saida colorida | |
--rules | false | Ativar regras de lint (verificacoes de estilo/qualidade serie W) | |
--cache-reset | false | Limpar cache antes de executar o lint | |
--lock-file | -l | wippy.lock | Caminho para o arquivo de lock |