Open main menu

Changes

add multiline section
A linter for YAML files. <code>'''yamllint'''</code> does not only check for syntax validity, but for weirdness like key repetition and cosmetic problems such as lines length, trailing spaces, indentation, etc.
 
Use an online validator like https://www.yamllint.com/ or https://jsonformatter.org/yaml-validator
Of course, you should have one in your local tools and CI pipeline to ensure that your [[YAML]] is always correct.With <code>yamllint</code>, there is both a script and a Python module; meaning you can write your own linting tool in Python by invoking (importing) the yamllint module<ref>https://yamllint.readthedocs.io/en/stable/development.html</ref>. See the caveat section below about "using the right tool for the job" - meaning use the right linter for the language/project you are linting. {{Notice|If you have a <tt>.yamllint</tt> file in your working directory, it will be automatically loaded as configuration by yamllint.}} 
== Manually fix errors==
Unfortunately, <tt>yamllint</tt> does not fix your file for you. There could be ambiguities about the proper fix, so you need to do the fix(es) yourself.
==Cheatsheet==You can use '''[https://yamllint.readthedocs.io/en/stable/disable_with_comments.html comment directives]''' to control the behavior of <code>yamllint</code> With <code>disable-line</code> you put the directive in-line, or on the line above.<syntaxhighlight lang="yaml"># The following mapping contains the same key twice,# but I know what I'm doing:key: value 1# yamllint disable-line rule:key-duplicateskey: value 2 # yamllint disable-line rule:line-length- This line is waaaaaaaaaay too long but yamllint will not report anything about it. This line will be checked by yamllint.</syntaxhighlight>With <code>disable</code> you can disable multiple [https://yamllint.readthedocs.io/en/stable/rules.html rules] for the entire file.<syntaxhighlight lang="yaml"># yamllint disable rule:hyphens rule:commas rule:indentation</syntaxhighlight>Or even use <code>disable-file</code><syntaxhighlight lang="yaml"># yamllint disable-file# This file is not valid YAML because it is a Jinja template</syntaxhighlight> <code>--no-warnings</code> will suppress the warnings so you can focus only on errors. <code>--list-files</code> will show you the list of files that yamllint finds (and would otherwise lint). <code>--format</code> (or <code>-f</code>) gives you options for how you want the output to display. == Yaml multiline ==Interactive demonstration of Block scalars and Flow scalars https://yaml-multiline.info/ [https://stackoverflow.com/questions/3790454/how-do-i-break-a-string-in-yaml-over-multiple-lines/21699210#21699210 The SO answer that describes them all] [https://symfony.com/doc/current/reference/formats/yaml.html YAML in Symphony] [https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html YAML in Ansible] The [https://yaml.org/spec/1.2.2/#scalars YAML 1.2.2 spec on scalars]<br />== Many linters ==
You can't just use "one" solution either<ref>https://phabricator.wikimedia.org/T95890</ref>. The leading GPL linter is based on Python, so depending on your code repo, you may instead want to use a JavaScript or PHP implementation. Thus, tools like [[wp:Grunt (software)]] may be used to automate JSHint linting in [[JavaScript]] projects<ref>https://www.codereadability.com/jshint-with-grunt/</ref>.
== Source, Docs and Reading == * https://github.com/adrienverge/yamllint* https://yamllint.readthedocs.io/en/stable/* https://www.redhat.com/sysadmin/check-yaml-yamllint
{{References}}