Verificação prévia de YAML entre ambientes
Cole um documento YAML — workflow do GitHub Actions, arquivo Docker Compose, manifesto Kubernetes ou YAML simples para uma biblioteca genérica — e veja quais recursos estruturais e valores ambíguos se comportariam de maneira diferente conforme a ferramenta que o lê. Esta ferramenta se baseia no Analisador de diferenças semânticas de YAML: reutiliza integralmente a detecção de ambiguidade de escalares entre YAML 1.1 e 1.2 (‘problema da Noruega’ e casos relacionados) e acrescenta verificações estruturais importantes para consumidores reais: âncoras/aliases, merge keys, indentação com tabulação, chaves duplicadas e uso de estilo flow.
O processamento é feito localmente no seu navegador. Seu arquivo nunca é enviado.
Como usar esta ferramenta ferramenta
- Cole seu YAML ou carregue arquivo .yaml/.yml; nada sai do navegador.
- Selecione ‘Verificar YAML’.
- Confira cada problema sinalizado: quais ambientes/ferramentas são afetados e por quê.
- Use a reescrita portátil sugerida (tabs convertidos em espaços, escalares ambíguos entre aspas) quando oferecida. Alguns problemas (âncoras, merge keys, chaves duplicadas) são apenas sinalizados, pois uma correção automática pode alterar a estrutura.
Premissas
- A detecção de ambiguidade de escalares (regra 1) é idêntica à lógica do Analisador de diferenças semânticas de YAML: a mesma comparação YAML 1.1 versus Core Schema YAML 1.2, reutilizada diretamente e contextualizada para ambientes específicos (por exemplo, `flag: on` em matriz do GitHub Actions).
- As verificações estruturais (âncoras/aliases, merge keys, tabulação, chaves duplicadas, estilo flow) são verificações por padrão/indentação dentro do mesmo escopo restrito de mapeamentos em bloco do analisador semântico; não é um parser YAML completo.
- Os ambientes ‘afetados’ refletem restrições reais amplamente documentadas (por exemplo, remoção de suporte a merge keys no Kubernetes, restrições de aliases do kubectl), não uma auditoria exaustiva de todas as versões de cada ferramenta.
Fontes e dados de referência
Metodologia
O documento é analisado em duas camadas. Primeiro, cada escalar plain é resolvido pelas regras Core Schema de YAML 1.1 e YAML 1.2 (lógica idêntica à do Analisador de diferenças semânticas de YAML); divergências são sinalizadas e explicadas quanto à relevância para ambientes específicos. Depois, o documento é examinado em busca de recursos estruturais com variação entre consumidores reais: uso de âncora/alias (aviso: algumas ferramentas restringem ou desativam para impedir exaustão de recursos por expansão recursiva), merge keys (erro: extensão de YAML 1.1 fora da especificação YAML 1.2, sem suporte no Kubernetes e em muitos parsers estritos), indentação com tabulação (erro: proibida pela especificação YAML), chaves duplicadas no mesmo mapeamento (aviso: comportamento não especificado; a maioria dos parsers mantém silenciosamente a última) e coleções flow em documento de estilo bloco (informação: dica de baixa confiança, não problema real).
Exemplo resolvido
Valor de matriz do GitHub Actions com aparência de sinalizador
Dados de entrada: flag: on
Resultado: Reutiliza a detecção do problema da Noruega: YAML 1.1 lê ‘on’ como booleano true; YAML 1.2 lê como string ‘on’. Em uma matriz ou valor env do GitHub Actions, esse é exatamente o tipo de valor que provavelmente deveria permanecer string.
Merge key do Docker Compose
Dados de entrada: <<: *defaults
Resultado: Sinalizada como erro: merge keys são extensão de YAML 1.1, não fazem parte da especificação YAML 1.2 e não têm suporte no processamento YAML do Kubernetes nem em vários parsers estritos. Não há reescrita automática; se precisar de versão portátil, resolva manualmente o conteúdo da âncora referenciada.
Manifesto Kubernetes indentado com tabs
Dados de entrada: \tname: demo
Resultado: Sinalizado como erro (tabs são proibidos pela especificação YAML, não apenas desaconselhados) com reescrita sugerida convertendo cada tab inicial em 2 espaços.
Orientações práticas
- Trate merge keys e indentação com tabulação como correções obrigatórias: são proibidas pela especificação ou não têm suporte explícito em ferramentas prováveis, como Kubernetes e parsers estritos.
- Revise âncoras/aliases se o documento passar por kubectl ou loader YAML com foco em segurança, pois alguns limitam expansão de aliases para impedir exaustão por YAML bomb.
- Revise valores sinalizados pela regra reutilizada de ambiguidade de escalares como faria no analisador semântico; coloque entre aspas se devem permanecer strings.
Erros comuns
- Presumir que uma merge key que funciona no Docker Compose também funciona em manifesto Kubernetes; o Kubernetes removeu esse suporte.
- Copiar um bloco sem remover ou renomear a chave original, produzindo duplicata silenciosa que a maioria dos parsers resolve mantendo apenas a última.
- Misturar tabs e espaços após copiar texto de uma fonte indentada por tabulação: alguns parsers toleram, a maioria não; em um editor a aparência pode ser igual.
Perguntas frequentes
Por que esta ferramenta se sobrepõe ao Analisador de diferenças semânticas de YAML?
Ela não duplica a lógica: reutiliza-a. A regra 1 chama diretamente a lógica de resolução de escalares daquela ferramenta e acrescenta verificações estruturais (âncoras, merge keys, tabs, chaves duplicadas, estilo flow) que o analisador semântico deliberadamente não cobre.
Por que merge keys são erro, mas âncoras/aliases são apenas aviso?
Merge keys estão fora da especificação YAML 1.2 e ferramentas como o processamento YAML do Kubernetes não as suportam explicitamente: é uma falha quase certa. Âncoras/aliases são recursos válidos e amplamente suportados do YAML básico, mas algumas ferramentas os restringem por segurança, um risco real porém menos certo.
Por que a ferramenta não corrige automaticamente âncoras, merge keys ou chaves duplicadas?
Cada caso exige entender o significado pretendido do documento (conteúdo expandido da âncora, qual duplicata é intencional), não apenas alterar mecanicamente o texto. A ferramenta sinaliza e explica a correção manual em vez de adivinhar.
Última revisão:
Conjunto de verificações estruturais restritas e baseadas em padrões, mais comparação reutilizada de ambiguidade de escalares; não é parser YAML completo nem validador do comportamento exato de uma ferramenta. Valores internos de coleções flow não são examinados quanto a ambiguidades de escalares (como no escopo documentado do analisador semântico), e a detecção de chaves duplicadas acompanha níveis de mapeamento pela indentação, sem construir uma árvore completa do documento.
As preferências de tema e de ferramentas, além das listas de itens salvos e usados recentemente, são armazenadas somente neste navegador.