Class: RuboCop::Cop::Style::ModuleFunction
- 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 included from Util
Instance Attribute Summary
Attributes inherited from Cop
#config, #corrections, #offenses, #processed_source
Instance Method Summary collapse
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 Cop
#add_offense, all, autocorrect_incompatible_with, badge, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, cop_name, #cop_name, #correct, department, #disable_uncorrectable, #duplicate_location?, #excluded_file?, #external_dependency_checksum, #find_location, #highlights, inherited, #initialize, #join_force?, lint?, match?, #messages, #parse, qualified_cop_name, #reason_to_not_correct, #relevant_file?, #target_rails_version, #target_ruby_version
Methods included from AST::Sexp
Methods included from NodePattern::Macros
#def_node_matcher, #def_node_search, #node_search, #node_search_all, #node_search_body, #node_search_first
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #correctable?, #disable_offense, #disable_uncorrectable?, #safe_autocorrect?, #support_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
begins_its_line?, comment_line?, double_quotes_required?, escape_string, first_part_of_call_chain, interpret_string_escapes, line_range, needs_escaping?, on_node, parentheses?, same_line?, to_string_literal, to_supported_styles, tokens, trim_string_interporation_escape_character
Methods included from PathUtil
absolute?, chdir, hidden_dir?, hidden_file_in_not_hidden_dir?, match_path?, pwd, relative_path, reset_pwd, smart_path
Constructor Details
This class inherits a constructor from RuboCop::Cop::Cop
Instance Method Details
#autocorrect(node) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/rubocop/cop/style/module_function.rb', line 96 def autocorrect(node) return if style == :forbidden lambda do |corrector| if extend_self_node?(node) corrector.replace(node, 'module_function') else corrector.replace(node, 'extend self') end end end |
#on_module(node) ⇒ Object
88 89 90 91 92 93 94 |
# File 'lib/rubocop/cop/style/module_function.rb', line 88 def on_module(node) return unless node.body&.begin_type? each_wrong_style(node.body.children) do |child_node| add_offense(child_node) end end |