YAML-Semantik vergleichen
Füge ein YAML-Dokument ein und prüfe, welche Werte YAML-1.1- oder YAML-1.2-Regeln zufolge unterschiedlich interpretiert würden. Geprüft wird die Semantik, nicht die Syntaxgültigkeit.
Die Verarbeitung erfolgt lokal in Ihrem Browser. Ihre Datei wird niemals hochgeladen.
Anleitung Tool
- Füge YAML ein oder lade eine .yaml-/.yml-Datei. Die Daten bleiben im Browser.
- Starte die Analyse.
- Prüfe jeden markierten Wert, die Bedeutung unter YAML 1.1 und 1.2 sowie den möglichen Unterschied.
- Übernimm eine vorgeschlagene portable Schreibweise oder kopiere das vollständig korrigierte Dokument.
Annahmen
- Verglichen werden die veröffentlichten Auflösungsschemata, nicht das genaue Verhalten einer konkreten Bibliothek. Reale Parser weichen teils ab; PyYAML SafeLoader verwendet zum Beispiel üblicherweise eine YAML-1.1-artige Auflösung, auch wenn das Dokument YAML 1.2 deklariert.
- Geprüft werden nur nicht in Anführungszeichen gesetzte (plain) Skalare. Ein zitierter Wert wie `"yes"` ist in beiden Schemata eindeutig.
- Erkannt werden Zuweisungen `key: value`, auch eingerückte. Flow-Sammlungen (`{a: 1}`), Blockskalare (`|`, `>`) und Anker/Aliase liegen außerhalb des Umfangs.
Quellen und Referenzdaten
Methodik
Jeder nicht zitierte Skalar wird anhand der Tag-Auflösungsregeln von YAML 1.1 und des Core Schema von YAML 1.2 separat ausgewertet. Abweichungen bei Typ oder resultierendem Wert werden markiert. Boolean-/Null-Abweichungen gelten als wahrscheinlich problematisch; geänderte Zahlen oder Zeitstempel werden zur Prüfung hervorgehoben.
Rechenbeispiel
Das Norwegen-Problem
Eingaben: country: NO
Ergebnis: YAML 1.1 deutet NO als boolesches false, YAML 1.2 als Zeichenfolge "NO". Vorgeschlagen wird `country: "NO"`.
Zahl mit führender Null
Eingaben: retries: 0123
Ergebnis: YAML 1.1 deutet 0123 als Oktalzahl 83, YAML 1.2 als Dezimalzahl 123.
Praktische Hinweise
- Setze potenziell mehrdeutige Werte in Anführungszeichen, wenn sie Zeichenfolgen bleiben sollen; typische Fälle sind Ländercodes wie NO und Wörter wie yes/no/on/off.
- Wenn du den Parser kontrollierst, konfiguriere ausdrücklich das YAML-1.2-Core-Schema statt dich auf einen historischen Standardwert zu verlassen.
Häufige Fehler
- Annehmen, dass ein YAML-Dokument überall gleich interpretiert wird, nur weil es korrekt aussieht.
- Sich allein auf `%YAML 1.2` verlassen: Beliebte Parser behalten teils ältere Skalarrichtlinien bei.
Häufige Fragen
Warum wird `enabled: yes` zu true?
YAML 1.1 löst yes unabhängig von Groß-/Kleinschreibung als true auf. Das YAML-1.2-Core-Schema erkennt nur true/false als boolesche Werte und behält yes als Zeichenfolge bei.
Was ist das Norwegen-Problem?
NO ist der ISO-Ländercode Norwegens und zugleich in YAML 1.1 ein boolesches false. Daher kann `country: NO` ohne Anführungszeichen als false geladen werden.
Sind zitierte Werte sicher?
Ja. Ein zitierter Skalar wie `"yes"` oder `'NO'` ist ausdrücklich eine Zeichenfolge und wird nicht markiert.
Warum wandelt PyYAML yes oder no in boolesche Werte um?
Der übliche PyYAML SafeLoader nutzt YAML-1.1-artige Boolesche Auflösung. Dieses Werkzeug vergleicht veröffentlichte Schemata; es führt PyYAML nicht aus und prüft keine konkrete Loader-Konfiguration.
Zuletzt geprüft:
Skalar-Auflösungsprüfung, kein vollständiger YAML-Parser: Flow-Sammlungen, Blockskalare, Anker/Aliase und Merge-Keys werden nicht analysiert. Bibliotheken können von den veröffentlichten Schemata abweichen.
Design- und Tool-Einstellungen sowie gespeicherte und zuletzt verwendete Listen werden nur in diesem Browser gespeichert.