このツールが検査するもの
文書が解析できること。YAML の場合、これは見た目より広い意味を持ちます。
- 字下げが一貫し、空白でできていること。
- 引用符が閉じられ、ブロックスカラー(
|、>)が正しく字下げされていること。 - 各エイリアス
*nameに対応するアンカー&nameがあること。 - 同じキーを二度持つマッピングがないこと。
---の区切りが完結した文書を作っていること。
通れば根の形と大きさを返します。通らなければ、解析器のメッセージを行と桁つきで返します。YAML の解析器は、場所を告げるのが非常に上手です。
バリデータ、チェッカー、パーサー──そして .yml と .yaml
構文チェッカー、フォーマットチェッカー、パーサー、テスター、バリデータ。五つの呼び名が問うているのは一つのことです。この文書は解析できるか。貼り付けたときに起きているのは、それです。
.yml と .yaml は同じ言語であって、二つの変種ではありません。拡張子は習慣の産物です。YAML の公式は .yaml を勧めていますが、一世代前の道具が先に .yml と書き、そのまま動かなかったのです。Docker Compose は両方を読み、GitHub Actions も両方を読み、このページも同じです。どちらの綴りで届いたかは、ファイルの中身からは分かりません。
タブは字下げではない
タブの幅は八桁であり、四桁であり、二桁でもあります。見る人によります。したがってタブで作った字下げには定まった意味がなく、YAML では字下げこそが構造です。仕様はこれを禁じており、このツールも同じです。
引用符で囲んだスカラーの中では、タブはただの一文字であり何の問題もありません。困るのは左端だけです。
重複キーは誤り
port: 8080
host: example.com
port: 3000
仕様はマッピングのキーが一意であることを求めます。多くの解析器はこれを無視して後のほうを採ります。設定ファイルが、二度書いたことを忘れていた値で黙って動くのはこのためです。ここでは誤りとし、二つ目の行を示します。
複数文書の流れは妥当
--- は文書を区切り、一つのファイルはいくつでも文書を持てます。報告はその数を示します。Kubernetes のマニフェストはたいてい流れであり、流れは構文の誤りではありません。
検査しないもの
文書が意味をなすかどうか。
完璧な YAML でありながら壊れた Compose ファイルということはあり得ます。image のないサービス、enviroment と書かれたキー、数値が期待される場所の引用符付きポート。どれも構文の問題ではなく、ここでは捕まりません。
素の語の意味も決めません。yes は YAML 1.2 の読み手には文字列 yes、1.1 の読み手には真偽値の真であり、どちらも妥当な YAML を読んでいます。この違いはこの検査器には決められません。次にそのファイルを読むのが誰かによって決まるからです。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。