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