YAMLのインデントとホワイトスペース問題をデバッグ

パースエラーを引き起こすYAMLファイル内のタブ、ノーブレークスペース、混在インデントを検出します。YAMLの正確なホワイトスペース文字を可視化します。

Debugging

詳細な説明

YAMLとホワイトスペース:厳格な関係

YAMLはおそらく一般的に使用されるフォーマットの中で最もホワイトスペースに敏感です。インデントがスタイル的なものである多くの言語とは異なり、YAMLはインデントをコア構造メカニズムとして使用します。これにより不可視文字の問題に対して非常に脆弱になります。

YAMLのホワイトスペースルール

  • インデントにはスペースのみ使用 — タブはYAML仕様で明示的に禁止
  • マッピングまたはシーケンス内で一貫したインデント深度
  • 末尾ホワイトスペースなし — 技術的には許可されますが、予期しないパースを引き起こす可能性
  • 改行コードは一貫すべき(LF推奨)

一般的なYAMLのホワイトスペースバグ

1. インデント内のタブ文字

server:
  host: localhost
\tport: 8080    # タブ文字!YAMLパーサーエラー

エラー:found character '\t' that cannot start any token

2. ノーブレークスペース

database:
  host: localhost    # コロンの後にスペースではなくNBSP

NBSPにより値に非標準のスペースが含まれるか、パーサーが完全に失敗します。

3. インデント深度の混在

services:
  web:
    image: nginx
     port: 80        # 4スペースではなく5スペース — 見分けにくい!

意図したものとは異なるネスティングレベルが作成されます。

4. 末尾スペースが空値を作成

key: ···    # 末尾スペースにより空ではなく"   "になる

ビジュアライザーでのデバッグ

  1. YAMLコンテンツをコピーしてホワイトスペースビジュアライザーに貼り付けます。
  2. SpaceTabNBSPのトグルを有効にします。
  3. 左マージンをスキャン:インデントには青いドット(·)のみが見えるべきで、矢印(→)や度記号(°)は決してないはずです。
  4. インデントが一貫していることを確認 — 各レベルのドットを数えます。
  5. 見つかったタブやNBSPをクリーンアップし、修正されたYAMLをコピーします。

YAML FormatterでクリーニングされたYAMLのバリデーションと再フォーマットができます。

ユースケース

Kubernetesのデプロイが暗号的なYAMLパースエラーで失敗します。開発者がYAMLマニフェストをホワイトスペースビジュアライザーに貼り付けると、1行がStack Overflowの回答からコピーされたタブを使用し、残りがスペースを使用していることが判明します。タブを置換するとデプロイが成功します。

試してみる — Whitespace Visualizer

フルツールを開く