foodcriticでChefのcookbookの書き方をチェックする方法

 2013/03/14
このエントリーをはてなブックマークに追加

foodcriticはChefのcookbookのためのlintツールで、http://acrmp.github.com/foodcritic/ で公開されています。 cookbookは長い間環境を維持していくために使われるため、可読性が高く誰でも分かるように書いておくことが望ましいのは言うまでもありません。このツールでは標準で45個のルールに従ってcookbookをチェックすることが出来ます。もちろん自分でルールを新たに追加していくことも可能です。

インストール

動作させるには、ruby 1.9.2以降が必要です。インストールはgemでさくっと入ります。

gem install foodcritic

実行方法

実行方法も簡単です。引数にcookbookの名前を指定すればOKです。

foodcritic php

その他の実行オプションとしては以下があります。

foodcritic [cookbook_path]
    -r, --[no-]repl                  
対話式にルールを編集するためにREPLに入ります

    -t, --tags TAGS                  
指定されたタグに該当するルールだけをチェックします。タグにはstyle strings attributes portability solo services correctness files metadata search readme libraries definitions lwrp deprecated annoyances notifications recipe etsy が指定可能です。複数のタグを指定する場合はカンマ区切りにします。

    -f, --epic-fail TAGS
指定したタグに該当するルールに引っかかった場合はコマンドの戻り値でエラーを返します。Jenkinsなどのツールと組み合わせる場合に有効です。

    -C, --[no-]context
ルールにひっかかった箇所をハイライトして表示します。

    -I, --include PATH
デフォルト以外の追加のルールが配置されたパスを指定します

    -S, --search-grammar PATH
searchのシンタックスチェックをおこなうときにどの文法を使うかを指定します

    -V, --version
バージョン情報を表示します。

例:カレントディレクトリをチェックする際に、styleとattributesタグのチェックのみ行い、ひっかかった箇所をハイライト表示した場合

foodcritic -t style,attributes -C . 

結果の確認と修正

foodcriticの結果は画面上に表示されます。それぞれ警告の結果はFCから始まる番号がついています。どのような指摘事項なのか、そしてどのように直すべきかはサイト(http://acrmp.github.com/foodcritic/)で詳細に説明されています。

先ほど実行した例ではFC002とFC019がひっかかっています。

例1:FC002

FC002の内容は、必要の無い箇所では値をダブルクォートで囲まなくていいよ、ということなので、レシピを以下のように修正します。 Before

cwd "#{Chef::Config[:file_cache_path]}" 

After

cwd #{Chef::Config[:file_cache_path]}

例2:FC019

FC019の内容は、nodeの値にアクセスするときは[:属性名]ではなく[“属性名”]でアクセスしなさい、ということなので、レシピを以下のように修正します(一部のみ) Before

if node[:platform] == "centos" and node[:platform_version][0] == "5"  

After

if node["platform"] == "centos" and node["platform_version"][0] == "5"  

以上が終わったら再度foodcriticを実行します。

今度はstyleとattributesに関しての指摘はなくなりました。

まとめ

自分一人で環境を管理する分にはここまでやらなくても良いかもしれませんが、複数人で管理していたり大規模だったりするとある程度コードを均質化して綺麗にしておくことは大事なことです。また自分のcookbookをgithabなどで公開する場合もなるべくベストプラクティスに併せておくと良いのではないかと思います。

参考図書

入門Chef Solo - Infrastructure as Code 伊藤直也 (著) カテゴリ:Kindle版 発売日:2013-03-11
Instant Chef Starter カテゴリ:Kindle版 発売日:2013-02-22

 2013/03/14
このエントリーをはてなブックマークに追加

サイト内検索


著作

寄稿

Latest post: