itamae のレシピを静的解析するrubocopのプラグインを作りました。
コンセプト
前職でitamaeのレシピをレビューすることが多々あったのですが、毎回同じことを指摘するのも大変だったのでrubocopのcopにしました。
rubocop-itamae自体はrubocopにしか依存していないので itamae と mitamae の両方のレシピで使えると思います。
下記のようなcopを作っています
Itamae/CdInExecute
execute
の中で cd
せずに cwd
を使え。
# bad execute 'cd /tmp && rm -rf /tmp/*' # good execute 'rm -rf /tmp/*' do cwd '/tmp' end
Itamae/CommandEqualsToName
execute
の引数と command
で同一のコマンドを書くのはDRYじゃないのでやめろ
# bad execute 'rm -rf /tmp/*' do command 'rm -rf /tmp/*' end # good execute 'rm -rf /tmp/*' execute 'Remove temporary files' do command 'rm -rf /tmp/*' end
Itamae/NeedlessDefaultAction
デフォルトのaction(package
リソースでいえば :install
)は省略できる
# bad package 'git' do action :install end # good package 'git' do end package 'git'
Itamae/RecipePath
レシピが itamae推奨のディレクトリ構成 に沿っているかチェックする
# bad default.rb hoge/web.rb # good cookbooks/nginx/default.rb roles/web.rb
今後作りたいcop
Itamae/NodeKeyType
grepabilityの観点からnode
のkeyをStringかSymbolかのどっちかに統一しときたい。