Sha256: ae2671ce584651b5df212b51c69b64a303e65895f0e90767ad60398af84a9db2
Contents?: true
Size: 1.26 KB
Versions: 4
Compression:
Stored size: 1.26 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Workit # Check for `RESTRICT_ON_SEND` is defined if `on_send` or `after_send` are defined. # # @example # # bad # class FooCop # def on_send(node) # # ... # end # end # # # good # class FooCop # RESTRICT_ON_SEND = %i[bad_method].freeze # def on_send(node) # # ... # end # end # class RestrictOnSend < Base MSG = "Consider defined `RESTRICT_ON_SEND` for optimization." NEED_RESTRICT_ON_SEND = %i[on_send after_send].freeze # @!method defined_restrict_on_send?(node) def_node_search :defined_restrict_on_send?, "(casgn nil? :RESTRICT_ON_SEND ...)" def on_def(node) return unless NEED_RESTRICT_ON_SEND.include?(node.method_name) return unless (class_node = class_node(node)) add_offense(class_node) unless defined_restrict_on_send?(class_node) end def class_node(node) return if node.parent.nil? if node.parent.class_type? node.parent else class_node(node.parent) end end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems