class RuboCop::Cop::Style::OptionalBooleanParameter

Checks for places where keyword arguments can be used instead of boolean arguments when defining methods. ‘respond_to_missing?` method is allowed by default. These are customizable with `AllowedMethods` option.

@safety

This cop is unsafe because changing a method signature will
implicitly change behavior.

@example

# bad
def some_method(bar = false)
  puts bar
end

# bad - common hack before keyword args were introduced
def some_method(options = {})
  bar = options.fetch(:bar, false)
  puts bar
end

# good
def some_method(bar: false)
  puts bar
end

@example AllowedMethods: [‘some_method’]

# good
def some_method(bar = false)
  puts bar
end

Constants

MSG

Public Instance Methods

on_def(node) click to toggle source
# File lib/rubocop/cop/style/optional_boolean_parameter.rb, line 43
def on_def(node)
  return if allowed_method?(node.method_name)

  node.arguments.each do |arg|
    next unless arg.optarg_type?

    add_offense(arg, message: format_message(arg)) if arg.default_value.boolean_type?
  end
end
Also aliased as: on_defs
on_defs(node)
Alias for: on_def

Private Instance Methods

format_message(argument) click to toggle source
# File lib/rubocop/cop/style/optional_boolean_parameter.rb, line 56
def format_message(argument)
  replacement = "#{argument.name}: #{argument.default_value.source}"

  format(MSG, original: argument.source, replacement: replacement)
end