Analisador de diferenças semânticas de YAML

Cole um documento YAML para ver quais valores seriam interpretados de forma diferente conforme o analisador siga as regras de resolução de tags de YAML 1.1 ou YAML 1.2. Não valida a sintaxe: verifica a semântica.

O processamento é feito localmente no seu navegador. Seu arquivo nunca é enviado.

Como usar esta ferramenta ferramenta

  1. Cole seu YAML ou carregue um arquivo .yaml/.yml; os dados não saem do navegador.
  2. Selecione ‘Analisar YAML’.
  3. Confira cada valor sinalizado: o que significa em YAML 1.1, o que significa em YAML 1.2 e por que isso importa.
  4. Use a reescrita portátil sugerida ou copie o documento corrigido para eliminar a ambiguidade.

Premissas

Fontes e dados de referência

Metodologia

Cada valor escalar plain do documento é resolvido separadamente pelas expressões regulares de resolução de tags de YAML 1.1 e do Core Schema de YAML 1.2. Se os esquemas discordarem no tipo ou valor resultante, o valor é sinalizado. Divergências booleano/nulo são marcadas como provavelmente problemáticas porque invertem silenciosamente a lógica de verdadeiro/falso; mudanças numéricas ou de timestamp são marcadas para revisão porque alteram valor ou tipo, mas têm menor probabilidade de inverter diretamente uma condição.

Exemplo resolvido

O clássico problema da Noruega

Dados de entrada: country: NO

Resultado: YAML 1.1 interpreta NO como o booleano false. YAML 1.2 interpreta como a string ‘NO’. É sinalizado como provavelmente problemático e sugere-se `country: "NO"`.

Número com zero à esquerda

Dados de entrada: retries: 0123

Resultado: YAML 1.1 interpreta 0123 como octal (83). YAML 1.2 interpreta como decimal (123): o mesmo texto representa dois números diferentes.

Orientações práticas
Erros comuns

Perguntas frequentes

Por que `enabled: yes` vira true?

Na lista de palavras booleanas de YAML 1.1, ‘yes’ (em qualquer combinação de maiúsculas e minúsculas) é resolvido como true. O Core Schema de YAML 1.2 reconhece somente true/false como booleanos; portanto, o mesmo texto permanece a string ‘yes’.

O que é o problema da Noruega no YAML?

O código ISO do país Noruega, NO, também é reconhecido por YAML 1.1 como a palavra booleana false. Por isso, `country: NO` sem aspas se transforma silenciosamente em `country: false` com um analisador YAML 1.1.

Colocar um valor entre aspas sempre o torna seguro?

Sim. Um escalar entre aspas (‘yes’, ‘NO’) é tratado como string explícita em todos os esquemas YAML. Esta ferramenta nunca sinaliza valores que já estejam entre aspas.

Por que o PyYAML pode transformar `yes` ou `no` em booleanos?

O SafeLoader do PyYAML, de uso comum, aplica a resolução de booleanos no estilo YAML 1.1, em que `yes` plain é true e `no` é false. Assim, `country: NO` pode ser carregado como booleano, enquanto o Core Schema de YAML 1.2 mantém NO como string. Esta ferramenta compara as regras dos esquemas publicados; não executa PyYAML nem verifica a configuração de um loader específico.

Última revisão:

Este é um verificador de resolução de escalares, não um analisador YAML completo: não analisa coleções flow, escalares de bloco, âncoras/aliases nem merge keys. A verificação prévia de YAML entre ambientes cobre mais casos. Também compara os dois esquemas publicados, não o comportamento real de uma biblioteca específica, que às vezes difere da especificação (consulte Pressupostos).

As preferências de tema e de ferramentas, além das listas de itens salvos e usados recentemente, são armazenadas somente neste navegador.