Skip to content

Corrige #113: adiciona diagnósticos em tempo real para LMHT, FolEs, LinConEs e delprops - #125

Merged
leonelsanchesdasilva merged 5 commits into
DesignLiquido:principalfrom
kunaaaalcodes:fix-113-diagnostics-web-languages
Jul 29, 2026
Merged

Corrige #113: adiciona diagnósticos em tempo real para LMHT, FolEs, LinConEs e delprops#125
leonelsanchesdasilva merged 5 commits into
DesignLiquido:principalfrom
kunaaaalcodes:fix-113-diagnostics-web-languages

Conversation

@kunaaaalcodes

Copy link
Copy Markdown
Contributor

Closes #113

Descrição

Esta PR adiciona suporte completo de diagnósticos em tempo real para as quatro linguagens web restantes do ecossistema Líquido:

  • LMHT
  • FolEs
  • LinConEs
  • delprops (configuracao.delprops)

Anteriormente, apenas oito linguagens possuíam análise em tempo real (birl, delegua, delegua-testes, mapler, pitugues, portugolstudio, potigol e visualg). Com isso, erros nas linguagens web só eram detectados durante a execução, frequentemente causando falhas no servidor.

Agora esses erros são exibidos diretamente no editor através do sistema de diagnósticos do VS Code.


Problema

A análise em tempo real cobria apenas oito linguagens, deixando sem validação as seguintes linguagens do ecossistema Líquido:

  • LMHT
  • FolEs
  • LinConEs
  • delprops (configuracao.delprops)

Isso fazia com que erros como:

  • cor-de-fundo em vez de cor-fundo no FolEs;
  • tags fechadas incorretamente no LMHT;
  • propriedades inválidas em configuracao.delprops;

fossem detectados somente em tempo de execução, podendo interromper a aplicação.

Na prática, erros simples de sintaxe deixavam de ser avisos no editor e se transformavam em falhas de runtime.


Solução

Foram adicionados provedores de diagnóstico para as quatro linguagens web, reutilizando os pacotes oficiais sempre que possível e implementando validadores próprios quando necessário.

LMHT

Arquivo

fontes/analise-codigo/validar-lmht.ts

Implementado um validador próprio responsável por verificar:

  • Tags desconhecidas (comparando com aproximadamente 80 tags suportadas);
  • Atributos desconhecidos (comparando com aproximadamente 60 atributos conhecidos);
  • Aninhamento incorreto entre elementos;
  • Tags abertas sem fechamento correspondente.

FolEs

Arquivo

fontes/analise-codigo/validar-foles.ts

Reutiliza o pacote oficial:

@designliquido/foles

Foram adicionadas validações para:

  • Erros léxicos através de Lexador.mapear();
  • Erros sintáticos através de AvaliadorSintatico.analisar();
  • Modificadores desconhecidos utilizando a lista listaModificadores disponibilizada pelo pacote.

LinConEs

Arquivo

fontes/analise-codigo/index.ts

Reutiliza o pacote:

@designliquido/lincones-js

através de importação dinâmica.

São reportados:

  • erros léxicos utilizando LexadorLinConEs.mapear();
  • erros sintáticos utilizando AvaliadorSintaticoLinConEs.analisar().

delprops

Arquivo

fontes/linguagens/delprops/validador-delprops.ts

O validador foi reescrito para utilizar a API oficial do pacote:

@designliquido/delprops

As validações incluem:

Sintaxe

  • linha sem =;
  • chave vazia;
  • valor vazio.

Namespace incompleto

Detecta casos como:

liquido.roteador = verdadeiro

onde o namespace foi utilizado incorretamente.

Propriedades desconhecidas

Verifica se a propriedade existe dentro do namespace correspondente.

Tipo incorreto

Exemplo:

cors = 42

quando o tipo esperado é lógico.

Valor não permitido

Exemplo:

tecnologia = 'session'

quando apenas jwt é aceito.

Tipo não reconhecido

Detecta valores sem aspas que não representam:

  • números;
  • verdadeiro;
  • falso.

Além disso, o validador registra automaticamente os namespaces:

  • liquido
  • liquido.aplicacao
  • liquido.roteador
  • liquido.dados
  • liquido.autenticacao

utilizando temRegistro() para evitar registros duplicados.


Integração com a extensão

fontes/extensao.ts (Desktop)

Foram atualizados os seguintes eventos:

onDidOpenTextDocument

  • FolEs → executarAnalises()
  • LMHT → executarAnalises()
  • LinConEs → executarAnalises()
  • delprops → validarDelprops()

onDidChangeActiveTextEditor

Mesmo comportamento do evento de abertura de documentos.

onDidChangeTextDocument

  • FolEs → análise com debounce;
  • LinConEs → análise com debounce;
  • LMHT → análise com debounce + tentarFecharTagLmht();
  • delprops → validação imediata (sem debounce).

onDidCloseTextDocument

Remove os diagnósticos associados ao diagnosticsDelprops.

fontes/extensao-web.ts (Web)

Recebeu as mesmas alterações da extensão Desktop.

Além disso, quando configuracao.delprops é salvo, as rotas dependentes são recalculadas automaticamente.


Testes

Atualizado:

testes/linguagens/delprops/validador-delprops.test.ts

Principais mudanças:

  • 46 testes atualizados para refletir o comportamento do pacote @designliquido/delprops v0.3.0.

Validação final:

  • 1061 testes executados com sucesso;
  • npx tsc --noEmit executado sem erros.

Arquivos alterados

Arquivo Descrição
fontes/analise-codigo/validar-lmht.ts Adiciona diagnósticos para LMHT
fontes/analise-codigo/validar-foles.ts Adiciona diagnósticos para FolEs
fontes/linguagens/delprops/validador-delprops.ts Reescreve o validador utilizando o pacote oficial
fontes/analise-codigo/index.ts Integra diagnósticos para LinConEs
fontes/extensao.ts Integra os novos diagnósticos na extensão Desktop
fontes/extensao-web.ts Integra os novos diagnósticos na extensão Web
testes/linguagens/delprops/validador-delprops.test.ts Atualiza os testes do validador

Limitações conhecidas

  • O pacote @designliquido/delprops suporta apenas strings entre aspas simples ('texto'), não aceitando aspas duplas ("texto").

  • Comentários inline após um valor ainda não são tratados pelo parser.

Exemplo:

porta = 8080 // comentário
  • A propriedade:
liquido.dados.<fonte>.motor

não é reconhecida pelo pacote, que utiliza:

tecnologia

como nome oficial da propriedade.


Resultado

Com esta PR, todas as linguagens suportadas pelo ecossistema Líquido passam a contar com diagnósticos em tempo real no editor.

Os desenvolvedores agora recebem feedback imediato para erros em:

  • LMHT
  • FolEs
  • LinConEs
  • delprops

reduzindo falhas em tempo de execução e melhorando significativamente a experiência de desenvolvimento.


Closes #113

…MHT, FolEs, LinConEs e delprops

- LMHT: validar-lmht.ts — valida tags desconhecidas, atributos inválidos,
  aninhamento incorreto e tags não fechadas
- FolEs: validar-foles.ts — reusa @designliquido/foles para erros léxicos,
  sintáticos e modificadores desconhecidos
- LinConEs: integrado em analise-codigo/index.ts com @designliquido/lincones-js
- delprops: validador-delprops.ts reescrito com API @designliquido/delprops
  (analisar, validar, registrar, obter, temRegistro)
- extensao.ts e extensao-web.ts: conectados nos eventos de abertura, troca de
  editor e digitação para todas as 4 linguagens
- Testes: 46 testes para delprops atualizados conforme comportamento real do
  pacote; suite completa (1061 testes) passa
- TypeScript: npx tsc --noEmit sem erros

@leonelsanchesdasilva leonelsanchesdasilva left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Obrigado!

Comment thread fontes/analise-codigo/validar-lmht.ts Fixed
Comment thread fontes/analise-codigo/validar-lmht.ts Fixed
Kunal Jaiswal added 2 commits July 29, 2026 09:53
Combina as mudanças de ambas as branches:
- Mantém garantirProvedoresLinguagem() para linguagens web (upstream)
- Adiciona foles, lmht, lincones à lista de diagnósticos em tempo real (PR)
- Mantém validação delprops no Web (PR)
- Mantém onDidCreateFiles, onDidDeleteFiles, onDidRenameFiles (upstream)
Comment thread fontes/analise-codigo/validar-lmht.ts Fixed
O regex /<!--[\s\S]*?-->/g pode deixar <!-- no texto se não houver
--> correspondente. Adiciona um segundo replace para remover qualquer
<!-- sem fechamento até o final do arquivo, eliminando o alerta
'Incomplete multi-character sanitization' do CodeQL.
Comment thread fontes/analise-codigo/validar-lmht.ts Fixed
Comment thread fontes/analise-codigo/validar-lmht.ts Fixed
… comentários HTML

O regex /<!--[\\s\\S]*?-->/g era rejeitado pelo CodeQL por poder
deixar <!-- no texto quando não há --> correspondente. A nova
função removerComentariosHtml() usa indexOf em um loop simples,
sem regex de substituição, eliminando completamente o alerta de
'Incomplete multi-character sanitization'.
@leonelsanchesdasilva
leonelsanchesdasilva merged commit 5648396 into DesignLiquido:principal Jul 29, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Diagnósticos não alcançam as linguagens web (LMHT, FolEs, LinConEs, delprops)

3 participants