はじめに
foodcriticは、Chef Cookbookのスタイルをチェックしてくれる静的コード解析ツールです。
今回、foodcriticにて、コードチェック対象外とする方法を整理します。
コードチェック対象は、foodcritic -lコマンドにて確認できます。また、下記ディレクトリ等にて、コードチェック対象が設定されています。foodcritic関連のディレクトリを確認したい場合には、gem environmentコマンドを実行して下さい。
C:\xxx\gem\ruby\2.4.0\gems\foodcritic-11.4.0\lib\foodcritic\rules
foodcriticのホームページから、チェック項目の内容を確認できます。
1.コードチェック対象外を指定
- 1-1.Chefレシピにコードチェック対象外を指定
チェック対象外とする項目を、Chefレシピに直接設定する方法です。各スクリプトにて、チェック対象外とするIDを、#~のように記載します。
node['modules'].each do |modules|
package "#{modules}" do #~FC002
action [:remove]
end
end
- 1-2.foodcriticファイルにコードチェック対象外を指定
チェック対象外とする項目を、1つのファイルに設定する方法です。cookbook配下に.foodcriticファイルを作成し、チェック対象外とするIDを記載します。
PS C:\xxx\chef-repo\site-cookbook\common > cat .foodcritic
~FC064
~FC065
~FC069
~FC071
~FC078
- 1-3.foodcriticコマンド実行時にコードチェック対象外を指定
foodcritic実行時に、チェック対象外のIDを指定する方法です。この場合、上記の1-1と1-2の設定が無視されます。
PS C:\xxx\chef-repo\site-cookbook\common > foodcritic -C ./ -t ~FC002
PS C:\xxx\chef-repo\site-cookbook\common > foodcritic --help
foodcritic [cookbook_paths]
-t, --tags TAGS Check against (or exclude ~) rules with the specified tags.
2.コードチェック対象を指定
反対に、コードチェック対象のみを指定することも可能です
- 2-1.foodcriticコマンド実行時にコードチェック対象を指定
foodcritic実行時に、チェック対象のIDを指定します
PS C:\xxx\chef-repo\site-cookbook\common > foodcritic -C ./ -t FC002
foodcritic実行時に、チェック対象のtagを指定します。tagはfoodcriticホームページにて確認して下さい。
PS C:\xxx\chef-repo\site-cookbook\common > foodcritic -C ./ -t roles
3. 設定例
インターネットアクセスがない環境だったため、.foodcriticファイルを配置する1-2の方法にて、以下をチェック対象外としました。
FC064: Ensure issues_url is set in metadata
FC065: Ensure source_url is set in metadata
FC069: Ensure standardized license defined in metadata
FC071: Missing LICENSE file
FC078: Ensure cookbook shared under an OSI-approved open source license
PS C:\xxx\chef-repo\site-cookbook\common > cat .foodcritic
~FC064
~FC065
~FC069
~FC071
~FC078
まとめ
1-2の.foodcriticファイルにチェック対象外とするIDを指定する方法が、一番楽かと思います。