跳转到正文

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 或其他格式,请使用数据格式转换器。

关于 OneClick Pro

OneClick Pro 是一个免费的工具集合,包含超过 150 种网络工具,助你处理日常工作:转换图像和单位、格式化和验证代码、检查域名和 SEO,以及处理文本、日期和数字。所有工具均可免注册、免订阅使用;你输入的内容仅用于计算结果,绝不会被存储。你可以将它用作处理临时任务的快捷工具箱,也可以收藏每天都会用到的工具。