如何lint YAML文件,最好是在Ruby中

And*_*imm 10 ruby yaml

我如何lint YAML文件,而不必将其上传到http://yamllint.com

例如,如果我有

people:
  1:
    :name: John Smith
    :name: Jane Smith
Run Code Online (Sandbox Code Playgroud)

如何让它警告我最后一次:name覆盖:name

我使用的是Ruby 2.1和Ubuntu 12.04.

Adr*_*rgé 2

yamllint命令行工具可以完成您想要的操作:

sudo pip install yamllint
Run Code Online (Sandbox Code Playgroud)

具体来说,它有一个规则key-duplicates可以检测重复和键相互覆盖:

$ yamllint test.yml
test.yml
  1:1       warning  missing document start "---"  (document-start)
  4:5       error    duplication of key ":name" in mapping  (key-duplicates)
Run Code Online (Sandbox Code Playgroud)

(它还有许多其他规则,您可以启用/禁用或调整。)