Class: RuboCop::Cop::Style::IfUnlessModifier
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/style/if_unless_modifier.rb
Overview
Checks for if and unless statements that would fit on one line if written as modifier if/unless. The cop also checks for modifier if/unless lines that exceed the maximum line length.
The maximum line length is configured in the Layout/LineLength cop. The tab size is configured in the IndentationWidth of the Layout/IndentationStyle cop.
Constant Summary collapse
- MSG_USE_MODIFIER =
'Favor modifier `%<keyword>s` usage when having a ' \ 'single-line body. Another good alternative is ' \ 'the usage of control flow `&&`/`||`.'
- MSG_USE_NORMAL =
'Modifier form of `%<keyword>s` makes the line too long.'
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
Class Method Summary collapse
Instance Method Summary collapse
Methods included from AutoCorrector
Methods inherited from Base
#active_support_extensions_enabled?, #add_global_offense, #add_offense, 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?, #message, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #ready, #relevant_file?, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version
Methods included from ExcludeLimit
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Class Method Details
.autocorrect_incompatible_with ⇒ Object
49 50 51 |
# File 'lib/rubocop/cop/style/if_unless_modifier.rb', line 49 def self.autocorrect_incompatible_with [Style::SoleNestedConditional] end |
Instance Method Details
#on_if(node) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/rubocop/cop/style/if_unless_modifier.rb', line 53 def on_if(node) msg = if single_line_as_modifier?(node) && !named_capture_in_condition?(node) MSG_USE_MODIFIER elsif too_long_due_to_modifier?(node) MSG_USE_NORMAL end return unless msg add_offense(node.loc.keyword, message: format(msg, keyword: node.keyword)) do |corrector| autocorrect(corrector, node) end end |