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