Class: RuboCop::Cop::Style::CollectionMethods

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
MethodPreference
Defined in:
lib/rubocop/cop/style/collection_methods.rb

Overview

This cop enforces the use of consistent method names from the Enumerable module.

Unfortunately we cannot actually know if a method is from Enumerable or not (static analysis limitation), so this cop can yield some false positives.

You can customize the mapping from undesired method to desired method.

e.g. to use `detect` over `find`:

Style/CollectionMethods:
  PreferredMethods:
    find: detect

The default mapping for `PreferredMethods` behaves as follows.

Examples:

# bad
items.collect
items.collect!
items.inject
items.detect
items.find_all
items.member?

# good
items.map
items.map!
items.reduce
items.find
items.select
items.include?

Constant Summary collapse

MSG =
'Prefer `%<prefer>s` over `%<current>s`.'

Constants inherited from Base

Base::RESTRICT_ON_SEND

Constants included from Util

Util::LITERAL_REGEX

Instance Attribute Summary

Attributes inherited from Base

#config, #processed_source

Instance Method Summary collapse

Methods included from AutoCorrector

support_autocorrect?

Methods inherited from Base

#add_global_offense, #add_offense, autocorrect_incompatible_with, badge, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, #cop_name, cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, joining_forces, lint?, match?, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #ready, #relevant_file?, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

add_parentheses, args_begin, args_end, begins_its_line?, comment_line?, comment_lines?, double_quotes_required?, escape_string, first_part_of_call_chain, indent, interpret_string_escapes, line_range, needs_escaping?, on_node, parentheses?, same_line?, to_string_literal, to_supported_styles, trim_string_interporation_escape_character

Methods included from PathUtil

absolute?, hidden_dir?, hidden_file?, hidden_file_in_not_hidden_dir?, match_path?, maybe_hidden_file?, relative_path, smart_path

Constructor Details

This class inherits a constructor from RuboCop::Cop::Base

Instance Method Details

#on_block(node) ⇒ Object


46
47
48
# File 'lib/rubocop/cop/style/collection_methods.rb', line 46

def on_block(node)
  check_method_node(node.send_node)
end

#on_send(node) ⇒ Object


50
51
52
53
54
# File 'lib/rubocop/cop/style/collection_methods.rb', line 50

def on_send(node)
  return unless node.arguments.one? && node.first_argument.block_pass_type?

  check_method_node(node)
end