RuboCop というか Parser gem では、引数なしの super
を zsuper
(zero arity super) という名前で表している。
以下のケースについて、Lint/ShadowedArgument
cop はデフォルトで offense を出す。
def do_something(arg) arg = 'world' super end
しかし、これは以下のように引数なし super
の振る舞いの特性により offense を出してもらいたくないケースがある。
class Foo def do_something(arg) "hello, #{arg}" end end class Bar < Foo def do_something(arg) arg = 'world' super end end puts Bar.new.do_something('hi') # => 'hello, world'
サブクラスを少し変えた振る舞いはこのとおり。
class Bar < Foo def do_something(arg) super end end puts Bar.new.do_something('hi') # => 'hello, hi'
IgnoreImplicitReferences
を true
にすることで、これらのような zsuper
の使い方を受け入れる設定になる。
Lint/ShadowedArgument: IgnoreImplicitReferences: true