debrideメモ

Rubyの呼ばれていないメソッドを探す静的コード解析ツール。debride 1.8.2、debride-erb 1.0.1で確認。

以下のGemをインストールする。

group :development do
  gem 'debride'
  # ERB内からの呼び出しにも対応させる
  gem 'debride-erb'
end

bundle exec debride --rails 対象で実行。ただし、そのままでは、コントローラーのメソッドも呼ばれていないメソッドとして報告されてしまうのでホワイトリストを作る。

bin/rails routes > routes.txt
# log/development.logはproduction.logでも可
bundle exec debride_rails_whitelist routes.txt log/development.log | sort -u > whitelist.txt

bundle exec debride --rails -w whitelist.txt appでホワイトリストを適用して実行する。

例えば、以下のようなコードがあって、piyoスコープとhogeメソッドが使われていないとする。

class User < ApplicationRecord
  scope :piyo, -> { where(id: 1) }

  def hoge
  end
end

bundle exec debride --rails -w whitelist.txt appを実行すると以下のような結果になる。

These methods MIGHT not be called:

User
  hoge                                app/models/user.rb:4-5
  piyo                                app/models/user.rb:2

注意点としては、models.map(&:used_method)のような形でしか呼ばれていないメソッド、delegate :xxx, to: :methodでtoに指定されている形でしか使われていないメソッドなどは使われていないメソッドとして報告されてしまう。

rails_best_practicesRemoveUnusedMethodsInModelsCheckなどとかぶるところはあるが、rails_best_practicesと違ってController、Model、Helper以外のコード(例えば、Decoratorやドメインモデルなど)があってもチェック対象になる。