Class: RuboCop::Cop::Style::MissingElse

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
ConfigurableEnforcedStyle, OnNormalIfUnless
Defined in:
lib/rubocop/cop/style/missing_else.rb

Overview

Checks for if expressions that do not have an else branch.

Note
Pattern matching is allowed to have no else branch because unlike if and case, it raises NoMatchingPatternError if the pattern doesn’t match and without having else.

Supported styles are: if, case, both.

Examples:

EnforcedStyle: both (default)

# warn when an `if` or `case` expression is missing an `else` branch.

# bad
if condition
  statement
end

# bad
case var
when condition
  statement
end

# good
if condition
  statement
else
  # the content of `else` branch will be determined by Style/EmptyElse
end

# good
case var
when condition
  statement
else
  # the content of `else` branch will be determined by Style/EmptyElse
end

EnforcedStyle: if

# warn when an `if` expression is missing an `else` branch.

# bad
if condition
  statement
end

# good
if condition
  statement
else
  # the content of `else` branch will be determined by Style/EmptyElse
end

# good
case var
when condition
  statement
end

# good
case var
when condition
  statement
else
  # the content of `else` branch will be determined by Style/EmptyElse
end

EnforcedStyle: case

# warn when a `case` expression is missing an `else` branch.

# bad
case var
when condition
  statement
end

# good
case var
when condition
  statement
else
  # the content of `else` branch will be determined by Style/EmptyElse
end

# good
if condition
  statement
end

# good
if condition
  statement
else
  # the content of `else` branch will be determined by Style/EmptyElse
end

Constant Summary collapse

MSG =
'`%<type>s` condition requires an `else`-clause.'
MSG_NIL =
'`%<type>s` condition requires an `else`-clause with `nil` in it.'
MSG_EMPTY =
'`%<type>s` condition requires an empty `else`-clause.'

Constants inherited from Base

Base::RESTRICT_ON_SEND

Instance Attribute Summary

Attributes inherited from Base

#config, #processed_source

Instance Method Summary collapse

Methods included from AutoCorrector

support_autocorrect?

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 included from OnNormalIfUnless

#on_if

Methods inherited from Base

#active_support_extensions_enabled?, #add_global_offense, #add_offense, autocorrect_incompatible_with, badge, #begin_investigation, 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, #inspect, 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

#exclude_limit

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

silence_warnings

Constructor Details

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

Instance Method Details

#on_case(node) ⇒ Object



115
116
117
118
119
# File 'lib/rubocop/cop/style/missing_else.rb', line 115

def on_case(node)
  return if if_style?

  check(node)
end

#on_case_match(node) ⇒ Object



121
122
123
# File 'lib/rubocop/cop/style/missing_else.rb', line 121

def on_case_match(node)
  # do nothing.
end

#on_normal_if_unless(node) ⇒ Object



108
109
110
111
112
113
# File 'lib/rubocop/cop/style/missing_else.rb', line 108

def on_normal_if_unless(node)
  return if case_style?
  return if unless_else_cop_enabled? && node.unless?

  check(node)
end