# YAML 验证器

在 YAML 破坏部署或 CI 流水线之前，检查其中的语法错误。验证器使用 YAML 1.2 解析器解析输入中的每个文档，拒绝重复键、用作缩进的制表符和失控的别名扩展，并报告第一个错误所在的文档、行和列。输入有效时，会显示文档数量、每个文档的顶层类型以及任何警告。适用于 Kubernetes、Docker Compose 和配置文件编写者。

## 常见问题

### YAML 验证器会检查什么？

它会解析完整的 YAML 语法，包括缩进、块和流式集合、带引号和普通标量、锚点、别名、标签和指令。它还会将映射中的重复键视为错误。结果会显示确认信息和简短摘要，或显示第一个错误的位置及说明。

### 它遵循哪个 YAML 版本？

验证器使用 YAML 1.2 核心模式，这是该规范的当前版本。在 1.2 中，yes、no、on 和 off 等词是普通字符串，而不是布尔值，因此不会导致错误。为 YAML 1.1 工具编写的文档，只要语法有效，仍会被接受。

### 为什么重复键会被报告为错误？

YAML 规范要求映射中的键必须唯一。许多解析器会静默保留最后一个值，从而掩盖重复定义设置等配置错误。验证器会报告重复键所在的行和列，方便你决定保留哪个值。

### 行号、列号和文档编号如何计算？

行号和列号从你粘贴的输入开头开始计数，起始值为 1。文档按出现顺序计数，并由 --- 行分隔，因此第一个文档编号为 1。位置指向解析器检测到问题的位置，可能紧接在实际错误之后。

### 可以一次验证多个 YAML 文档吗？

可以。像多文档 Kubernetes 清单一样，使用 --- 分隔文档，验证器会解析每个文档。有效结果会显示文档数量以及每个文档的顶层类型。

### 顶层类型是什么意思？

它会告诉你每个文档根部包含什么：键值映射、项目序列、单个标量值，或者空内容。大多数配置文件都是映射，而资源列表通常是序列。如果这里的类型不正确，通常是因为短横线或缩进位置有误。

### 什么是警告？

警告表示不会导致解析中止的问题，例如解析器不认识某个标签，于是将其作为普通值读取。每条警告都会列出所在行和列，最多显示 20 条。有警告的文档仍会被视为有效。

### 为什么不接受制表符？

YAML 禁止使用制表符缩进，因为其宽度不明确。请将报告行开头的制表符替换为空格，并确保缩进与相邻行一致。值和带引号的字符串中可以使用制表符。

### 它能防范别名炸弹吗？

可以。别名最多只能展开 100 次，因此，若文档通过不断扩展别名生成数 GB 数据（这种攻击通常称为“亿笑”攻击），验证器会将其报告为无效，而不会因此耗尽内存。使用锚点和别名共享设置的常规操作远不会达到此限制。

### 它会根据 Kubernetes 或 OpenAPI 等模式进行验证吗？

不会，它只检查语法和结构，不会检查键和值是否符合特定模式。输入大小最多为 5 MiB。如需将有效的 YAML 转换为 JSON、TOML 或其他格式，请使用数据格式转换器。

在这里投放广告？

[给我们发邮件](mailto:hi@dennn.is?subject=%E5%9C%A8%20OneClick%20Pro%20%E4%B8%8A%E6%8A%95%E6%94%BE%E5%B9%BF%E5%91%8A)

[广告 适用于 WordPress 的智能体就绪型插件套件。](https://sleekwp.com/?ref=oneclickpro)
