Sha256: 551784bee945dbc232fdfc92403ac0d6306cbcda5c6e86d746d40b9ceef2ccf2
Contents?: true
Size: 1.19 KB
Versions: 4
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.branch&.each_node(:return) { |return_node| add_offense(return_node) } end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems