Sha256: 6bda248d6db4ce9c2f0e3f0fa730d69dba6b2ea7f9f9f9c01b8f6aa04530f1b0
Contents?: true
Size: 1.7 KB
Versions: 1
Compression:
Stored size: 1.7 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Style # Newcomers to ruby applications may write top-level methods, # when ideally they should be organized in appropriate classes or modules. # This cop looks for definitions of top-level methods and warns about them. # # However for ruby scripts it is perfectly fine to use top-level methods. # Hence this cop is disabled by default. # # @example # # bad # def some_method # end # # # bad # def self.some_method # end # # # bad # define_method(:foo) { puts 1 } # # # good # module Foo # def some_method # end # end # # # good # class Foo # def self.some_method # end # end # # # good # Struct.new do # def some_method # end # end # # # good # class Foo # define_method(:foo) { puts 1 } # end class TopLevelMethodDefinition < Base MSG = 'Do not define methods at the top-level.' RESTRICT_ON_SEND = %i[define_method].freeze def on_def(node) return unless node.root? add_offense(node) end alias on_defs on_def alias on_send on_def def on_block(node) return unless define_method_block?(node) && node.root? add_offense(node) end private # @!method define_method_block?(node) def_node_matcher :define_method_block?, <<~PATTERN (block (send _ {:define_method} _) ...) PATTERN end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rubocop-1.15.0 | lib/rubocop/cop/style/top_level_method_definition.rb |