24時間365日フルマネージドホスティングサービスのデイーネット

[chef]foodcriticでcookbookのコーディングルールのチェック

Nオガワです。

今回は、chef cookbookのコーディングルールをチェックしてくれるツールfoodcriticを紹介します。

導入

gemでインストールします。

$ gem install foodcritic

実行方法

$ foodcritic [cookbook名]

使ってみよう

テストソース

警告出力のため、以下の「なぜexcute?、なぜinitスクリプト?」とつっこみがはいりそうなレシピで実行してみます。

execute 'start-apache' do
  command '/etc/init.d/httpd start'
  action :run
end
実行
$ foodcritic -C chef-blog-demo

[補足] オプションCは一致箇所を表示

結果

FC004のルールにマッチしていないため、serviceリソースを使うようにと警告が出ます。 foodcritic_1.png [補足] ルールの一覧はこちら

タグについて

foodcritcのルール(2018/08/30現在 FC001~FC122)はタグ付けされており、オプションでタグを指定することでチェック対象を絞り込むことが可能です。前項の例のFC004はタグ「portability」と「services」に含まれますが、その他のタグを指定すると警告は出力されなくなります。タグ指定の例を以下に記載します。タグのリファレンスはこちら

portabilityタグ指定時(警告あり)
[centos@ip-10-10-100-14 ~]$ foodcritic -t portability chef-blog-demo
Checking 2 files
.x
FC004: Use a service resource to start and stop services: chef-blog-demo/recipes/default.rb:37
その他のタグ指定時(警告なし)
[centos@ip-10-10-100-14 ~]$ foodcritic -t style,metadata chef-blog-demo
Checking 2 files
..

ルールを除外する方法

以下に除外する方法を3パターン列挙します。

コマンド上で除外

オプションで除外対象のルールを指定します。

[centos@ip-10-10-100-14 ~]$ foodcritic -t ~FC004 chef-blog-demo
Checking 2 files
..
リスト(.foodcritic)に記載して除外

cookbook配下の「.foodcritic」に除外対象のルールを記載します。

[centos@ip-10-10-100-14 ~]$ echo ~FC004 >> chef-blog-demo/.foodcritic
コメントで除外

警告が発生する該当行に除外対象のルールをコメントで追加します。

execute 'start-apache' do #~FC004
  command '/etc/init.d/httpd start'
  action :run
end

最後に

とりあえずrubocopとfoodcriticを併用して使っておこうと思います。

読んでいただきありがとうございました。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar