Class: RuboCop::Cop::Lint::EmptyConditionalBody

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
CommentsHelp, RangeHelp
Defined in:
lib/rubocop/cop/lint/empty_conditional_body.rb

Overview

Checks for the presence of if, elsif and unless branches without a body.

Note
empty else branches are handled by Style/EmptyElse.

Examples:

# bad
if condition
end

# bad
unless condition
end

# bad
if condition
  do_something
elsif other_condition
end

# good
if condition
  do_something
end

# good
unless condition
  do_something
end

# good
if condition
  do_something
elsif other_condition
  do_something_else
end

AllowComments: true (default)

# good
if condition
  do_something
elsif other_condition
  # noop
end

AllowComments: false

# bad
if condition
  do_something
elsif other_condition
  # noop
end

Cop Safety Information:

  • Autocorrection for this cop is not safe. The conditions for empty branches that the autocorrection removes may have side effects, or the logic in subsequent branches may change due to the removal of a previous condition.

Constant Summary collapse

MSG =
'Avoid `%<keyword>s` branches without a body.'

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 CommentsHelp

#comments_contain_disables?, #comments_in_range, #contains_comments?, #source_range_with_comment

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_if(node) ⇒ Object



70
71
72
73
74
75
76
77
78
79
# File 'lib/rubocop/cop/lint/empty_conditional_body.rb', line 70

def on_if(node)
  return if node.body || same_line?(node.loc.begin, node.loc.end)
  return if cop_config['AllowComments'] && contains_comments?(node)

  add_offense(node, message: format(MSG, keyword: node.keyword)) do |corrector|
    next if node.parent&.call_type?

    autocorrect(corrector, node)
  end
end