YAMLファイルが正しい構文で作成できているかを確認するツールにPythonで動作するyamllint
があります。今回は、yamllint
の使用方法を紹介していきます。
検証環境
検証に使用した環境/ライブラリを次に記載します。
- OS
- バージョン:Windows 10(1909)
- Python
- バージョン:3.9.0
- pip
- バージョン:20.2.4
- yamllint
- バージョン:1.25.0
Python2でも動作しますが、将来的にはサポート対象外になる予定です。
インストール方法
yamllint
は、次のコマンドを使用してインストールします。
py -m pip install yamllint
使用方法
ファイルの確認方法
ファイルを対象とする場合は、次のように使用します。ファイル名を複数指定することもできます。
py -m yamllint example1.yaml example2.yml
ディレクトリの確認方法
ディレクトリを対象とする場合は、次のように使用します。ディレクトリ名を複数指定することもできます。
py -m yamllint directory1 directory2
ディレクトリを指定した場合は、指定したディレクトリのファイルが対象となります。また、サブディレクトリのファイルも対象となります。
確認結果の出力内容
確認結果は次のように出力されます。出力結果は、対象ファイルにエラーが含まれているときのみ表示されます。
py -m yamllint example1.yml example2.yml
example1.yml
1:1 warning missing document start "---" (document-start)
2:7 error too many spaces before colon (colons)
出力例では、example1.yml
は、エラーが含まれているため表示されています。example2.yml
は、エラーが含まれていないため表示されません。
出力方式は、-f
オプションを指定することで変更できます。詳細については、公式ドキュメントの次のサイトを確認してください。
構成ファイル
構成ファイルを使用することで、構文確認するためのルールを変更することもできます。
構成ファイルの指定方法
作成した構成ファイルを使用する場合は、次のように-c
オプションと構成ファイル名を指定します。
py -m yamllint -c config example1.yml
構成ファイルを指定しない場合は、次の順番で構成ファイルを検索して取得します。
- 現在の作業ディレクトリから次のファイルを検索します。
- .yamllint
- .yamllint.yaml
- .yamllint.yml
- 環境変数の
$YAMLLINT_CONFIG_FILE
に指定されているファイルを検索します。 - 環境変数の
$XDG_CONFIG_HOME/yamllint/config
のファイルを検索します。 - ユーザホームディレクトリの
~/.config/yamllint/config
のファイルを検索します。
構成ファイルが見つからない場合は、デフォルトの構成ファイルを使用します。デフォルトの構成ファイルの詳細については、公式ドキュメントの次のサイトを確認してください。
構成ファイルの作成方法
新しい構成ファイルを作成する場合は、すべてのルールを記載することは難しいと思います。
構成ファイルにextends: default
を指定してから作成することで、デフォルトの構成ファイル内容を引き継ぎながら、ルールを少しだけ変更することも可能になります。
次の構成ファイルは、デフォルトの構成ファイルを引き継ぎながら、ルールを少しだけ変更した例になります。
extends: default
rules:
document-start:
present: false
詳しい作成方法は、公式ドキュメントの次のサイトを確認してください。
ルール
作成可能なルールについては、検証時でのバージョンでは次のルールに対応しています。
ルール | 概要 |
---|---|
braces | 構造を表すためのフロースタイルの抑止、中括弧のスペース数などを制御するために使用します。 |
brackets | 構造を表すためのフロースタイルの抑止、角括弧のスペース数などを制御するために使用します。 |
colons | コロン(:)の前後のスペースを制御するために使用します。 |
commas | カンマ(,)の前後のスペースを制御するために使用します。 |
comments | コメントの位置とフォーマットを制御するために使用します。 |
comments-indentation | コメントのコンテンツと同じようにインデントの制御するために使用します。 |
document-end | ドキュメント終了マーカー(...)の使用有無を制御するために使用します。 |
document-start | ドキュメント開始マーカー(---)の使用有無を制御するために使用します。 |
empty-lines | 連続する空白行の最大数を制御するために使用します。 |
empty-values | コンテンツの値が暗黙的なnull値を防ぐために使用します。 |
hyphens | ハイフン(-)の後のスペースの数を制御するために使用します。 |
indentation | インデントを制御するために使用します。 |
key-duplicates | マッピング内の同じキー名称が重複するのを防ぐために使用します。 |
key-ordering | マッピング内のキー名をアルファベット順に強制するために使用します。 |
line-length | 行の長さを制限するために使用します。 |
new-line-at-end-of-file | ファイルの終わりに改行を指定することを強制するために使用します。 |
new-lines | ファイルの改行文字(改行コード)の種類を強制するために使用します。 |
octal-values | 8進数の値の誤使用を防ぐために使用します。 |
quoted-strings | 引用符で囲まれていない文字列の禁止、引用符で囲むことを必要としない、使用する引用符の種別を制御するために使用します。 |
trailing-spaces | 行末の末尾スペースを制御するために使用します。 |
truthy | 真偽の値を指定するときに許可された値以外の入力を制御するために使用します。 |
詳細については、公式ドキュメントの次のサイトを確認してください。使用例、デフォルト時の動作についても記載されています。
まとめ
Pythonで使用できるYAMLファイルの構成確認するためのツールのyamllint
の紹介しました。
参考
- yamllint