SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



Ruby on RailsプロジェクトでRuboCopによるコード解析を行う

綺麗なソースコードを書くためにはコーディングスタンダードに従って書くのが一番です。Rubyでは幾つかソースコードを静的解析してくれるツールが存在します。一番有名なところとしてはRuboCopではないでしょうか。

RuboCoprubocop コマンドでRubyプロジェクトを解析してくれます。そしてRuby on Railsで作られたプロジェクトについても対応しており、Rails特有の問題点についても指摘してくれるようになります。

RuboCopのインストール

Railsプロジェクトで bundler を使う場合は Gemfile に次のように記述します。RuboCopは開発環境でしか使わないはずなので、development 環境限定としています。

group 'development' do
  gem 'rubocop', require: false
end

記述したらインストールします。

$ bundle

これで準備は完了です。もちろん直接インストールもできます。

$ gem install rubocop

RuboCopをRailsプロジェクトで試す

基本的に rubocop コマンドを実行するだけですが、Rails特有のチェックを行うために -R オプションをつけます。

$ rubocop -R

例えば次のようなエラーが検出されるようになります。

app/models/link.rb:135:21: C: Use find_by instead of where.first.
   image = Image.where(:url => url).first
app/models/link.rb:157:22: C: Use if self.body.present? instead of unless self.body.blank?.
   return self.body unless self.body.blank?

こうしたメッセージに従うことで、より理想的なRailsアプリケーションのコードが書けるようになるでしょう。

他にも、Railsのバージョンアップに伴って変更すべき点も検出されます。

app/controllers/sites_controller.rb:2:3: C: Prefer before_action over before_filter.
 before_filter :authenticate_user!

RuboCopを使うことでRubyとしてのコードレビューはもちろん、Rails特有の改善ポイントについても分かるようになります。 text.blank? ではなく text.present? を使うべきといった内容は開発チームのコーディングスタンダードになっていてもおかしくなさそうです。そうしたよくあるポイントはRuboCopで自動化することでコードレビューの負担や手間を軽減できるようになります。

なおSideCIではRuboCopを使ったRailsプロジェクトの自動コードレビューに対応しています。自分の開発環境だけであればRuboCopをインストールすれば良いだけですが、開発チーム全員でコードの自動レビューを通じて綺麗なコードを書いていこうとする文化を作るならばクラウド環境を使うのがお勧めです。トライアルも提供していますのでぜひお試しください