class RuboCop::Cop::Style::RedundantBegin

This cop checks for redundant `begin` blocks.

Currently it checks for code like this:

@example

# bad
def redundant
  begin
    ala
    bala
  rescue StandardError => e
    something
  end
end

# good
def preferred
  ala
  bala
rescue StandardError => e
  something
end

# bad
# When using Ruby 2.5 or later.
do_something do
  begin
    something
  rescue => ex
    anything
  end
end

# good
# In Ruby 2.5 or later, you can omit `begin` in `do-end` block.
do_something do
  something
rescue => ex
  anything
end

# good
# Stabby lambdas don't support implicit `begin` in `do-end` blocks.
-> do
  begin
    foo
  rescue Bar
    baz
  end
end

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/redundant_begin.rb, line 74
def autocorrect(node)
  lambda do |corrector|
    corrector.remove(node.loc.begin)
    corrector.remove(node.loc.end)
  end
end
on_block(node) click to toggle source
# File lib/rubocop/cop/style/redundant_begin.rb, line 65
def on_block(node)
  return if target_ruby_version < 2.5

  return if node.send_node.lambda_literal?
  return if node.braces?

  check(node)
end
on_def(node) click to toggle source
# File lib/rubocop/cop/style/redundant_begin.rb, line 60
def on_def(node)
  check(node)
end
Also aliased as: on_defs
on_defs(node)
Alias for: on_def

Private Instance Methods

check(node) click to toggle source
# File lib/rubocop/cop/style/redundant_begin.rb, line 83
def check(node)
  return unless node.body&.kwbegin_type?

  add_offense(node.body, location: :begin)
end