そういうことだったんですね

いろいろ調べたり学んだりしたことを忘れないように書き連ねています

Ruby - コードの不吉な部分を調べる(reek)

Ruby のコード中のエラーやバグ(を生みそうな)部分を検出してくれるツールが reek です。

 

インストール

gem でインストールします。最新版は 1.3.3 です。

$ gem install reek

使い方

reek コマンドを使います。引数にファイルまたはディレクトリを指定します

$ reek demo.rb

demo.rb

class Demo
  def count
    lists = [1,2,3,4,5,6,7]
    twice_lists = @lists.map { |w| w.each { |key| key *= 2 } }
    puts twice_lists
  end
end

reek コマンドの出力結果

demo.rb -- 3 warnings:
  Demo has no descriptive comment (IrresponsibleModule)
  Demo#count contains iterators nested 2 deep (NestedIterators)
  Demo#count has the variable name 'w' (UncommunicativeVariableName)

応用

Rakefileで自動化する

reekには、rakeを使ってソースツリーをチェックするタスクが用意されています。

Rakefile

require 'reek/rake/task'

Reek::Rake::Task.new do |t|
	t.fail_on_error = false
end

実行例1:lib/以下にある*.rbをチェックする. (lib/demo.rb)

$ rake reek

実行例2:特定のソースファイルをチェックする

$ rake reek REEK_SRC=just_one_file.rb

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)