LoginSignup
3
3

More than 5 years have passed since last update.

Reekの警告をコメントで無効化する方法

Posted at

Ruby の静的解析ツールである Reek の警告をコメントで無効化する方法についてまとめます

概要

基本的には config.reek の設定に応じて規約をチェックするが、
一部だけ例外的に警告対象外にしたいケースがあると思います。

例えばFeatureEnvyの警告がでた際に、オブジェクトにセットしてまとめて引数に渡したいが
渡す相手が自分で変更できない外部ライブラリだった場合などがあります。

コメントによる除外方法

以下のコメントをクラスかメソッドに対して指定することで警告対象外にすることができます

  # :reek:警告名称

サンプル

out, out_out 双方が LongParameterList(長すぎる引数。デフォルトだと4つで警告される)に
引っかかっていますが、 out は除外コメントによって警告対象外になっています

# Hoge
#
# Hoge です
class Hoge
  def safe(hoge, hige, hage)
    puts "#{hoge} #{hige} #{hage}"
  end

  # :reek:LongParameterList
  def out(hogea, higea, hagea, hegea)
    puts "#{hogea} #{higea} #{hagea} #{hegea}"
  end

  def out_out(hogeb, higeb, hageb, hegeb)
    print "#{hogeb} #{higeb} #{hageb} #{hegeb}"
  end

  def safe_safe(hogec, higec, hagec)
    print "#{hogec} #{higec} #{hagec}"
  end
end

Hage, Hoge 双方のクラスが DuplicateMethodCall(メソッドの重複呼び出し)に
引っかかっていますが、 Hige は除外コメントによって警告対象外になっています


# Hage
#
# Hage です
class Hage
  def test
    sample = 3/2
    sample_sample = 3/2
    sample_sample_sample = 3/2
  end
end

# Hige
#
# Hige です
# :reek:DuplicateMethodCall
class Hige
  def test_test
    sample = 1/2
    sample_sample = 1/2
    sample_sample_sample = 1/2
  end
end

キャプチャ

reek_smell1.png
reek_smell2.png

関連資料

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3