summaryrefslogtreecommitdiffstats
path: root/docs/disable_with_comments.rst
blob: a973da612f54e138012d07fd3c1b77e2bd877fb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Disable with comments
=====================

Disabling checks for a specific line
------------------------------------

To prevent yamllint from reporting problems for a specific line, add a
directive comment (``# yamllint disable-line ...``) on that line, or on the
line above. For instance:

.. code-block:: yaml

 # The following mapping contains the same key twice,
 # but I know what I'm doing:
 key: value 1
 key: value 2  # yamllint disable-line rule:key-duplicates

 - This line is waaaaaaaaaay too long but yamllint will not report anything about it.  # yamllint disable-line rule:line-length
   This line will be checked by yamllint.

or:

.. code-block:: yaml

 # The following mapping contains the same key twice,
 # but I know what I'm doing:
 key: value 1
 # yamllint disable-line rule:key-duplicates
 key: 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.

It is possible, although not recommend, to disabled **all** rules for a
specific line:

.. code-block:: yaml

 # yamllint disable-line
 -  {    all : rules ,are disabled   for this line}

You can't make yamllint ignore invalid YAML syntax on a line (which generates a
`syntax error`), such as when templating a YAML file with Jinja. In some cases,
you can workaround this by putting the templating syntax in a YAML comment. See
`Putting template flow control in comments`_.

If you need to disable multiple rules, it is allowed to chain rules like this:
``# yamllint disable-line rule:hyphens rule:commas rule:indentation``.

Disabling checks for all (or part of) the file
----------------------------------------------

To prevent yamllint from reporting problems for the whole file, or for a block
of lines within the file, use ``# yamllint disable ...`` and ``# yamllint
enable ...`` directive comments. For instance:

.. code-block:: yaml

 # yamllint disable rule:colons
 - Lorem       : ipsum
   dolor       : sit amet,
   consectetur : adipiscing elit
 # yamllint enable rule:colons

 - rest of the document...

It is possible, although not recommend, to disabled **all** rules:

.. code-block:: yaml

 # yamllint disable
 - Lorem       :
         ipsum:
           dolor : [   sit,amet]
 -         consectetur : adipiscing elit
 # yamllint enable

If you need to disable multiple rules, it is allowed to chain rules like this:
``# yamllint disable rule:hyphens rule:commas rule:indentation``.

Disabling all checks for a file
-------------------------------

To prevent yamllint from reporting problems for a specific file, add the
directive comment ``# yamllint disable-file`` as the first line of the file.
For instance:

.. code-block:: yaml

 # yamllint disable-file
 # The following mapping contains the same key twice, but I know what I'm doing:
 key: value 1
 key: value 2

 - This line is waaaaaaaaaay too long but yamllint will not report anything about it.

or:

.. code-block:: jinja

 # yamllint disable-file
 # This file is not valid YAML because it is a Jinja template
 {% if extra_info %}
 key1: value1
 {% endif %}
 key2: value2

Putting template flow control in comments
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Alternatively for templating you can wrap the template statements in comments
to make it a valid YAML file. As long as the templating language doesn't use
the same comment symbol, it should be a valid template and valid YAML (pre and
post-template processing).

Example of a Jinja2 code that cannot be parsed as YAML because it contains
invalid tokens ``{%`` and ``%}``:

.. code-block:: text

 # This file IS NOT valid YAML and will produce syntax errors
 {% if extra_info %}
 key1: value1
 {% endif %}
 key2: value2

But it can be fixed using YAML comments:

.. code-block:: yaml

 # This file IS valid YAML because the Jinja is in a YAML comment
 # {% if extra_info %}
 key1: value1
 # {% endif %}
 key2: value2