Add AllowConsecutiveConditionals option to Style/GuardClause

このエントリーをはてなブックマークに追加

Add AllowConsecutiveConditionals option to Style/GuardClause
https://github.com/rubocop/rubocop/pull/10503

RuboCop には以下のスタイルガイドに基づいた、Style/GuardClauseという Cop がある。
https://rubystyle.guide/#no-nested-conditionals

Nested Conditionals Avoid use of nested conditionals for flow of control. Prefer a guard clause when you can assert invalid data. A guard clause is a conditional statement at the top of a function that bails out as soon as it can.

# bad
def test
  if something
    work
  end
end

# good
def test
  return unless something

  work
end

# also good
def test
  work if something
end

# bad
if something
  raise 'exception'
else
  ok
end

# good
raise 'exception' if something
ok

# bad
if something
  foo || raise('exception')
else
  ok
end

# good
foo || raise('exception') if something
ok
def foo
  if condition_a
    do_something_a
  end

  if condition_b # <-- Style/GuardClause が指摘されるが同じレベルに条件文がある場合には両方のif保持したい
    do_something_b
  end
end

AllowConsecutiveConditionals というオプションを追加(default は false)した。
true にした場合には、上記のようなケースの指摘が上がらなくなる。