yamllint を使うとプロジェクトで YAML の書き方を統一しやすくなります。
インストール
pip
コマンドで入れます。
pipe install yamllint
これでyamllint
コマンドが使えるようになります。
使い方
コマンドの引数に検証したいファイルを指定することで、そのファイルに対して検証が行えます。
yamllint foo.yml bar/baz.yml
引数に.
を渡すことでディレクトリ以下のすべての.yaml
や.yml
、.yamllint
に対して検証することもできます。
yamllint .
# yamllint foo.yml bar/baz.yml ...
検証ルール
デフォルトのルールプリセットは以下のようになってます。各ルールについては yamllintyamllint.readthedocs.io/en/stable/rules.html を参照。
rules:
braces: enable
brackets: enable
colons: enable
commas: enable
comments:
level: warning
comments-indentation:
level: warning
document-end: disable
document-start:
level: warning
empty-lines: enable
empty-values: disable
hyphens: enable
indentation: enable
key-duplicates: enable
key-ordering: disable
line-length: enable
new-line-at-end-of-file: enable
new-lines: enable
octal-values: disable
quoted-strings: disable
trailing-spaces: enable
truthy:
level: warning
検証ルールプリセットは自分で好きに設定することができます。例えば.yamllintrc.yml
のようなファイル名で以下の内容だとします。
extends: default
rules:
document-start:
present: true
line-length:
max: 80
allow-non-breakable-words: true
yamllint
コマンドを使う際に-c, --config-file
で指定して使います。
yamllint -c .yamllintrc.yml .
設定ファイルを.yamllint
として設置すると、yamllint
はこれを自動的に読み込むようになります。
yamllint -c .yamllint .
# は以下と同じ
# yamllint .
無視設定
設定ファイルのignore
セクションに無視したいファイル名を記載します。
ignore: |
ignored-file.yml
ignored-directory/*.yml
またコメントを使ってあるファイルで「この部分だけこのルールを無視したい」な事もできます。# yamllint disable-line
コメントを前の行に配置すると、次の行に対して特定のルールを無視できます。
# yamllint disable-line rule:line-length
key1: value1....
これは同じ行の後ろに配置することもできます。
key1: value1.... # yamllint disable-line rule:line-length
複数行に対して無視したい場合は# yamllint disable
コメントを使います。こちらの場合はルールを無効化するとファイルの最後まで無視されるようになっていしまうので、# yamllint enable
コメントを使って再度有効にする必要がでてくるかもしれません。
# yamllint disable rule:line-length
key1:
- value1....
- value2....
- value3....
# yamllint enable rule:line-length
どちらもrule:...
は省略可能です。ちゃんとする必要があるならば、明確さの為に記述すると良いと思います。
てっとり早く yamllint を試す環境
yamllintyamllint.readthedocs.io/en/stable/rules.htmlnju33-com/example-yamllint Docker を使った環境を作れます。