Vérificateur de différences sémantiques YAML
Collez un document YAML pour voir précisément quelles valeurs seraient interprétées différemment selon que l'analyseur suit les règles de résolution des balises YAML 1.1 ou YAML 1.2. Il ne vérifie pas la syntaxe : il vérifie la sémantique.
Traitement effectué localement dans votre navigateur. Votre fichier n’est jamais téléversé.
Comment utiliser cet outil outil
- Collez votre YAML ou chargez un fichier .yaml/.yml ; rien ne quitte votre navigateur.
- Sélectionnez « Vérifier le YAML ».
- Examinez chaque valeur signalée : son sens en YAML 1.1, son sens en YAML 1.2 et l'importance de la différence.
- Utilisez la réécriture portable proposée ou copiez le document corrigé complet pour supprimer l'ambiguïté.
Hypothèses
- Compare littéralement les deux schémas publiés (types tag:yaml.org,2002 de YAML 1.1 et Core Schema de YAML 1.2), et non le comportement exact d'une bibliothèque particulière. Les analyseurs réels varient : le SafeLoader courant de PyYAML, par exemple, applique une résolution de type 1.1 même si le document se déclare en YAML 1.2.
- Seuls les scalaires non entre guillemets (plain) sont vérifiés ; une valeur déjà entre guillemets, telle que "yes", est sans ambiguïté dans tous les schémas et n'est jamais signalée.
- Reconnaît les correspondances `key: value`, y compris imbriquées. Les collections en style flow (`{a: 1}`), les scalaires en bloc (`|`, `>`) et les ancres/alias ne sont pas couverts ; voir les limites.
Sources et données de référence
Méthodologie
Chaque scalaire non entre guillemets est résolu séparément selon les expressions régulières de résolution des balises de YAML 1.1 et de Core Schema de YAML 1.2. Toute divergence de type ou de valeur est signalée. Une divergence booléen/null est considérée comme probablement problématique, car elle peut inverser silencieusement la logique vrai/faux ; une divergence numérique ou d'horodatage est signalée pour vérification, car le type ou la valeur change sans nécessairement inverser directement une condition.
Exemple détaillé
Le classique « problème de la Norvège »
Données d’entrée: country: NO
Résultat: YAML 1.1 lit NO comme le booléen false ; YAML 1.2 le lit comme la chaîne "NO". Le cas est signalé comme probablement problématique et une correction `country: "NO"` est proposée.
Nombre avec zéro initial
Données d’entrée: retries: 0123
Résultat: YAML 1.1 lit 0123 comme un octal (83) ; YAML 1.2 comme un décimal (123) : le même texte représente deux nombres différents.
Conseils pratiques
- Mettez entre guillemets toute valeur qui pourrait être confondue avec un booléen, null ou un nombre si elle doit rester une chaîne ; les cas courants sont les codes pays (NO, ON), les chaînes ressemblant à des versions et yes/no/on/off.
- Si vous contrôlez l'analyseur, configurez explicitement le comportement Core Schema YAML 1.2 au lieu de dépendre de la valeur historique par défaut d'une bibliothèque.
Erreurs fréquentes
- Supposer qu'un fichier YAML qui « semble correct » sera analysé de la même façon partout : les cas ambigus ressemblent précisément à des valeurs ordinaires.
- Se fier uniquement à la directive `%YAML 1.2` : certains analyseurs populaires ne la respectent pas entièrement et conservent leur résolution de scalaires de type 1.1.
Questions fréquentes
Pourquoi `enabled: yes` devient-il true ?
Dans la liste des mots booléens de YAML 1.1, "yes" (quelle que soit la casse) est résolu en true. Le Core Schema de YAML 1.2 ne reconnaît que true/false comme booléens ; le même texte reste donc la chaîne "yes".
Qu'est-ce que le problème de la Norvège en YAML ?
Le code pays ISO de la Norvège, NO, est aussi l'un des mots que YAML 1.1 reconnaît comme booléen false. Ainsi, sans guillemets, `country: NO` devient silencieusement `country: false` avec un analyseur YAML 1.1.
Mettre une valeur entre guillemets la rend-il toujours sûre ?
Oui. Un scalaire entre guillemets ("yes", 'NO') est explicitement une chaîne dans tous les schémas YAML. L'outil ne signale jamais une valeur déjà entre guillemets.
Pourquoi PyYAML peut-il convertir `yes` ou `no` en booléen ?
Le SafeLoader de PyYAML couramment utilisé applique une résolution booléenne de type YAML 1.1, où `yes` non cité vaut true et `no` vaut false. Ainsi `country: NO` peut être chargé comme booléen, tandis que le Core Schema YAML 1.2 conserve NO comme chaîne. Cet outil compare les règles publiées des schémas ; il n'exécute pas PyYAML et ne vérifie pas la configuration d'un chargeur particulier.
Dernière vérification : 2026-09-25
Vérificateur de résolution des scalaires, pas analyseur YAML complet : les collections flow, scalaires bloc, ancres/alias et clés de fusion ne sont pas analysés (l'outil de pré-vérification YAML inter-environnements couvre davantage de cas). Compare les deux schémas publiés, pas le comportement d'une bibliothèque particulière, qui peut différer de la spécification.
Les préférences de thème et d’outils, ainsi que les listes enregistrées et récemment utilisées, sont stockées uniquement dans ce navigateur.