Class: RuboCop::Cop::Style::ModuleFunction
- Extended by:
- AutoCorrector
- Includes:
- ConfigurableEnforcedStyle
- Defined in:
- lib/rubocop/cop/style/module_function.rb
Overview
This cop checks for use of ‘extend self` or module_function in a module.
Supported styles are: module_function, extend_self, forbidden.
In case there are private methods, the cop won’t be activated. Otherwise, it forces to change the flow of the default code.
The option forbidden prohibits the usage of both styles.
These offenses are not safe to auto-correct since there are different implications to each approach.
Constant Summary collapse
- MODULE_FUNCTION_MSG =
'Use `module_function` instead of `extend self`.'- EXTEND_SELF_MSG =
'Use `extend self` instead of `module_function`.'- FORBIDDEN_MSG =
'Do not use `module_function` or `extend self`.'
Constants inherited from Base
Constants included from Util
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods included from AutoCorrector
Methods included from ConfigurableEnforcedStyle
#alternative_style, #alternative_styles, #ambiguous_style_detected, #correct_style_detected, #detected_style, #detected_style=, #no_acceptable_style!, #no_acceptable_style?, #opposite_style_detected, #style, #style_configured?, #style_detected, #style_parameter_name, #supported_styles, #unexpected_style_detected
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_module(node) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/rubocop/cop/style/module_function.rb', line 89 def on_module(node) return unless node.body&.begin_type? each_wrong_style(node.body.children) do |child_node| add_offense(child_node) do |corrector| next if style == :forbidden if extend_self_node?(child_node) corrector.replace(child_node, 'module_function') else corrector.replace(child_node, 'extend self') end end end end |