どうも!Lintおばさんこと、エンジニアの望月(@c5meru)です。
この前ブログにscss-lintについて書きましたが、あの後coffeelintも入れました。
それについてはまた別途記事にします。
そして、最近は「Rails Best Practices」というGemを導入しました。
その名の通り、Railsのベストプラクティスにのっとっているかどうか、静的解析してくれるツールです。
入れ方はとっても簡単。
# Gemfile source 'https://rubygems.org' group :development, :test do gem 'rails_best_practices' end
Gemfileに一行追記して、
$ bundle install
をします。
これで
$ bundle exec rails_best_practices
のコマンドで動かせるようになります。
htmlで出力するには以下のオプションを追加します。
$ bundle exec rails_best_practices -f html .
htmlで出力すると、エラーの解説ページへのリンクがついてくるので便利です。
Rails Best Practices
でチェックする項目については、設定ファイルで管理ができます。
以下のコマンドで、Railsの/config
以下に設定ファイルを生成できます。
$ bundle exec rails_best_practices -g
弊社では、RemoveUnusedMethodsIn...
系のチェックと、RestrictAutoGeneratedRoutesCheck
はオフにしています。
前者は使っていないメソッド、後者は使っていないルーティングを判定して削除するように警告してくれる項目ですが、誤判定が見受けられたり、バグのissueがいくつか上がっていました。
Rails Best Practices関連の記事をみると、やはりRemoveUnusedMethodsIn...
系のチェックは推奨しないという意見が多かったです。
設定ファイルで以下のようにコメントアウトをすることで、チェックをオフにすることができます。
# config/rails_best_practices.yml # 一部抜粋 # RemoveUnusedMethodsInControllersCheck: { except_methods: [] } # RemoveUnusedMethodsInHelpersCheck: { except_methods: [] } # RemoveUnusedMethodsInModelsCheck: { except_methods: [] } ReplaceInstanceVariableWithLocalVariableCheck: { } # RestrictAutoGeneratedRoutesCheck: { }
弊社だとViewからControllerにかけての改善サイクルが早めなので、例えば、うっかりpartial
にインスタンス変数を書いちゃう、とかよくあるのですが、Rails Best Practices
ではそんなところも見つけて警告を出してくれます。
弊社では前回のscss-lint同様、Rails Best Practices
もCIで自動実行され、エラーがあればSlack・メールで開発者に通知されるので、リリース前に気づくことが出来るようになりました。
Rails Best Practices
は、デフォルトでチェックされる項目を一通り見渡すだけでも、Law of Demete(デメテルの法則)やMove model logic into the Modelなど、非常に勉強になるので、Rails始めたばかりでよくわからない…という方にも、おすすめです。