Class: Gitlab::Styles::Rubocop::Cop::LineBreakAfterGuardClauses

Inherits:
RuboCop::Cop::Cop
  • Object
show all
Defined in:
lib/gitlab/styles/rubocop/cop/line_break_after_guard_clauses.rb

Overview

Ensures a line break after guard clauses.

Examples:

# bad
return unless condition
do_stuff

# good
return unless condition

do_stuff

# bad
raise if condition
do_stuff

# good
raise if condition

do_stuff

Multiple guard clauses are allowed without
line break.

# good
return unless condition_a
return unless condition_b

do_stuff

Guard clauses in case statement are allowed without
line break.

# good
case model
  when condition_a
    return true unless condition_b
  when
    ...
end

Guard clauses before end are allowed without
line break.

# good
if condition_a
  do_something
else
  do_something_else
  return unless condition
end

do_something_more

Constant Summary collapse

MSG =
'Add a line break after guard clauses'

Instance Method Summary collapse

Instance Method Details

#autocorrect(node) ⇒ Object



75
76
77
78
79
# File 'lib/gitlab/styles/rubocop/cop/line_break_after_guard_clauses.rb', line 75

def autocorrect(node)
  lambda do |corrector|
    corrector.insert_after(node.loc.expression, "\n")
  end
end

#on_if(node) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/gitlab/styles/rubocop/cop/line_break_after_guard_clauses.rb', line 67

def on_if(node)
  return unless node.single_line?
  return unless guard_clause?(node)
  return if next_line(node).blank? || clause_last_line?(next_line(node)) || guard_clause?(next_sibling(node))

  add_offense(node)
end