Sha256: 69610e260cc2d0006846fc5c70fc06049a4474666c74b35e6bdb6cbc9a48332d
Contents?: true
Size: 1.19 KB
Versions: 2
Compression:
Stored size: 1.19 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Lint # Checks for `return` from an `ensure` block. # `return` from an ensure block is a dangerous code smell as it # will take precedence over any exception being raised, # and the exception will be silently thrown away as if it were rescued. # # If you want to rescue some (or all) exceptions, best to do it explicitly # # @example # # # bad # def foo # do_something # ensure # cleanup # return self # end # # # good # def foo # do_something # self # ensure # cleanup # end # # # good # def foo # begin # do_something # rescue SomeException # # Let's ignore this exception # end # self # ensure # cleanup # end class EnsureReturn < Base MSG = 'Do not return from an `ensure` block.' def on_ensure(node) node.body&.each_node(:return) { |return_node| add_offense(return_node) } end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rubocop-1.68.0 | lib/rubocop/cop/lint/ensure_return.rb |
rubocop-1.67.0 | lib/rubocop/cop/lint/ensure_return.rb |