3262 lines
112 KiB
Ruby
Generated
3262 lines
112 KiB
Ruby
Generated
# typed: true
|
|
|
|
# DO NOT EDIT MANUALLY
|
|
# This is an autogenerated file for types exported from the `rubocop-performance` gem.
|
|
# Please instead update this file by running `bin/tapioca gem rubocop-performance`.
|
|
|
|
# source://rubocop-performance//lib/rubocop/performance.rb#3
|
|
module RuboCop; end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#4
|
|
module RuboCop::Cop; end
|
|
|
|
module RuboCop::Cop::Lint; end
|
|
|
|
class RuboCop::Cop::Lint::UnusedMethodArgument < ::RuboCop::Cop::Base
|
|
# source://rubocop/1.60.2/lib/rubocop/cop/lint/unused_method_argument.rb#66
|
|
def not_implemented?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop/1.60.2/lib/rubocop/cop/lint/unused_method_argument.rb#81
|
|
def autocorrect(corrector, node); end
|
|
|
|
# source://rubocop/1.60.2/lib/rubocop/cop/lint/unused_method_argument.rb#85
|
|
def check_argument(variable); end
|
|
|
|
# source://rubocop/1.60.2/lib/rubocop/cop/lint/unused_method_argument.rb#93
|
|
def ignored_method?(body); end
|
|
|
|
# source://rubocop/1.60.2/lib/rubocop/cop/lint/unused_method_argument.rb#98
|
|
def message(variable); end
|
|
|
|
class << self
|
|
# source://rubocop-performance//lib/rubocop-performance.rb#15
|
|
def autocorrect_incompatible_with; end
|
|
|
|
# source://rubocop/1.60.2/lib/rubocop/cop/lint/unused_method_argument.rb#75
|
|
def joining_forces; end
|
|
end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/ancestors_include.rb#5
|
|
module RuboCop::Cop::Performance; end
|
|
|
|
# Identifies usages of `ancestors.include?` and change them to use `<=` instead.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# A.ancestors.include?(B)
|
|
#
|
|
# # good
|
|
# A <= B
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/ancestors_include.rb#19
|
|
class RuboCop::Cop::Performance::AncestorsInclude < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/ancestors_include.rb#26
|
|
def ancestors_include_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/ancestors_include.rb#30
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/ancestors_include.rb#43
|
|
def range(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/ancestors_include.rb#23
|
|
RuboCop::Cop::Performance::AncestorsInclude::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/ancestors_include.rb#24
|
|
RuboCop::Cop::Performance::AncestorsInclude::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where slicing arrays with semi-infinite ranges
|
|
# can be replaced by `Array#take` and `Array#drop`.
|
|
# This cop was created due to a mistake in microbenchmark and hence is disabled by default.
|
|
# Refer https://github.com/rubocop/rubocop-performance/pull/175#issuecomment-731892717
|
|
#
|
|
# @example
|
|
# # bad
|
|
# array[..2]
|
|
# array[...2]
|
|
# array[2..]
|
|
# array[2...]
|
|
# array.slice(..2)
|
|
#
|
|
# # good
|
|
# array.take(3)
|
|
# array.take(2)
|
|
# array.drop(2)
|
|
# array.drop(2)
|
|
# array.take(3)
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/array_semi_infinite_range_slice.rb#29
|
|
class RuboCop::Cop::Performance::ArraySemiInfiniteRangeSlice < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/array_semi_infinite_range_slice.rb#45
|
|
def endless_range?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/array_semi_infinite_range_slice.rb#41
|
|
def endless_range_slice?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/array_semi_infinite_range_slice.rb#52
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/array_semi_infinite_range_slice.rb#52
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/array_semi_infinite_range_slice.rb#66
|
|
def correction(receiver, range_node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/array_semi_infinite_range_slice.rb#36
|
|
RuboCop::Cop::Performance::ArraySemiInfiniteRangeSlice::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/array_semi_infinite_range_slice.rb#39
|
|
RuboCop::Cop::Performance::ArraySemiInfiniteRangeSlice::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Set)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/array_semi_infinite_range_slice.rb#38
|
|
RuboCop::Cop::Performance::ArraySemiInfiniteRangeSlice::SLICE_METHODS = T.let(T.unsafe(nil), Set)
|
|
|
|
# Identifies places where numeric argument to BigDecimal should be
|
|
# converted to string. Initializing from String is faster
|
|
# than from Numeric for BigDecimal.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# BigDecimal(1, 2)
|
|
# 4.to_d(6)
|
|
# BigDecimal(1.2, 3, exception: true)
|
|
# 4.5.to_d(6, exception: true)
|
|
#
|
|
# # good
|
|
# BigDecimal('1', 2)
|
|
# BigDecimal('4', 6)
|
|
# BigDecimal('1.2', 3, exception: true)
|
|
# BigDecimal('4.5', 6, exception: true)
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/big_decimal_with_numeric_argument.rb#23
|
|
class RuboCop::Cop::Performance::BigDecimalWithNumericArgument < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/big_decimal_with_numeric_argument.rb#29
|
|
def big_decimal_with_numeric_argument?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/big_decimal_with_numeric_argument.rb#37
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/big_decimal_with_numeric_argument.rb#33
|
|
def to_d?(param0 = T.unsafe(nil)); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/big_decimal_with_numeric_argument.rb#26
|
|
RuboCop::Cop::Performance::BigDecimalWithNumericArgument::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/big_decimal_with_numeric_argument.rb#27
|
|
RuboCop::Cop::Performance::BigDecimalWithNumericArgument::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# In Ruby 2.7, `UnboundMethod#bind_call` has been added.
|
|
#
|
|
# This cop identifies places where `bind(obj).call(args, ...)`
|
|
# can be replaced by `bind_call(obj, args, ...)`.
|
|
#
|
|
# The `bind_call(obj, args, ...)` method is faster than
|
|
# `bind(obj).call(args, ...)`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# umethod.bind(obj).call(foo, bar)
|
|
# umethod.bind(obj).(foo, bar)
|
|
#
|
|
# # good
|
|
# umethod.bind_call(obj, foo, bar)
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/bind_call.rb#22
|
|
class RuboCop::Cop::Performance::BindCall < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/bind_call.rb#32
|
|
def bind_with_call_method?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/bind_call.rb#40
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/bind_call.rb#71
|
|
def build_call_args(call_args_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/bind_call.rb#64
|
|
def correction_range(receiver, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/bind_call.rb#58
|
|
def message(bind_arg, call_args); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/bind_call.rb#29
|
|
RuboCop::Cop::Performance::BindCall::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/bind_call.rb#30
|
|
RuboCop::Cop::Performance::BindCall::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies unnecessary use of a `block_given?` where explicit check
|
|
# of block argument would suffice.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# def method(&block)
|
|
# do_something if block_given?
|
|
# end
|
|
#
|
|
# # good
|
|
# def method(&block)
|
|
# do_something if block
|
|
# end
|
|
#
|
|
# # good - block is reassigned
|
|
# def method(&block)
|
|
# block ||= -> { do_something }
|
|
# warn "Using default ..." unless block_given?
|
|
# # ...
|
|
# end
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/block_given_with_explicit_block.rb#27
|
|
class RuboCop::Cop::Performance::BlockGivenWithExplicitBlock < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/block_given_with_explicit_block.rb#35
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/block_given_with_explicit_block.rb#33
|
|
def reassigns_block_arg?(param0 = T.unsafe(nil), param1); end
|
|
|
|
class << self
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/block_given_with_explicit_block.rb#51
|
|
def autocorrect_incompatible_with; end
|
|
end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/block_given_with_explicit_block.rb#31
|
|
RuboCop::Cop::Performance::BlockGivenWithExplicitBlock::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/block_given_with_explicit_block.rb#30
|
|
RuboCop::Cop::Performance::BlockGivenWithExplicitBlock::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where `caller[n]` can be replaced by `caller(n..n).first`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# caller[1]
|
|
# caller.first
|
|
# caller_locations[1]
|
|
# caller_locations.first
|
|
#
|
|
# # good
|
|
# caller(2..2).first
|
|
# caller(1..1).first
|
|
# caller_locations(2..2).first
|
|
# caller_locations(1..1).first
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/caller.rb#20
|
|
class RuboCop::Cop::Performance::Caller < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/caller.rb#33
|
|
def caller_with_scope_method?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/caller.rb#40
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/caller.rb#26
|
|
def slow_caller?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/caller.rb#61
|
|
def int_value(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/caller.rb#23
|
|
RuboCop::Cop::Performance::Caller::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/caller.rb#24
|
|
RuboCop::Cop::Performance::Caller::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Reordering `when` conditions with a splat to the end
|
|
# of the `when` branches can improve performance.
|
|
#
|
|
# Ruby has to allocate memory for the splat expansion every time
|
|
# that the `case` `when` statement is run. Since Ruby does not support
|
|
# fall through inside of `case` `when`, like some other languages do,
|
|
# the order of the `when` branches should not matter. By placing any
|
|
# splat expansions at the end of the list of `when` branches we will
|
|
# reduce the number of times that memory has to be allocated for
|
|
# the expansion. The exception to this is if multiple of your `when`
|
|
# conditions can be true for any given condition. A likely scenario for
|
|
# this defining a higher level when condition to override a condition
|
|
# that is inside of the splat expansion.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# case foo
|
|
# when *condition
|
|
# bar
|
|
# when baz
|
|
# foobar
|
|
# end
|
|
#
|
|
# case foo
|
|
# when *[1, 2, 3, 4]
|
|
# bar
|
|
# when 5
|
|
# baz
|
|
# end
|
|
#
|
|
# # good
|
|
# case foo
|
|
# when baz
|
|
# foobar
|
|
# when *condition
|
|
# bar
|
|
# end
|
|
#
|
|
# case foo
|
|
# when 1, 2, 3, 4
|
|
# bar
|
|
# when 5
|
|
# baz
|
|
# end
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#58
|
|
class RuboCop::Cop::Performance::CaseWhenSplat < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::Alignment
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#66
|
|
def on_case(case_node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#83
|
|
def autocorrect(corrector, when_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#140
|
|
def indent_for(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#100
|
|
def inline_fix_branch(corrector, when_node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#164
|
|
def needs_reorder?(when_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#136
|
|
def new_branch_without_then(node, new_condition); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#132
|
|
def new_condition_with_then(node, new_condition); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#158
|
|
def non_splat?(condition); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#91
|
|
def range(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#107
|
|
def reorder_condition(corrector, when_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#116
|
|
def reordering_correction(when_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#95
|
|
def replacement(conditions); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#144
|
|
def splat_offenses(when_conditions); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#126
|
|
def when_branch_range(when_node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#64
|
|
RuboCop::Cop::Performance::CaseWhenSplat::ARRAY_MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/case_when_splat.rb#63
|
|
RuboCop::Cop::Performance::CaseWhenSplat::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# Identifies places where a case-insensitive string comparison
|
|
# can better be implemented using `casecmp`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# str.downcase == 'abc'
|
|
# str.upcase.eql? 'ABC'
|
|
# 'abc' == str.downcase
|
|
# 'ABC'.eql? str.upcase
|
|
# str.downcase == str.downcase
|
|
#
|
|
# # good
|
|
# str.casecmp('ABC').zero?
|
|
# 'abc'.casecmp(str).zero?
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#24
|
|
class RuboCop::Cop::Performance::Casecmp < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#45
|
|
def downcase_downcase(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#31
|
|
def downcase_eq(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#38
|
|
def eq_downcase(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#52
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#84
|
|
def autocorrect(corrector, node, replacement); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#88
|
|
def build_good_method(method, arg, variable); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#67
|
|
def take_method_apart(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#29
|
|
RuboCop::Cop::Performance::Casecmp::CASE_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#27
|
|
RuboCop::Cop::Performance::Casecmp::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/casecmp.rb#28
|
|
RuboCop::Cop::Performance::Casecmp::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies usages of `array.compact.flatten.map { |x| x.downcase }`.
|
|
# Each of these methods (`compact`, `flatten`, `map`) will generate a new intermediate array
|
|
# that is promptly thrown away. Instead it is faster to mutate when we know it's safe.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# array = ["a", "b", "c"]
|
|
# array.compact.flatten.map { |x| x.downcase }
|
|
#
|
|
# # good
|
|
# array = ["a", "b", "c"]
|
|
# array.compact!
|
|
# array.flatten!
|
|
# array.map! { |x| x.downcase }
|
|
# array
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/chain_array_allocation.rb#21
|
|
class RuboCop::Cop::Performance::ChainArrayAllocation < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/chain_array_allocation.rb#54
|
|
def chain_array_allocation?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/chain_array_allocation.rb#62
|
|
def on_send(node); end
|
|
end
|
|
|
|
# These methods ALWAYS return a new array
|
|
# after they're called it's safe to mutate the resulting array
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/chain_array_allocation.rb#37
|
|
RuboCop::Cop::Performance::ChainArrayAllocation::ALWAYS_RETURNS_NEW_ARRAY = T.let(T.unsafe(nil), Set)
|
|
|
|
# These methods have a mutation alternative. For example :collect
|
|
# can be called as :collect!
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/chain_array_allocation.rb#45
|
|
RuboCop::Cop::Performance::ChainArrayAllocation::HAS_MUTATION_ALTERNATIVE = T.let(T.unsafe(nil), Set)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/chain_array_allocation.rb#50
|
|
RuboCop::Cop::Performance::ChainArrayAllocation::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/chain_array_allocation.rb#48
|
|
RuboCop::Cop::Performance::ChainArrayAllocation::RETURNS_NEW_ARRAY = T.let(T.unsafe(nil), Set)
|
|
|
|
# These methods return a new array only when called without a block.
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/chain_array_allocation.rb#33
|
|
RuboCop::Cop::Performance::ChainArrayAllocation::RETURNS_NEW_ARRAY_WHEN_NO_BLOCK = T.let(T.unsafe(nil), Set)
|
|
|
|
# These methods return a new array but only sometimes. They must be
|
|
# called with an argument. For example:
|
|
#
|
|
# [1,2].first # => 1
|
|
# [1,2].first(1) # => [1]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/chain_array_allocation.rb#30
|
|
RuboCop::Cop::Performance::ChainArrayAllocation::RETURN_NEW_ARRAY_WHEN_ARGS = T.let(T.unsafe(nil), Set)
|
|
|
|
# Identifies places where Array and Hash literals are used within loops.
|
|
# It is better to extract them into a local variable or constant
|
|
# to avoid unnecessary allocations on each iteration.
|
|
#
|
|
# You can set the minimum number of elements to consider
|
|
# an offense with `MinSize`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# users.select do |user|
|
|
# %i[superadmin admin].include?(user.role)
|
|
# end
|
|
#
|
|
# # good
|
|
# admin_roles = %i[superadmin admin]
|
|
# users.select do |user|
|
|
# admin_roles.include?(user.role)
|
|
# end
|
|
#
|
|
# # good
|
|
# ADMIN_ROLES = %i[superadmin admin]
|
|
# ...
|
|
# users.select do |user|
|
|
# ADMIN_ROLES.include?(user.role)
|
|
# end
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#34
|
|
class RuboCop::Cop::Performance::CollectionLiteralInLoop < ::RuboCop::Cop::Base
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#74
|
|
def enumerable_loop?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#68
|
|
def kernel_loop?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#80
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#90
|
|
def check_literal?(node, method); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#128
|
|
def enumerable_method?(method_name); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#110
|
|
def keyword_loop?(type); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#120
|
|
def literal_class(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#106
|
|
def loop?(ancestor, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#132
|
|
def min_size; end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#114
|
|
def node_within_enumerable_loop?(node, ancestor); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#97
|
|
def nonmutable_method_of_array_or_hash?(node, method); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#102
|
|
def parent_is_loop?(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#56
|
|
RuboCop::Cop::Performance::CollectionLiteralInLoop::ARRAY_METHODS = T.let(T.unsafe(nil), Set)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#41
|
|
RuboCop::Cop::Performance::CollectionLiteralInLoop::ENUMERABLE_METHOD_NAMES = T.let(T.unsafe(nil), Set)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#66
|
|
RuboCop::Cop::Performance::CollectionLiteralInLoop::HASH_METHODS = T.let(T.unsafe(nil), Set)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#39
|
|
RuboCop::Cop::Performance::CollectionLiteralInLoop::LOOP_TYPES = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#35
|
|
RuboCop::Cop::Performance::CollectionLiteralInLoop::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#42
|
|
RuboCop::Cop::Performance::CollectionLiteralInLoop::NONMUTATING_ARRAY_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#58
|
|
RuboCop::Cop::Performance::CollectionLiteralInLoop::NONMUTATING_HASH_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/collection_literal_in_loop.rb#38
|
|
RuboCop::Cop::Performance::CollectionLiteralInLoop::POST_CONDITION_LOOP_TYPES = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where `sort { |a, b| a.foo <=> b.foo }`
|
|
# can be replaced by `sort_by(&:foo)`.
|
|
# This cop also checks `sort!`, `min`, `max` and `minmax` methods.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# array.sort { |a, b| a.foo <=> b.foo }
|
|
# array.sort! { |a, b| a.foo <=> b.foo }
|
|
# array.max { |a, b| a.foo <=> b.foo }
|
|
# array.min { |a, b| a.foo <=> b.foo }
|
|
# array.minmax { |a, b| a.foo <=> b.foo }
|
|
# array.sort { |a, b| a[:foo] <=> b[:foo] }
|
|
#
|
|
# # good
|
|
# array.sort_by(&:foo)
|
|
# array.sort_by!(&:foo)
|
|
# array.sort_by { |v| v.foo }
|
|
# array.sort_by do |var|
|
|
# var.foo
|
|
# end
|
|
# array.max_by(&:foo)
|
|
# array.min_by(&:foo)
|
|
# array.minmax_by(&:foo)
|
|
# array.sort_by { |a| a[:foo] }
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/compare_with_block.rb#30
|
|
class RuboCop::Cop::Performance::CompareWithBlock < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/compare_with_block.rb#41
|
|
def compare?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/compare_with_block.rb#55
|
|
def on_block(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/compare_with_block.rb#48
|
|
def replaceable_body?(param0 = T.unsafe(nil), param1, param2); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/compare_with_block.rb#114
|
|
def compare_range(send, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/compare_with_block.rb#91
|
|
def message(send, method, var_a, var_b, args); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/compare_with_block.rb#76
|
|
def slow_compare?(method, args_a, args_b); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/compare_with_block.rb#34
|
|
RuboCop::Cop::Performance::CompareWithBlock::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/compare_with_block.rb#38
|
|
RuboCop::Cop::Performance::CompareWithBlock::REPLACEMENT = T.let(T.unsafe(nil), Hash)
|
|
|
|
# Identifies places where `Concurrent.monotonic_time`
|
|
# can be replaced by `Process.clock_gettime(Process::CLOCK_MONOTONIC)`.
|
|
#
|
|
# @example
|
|
#
|
|
# # bad
|
|
# Concurrent.monotonic_time
|
|
#
|
|
# # good
|
|
# Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/concurrent_monotonic_time.rb#17
|
|
class RuboCop::Cop::Performance::ConcurrentMonotonicTime < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/concurrent_monotonic_time.rb#23
|
|
def concurrent_monotonic_time?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/concurrent_monotonic_time.rb#28
|
|
def on_send(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/concurrent_monotonic_time.rb#20
|
|
RuboCop::Cop::Performance::ConcurrentMonotonicTime::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/concurrent_monotonic_time.rb#21
|
|
RuboCop::Cop::Performance::ConcurrentMonotonicTime::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Finds regular expressions with dynamic components that are all constants.
|
|
#
|
|
# Ruby allocates a new Regexp object every time it executes a code containing such
|
|
# a regular expression. It is more efficient to extract it into a constant,
|
|
# memoize it, or add an `/o` option to perform `#{}` interpolation only once and
|
|
# reuse that Regexp object.
|
|
#
|
|
# @example
|
|
#
|
|
# # bad
|
|
# def tokens(pattern)
|
|
# pattern.scan(TOKEN).reject { |token| token.match?(/\A#{SEPARATORS}\Z/) }
|
|
# end
|
|
#
|
|
# # good
|
|
# ALL_SEPARATORS = /\A#{SEPARATORS}\Z/
|
|
# def tokens(pattern)
|
|
# pattern.scan(TOKEN).reject { |token| token.match?(ALL_SEPARATORS) }
|
|
# end
|
|
#
|
|
# # good
|
|
# def tokens(pattern)
|
|
# pattern.scan(TOKEN).reject { |token| token.match?(/\A#{SEPARATORS}\Z/o) }
|
|
# end
|
|
#
|
|
# # good
|
|
# def separators
|
|
# @separators ||= /\A#{SEPARATORS}\Z/
|
|
# end
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/constant_regexp.rb#36
|
|
class RuboCop::Cop::Performance::ConstantRegexp < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/constant_regexp.rb#45
|
|
def on_regexp(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/constant_regexp.rb#59
|
|
def regexp_escape?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/constant_regexp.rb#64
|
|
def include_interpolated_const?(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/constant_regexp.rb#55
|
|
def within_allowed_assignment?(node); end
|
|
|
|
class << self
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/constant_regexp.rb#41
|
|
def autocorrect_incompatible_with; end
|
|
end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/constant_regexp.rb#39
|
|
RuboCop::Cop::Performance::ConstantRegexp::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# Identifies usages of `count` on an `Enumerable` that
|
|
# follow calls to `select`, `find_all`, `filter` or `reject`. Querying logic can instead be
|
|
# passed to the `count` call.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# [1, 2, 3].select { |e| e > 2 }.size
|
|
# [1, 2, 3].reject { |e| e > 2 }.size
|
|
# [1, 2, 3].select { |e| e > 2 }.length
|
|
# [1, 2, 3].reject { |e| e > 2 }.length
|
|
# [1, 2, 3].select { |e| e > 2 }.count { |e| e.odd? }
|
|
# [1, 2, 3].reject { |e| e > 2 }.count { |e| e.even? }
|
|
# array.select(&:value).count
|
|
#
|
|
# # good
|
|
# [1, 2, 3].count { |e| e > 2 }
|
|
# [1, 2, 3].count { |e| e < 2 }
|
|
# [1, 2, 3].count { |e| e > 2 && e.odd? }
|
|
# [1, 2, 3].count { |e| e < 2 && e.even? }
|
|
# Model.select('field AS field_one').count
|
|
# Model.select(:value).count
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#48
|
|
class RuboCop::Cop::Performance::Count < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#55
|
|
def count_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#62
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#62
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#79
|
|
def autocorrect(corrector, node, selector_node, selector); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#89
|
|
def eligible_node?(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#132
|
|
def negate_block_pass_as_inline_block(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#111
|
|
def negate_block_pass_reject(corrector, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#118
|
|
def negate_block_reject(corrector, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#128
|
|
def negate_expression(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#103
|
|
def negate_reject(corrector, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#93
|
|
def source_starting_at(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#52
|
|
RuboCop::Cop::Performance::Count::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/count.rb#53
|
|
RuboCop::Cop::Performance::Count::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# In Ruby 2.5, `String#delete_prefix` has been added.
|
|
#
|
|
# This cop identifies places where `gsub(/\Aprefix/, '')` and `sub(/\Aprefix/, '')`
|
|
# can be replaced by `delete_prefix('prefix')`.
|
|
#
|
|
# This cop has `SafeMultiline` configuration option that `true` by default because
|
|
# `^prefix` is unsafe as it will behave incompatible with `delete_prefix`
|
|
# for receiver is multiline string.
|
|
#
|
|
# The `delete_prefix('prefix')` method is faster than `gsub(/\Aprefix/, '')`.
|
|
#
|
|
# @example
|
|
#
|
|
# # bad
|
|
# str.gsub(/\Aprefix/, '')
|
|
# str.gsub!(/\Aprefix/, '')
|
|
#
|
|
# str.sub(/\Aprefix/, '')
|
|
# str.sub!(/\Aprefix/, '')
|
|
#
|
|
# # good
|
|
# str.delete_prefix('prefix')
|
|
# str.delete_prefix!('prefix')
|
|
# @example SafeMultiline: true (default)
|
|
#
|
|
# # good
|
|
# str.gsub(/^prefix/, '')
|
|
# str.gsub!(/^prefix/, '')
|
|
# str.sub(/^prefix/, '')
|
|
# str.sub!(/^prefix/, '')
|
|
# @example SafeMultiline: false
|
|
#
|
|
# # bad
|
|
# str.gsub(/^prefix/, '')
|
|
# str.gsub!(/^prefix/, '')
|
|
# str.sub(/^prefix/, '')
|
|
# str.sub!(/^prefix/, '')
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_prefix.rb#49
|
|
class RuboCop::Cop::Performance::DeletePrefix < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RegexpMetacharacter
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_prefix.rb#66
|
|
def delete_prefix_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_prefix.rb#71
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_prefix.rb#71
|
|
def on_send(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_prefix.rb#56
|
|
RuboCop::Cop::Performance::DeletePrefix::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_prefix.rb#59
|
|
RuboCop::Cop::Performance::DeletePrefix::PREFERRED_METHODS = T.let(T.unsafe(nil), Hash)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_prefix.rb#57
|
|
RuboCop::Cop::Performance::DeletePrefix::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# In Ruby 2.5, `String#delete_suffix` has been added.
|
|
#
|
|
# This cop identifies places where `gsub(/suffix\z/, '')` and `sub(/suffix\z/, '')`
|
|
# can be replaced by `delete_suffix('suffix')`.
|
|
#
|
|
# This cop has `SafeMultiline` configuration option that `true` by default because
|
|
# `suffix$` is unsafe as it will behave incompatible with `delete_suffix?`
|
|
# for receiver is multiline string.
|
|
#
|
|
# The `delete_suffix('suffix')` method is faster than `gsub(/suffix\z/, '')`.
|
|
#
|
|
# @example
|
|
#
|
|
# # bad
|
|
# str.gsub(/suffix\z/, '')
|
|
# str.gsub!(/suffix\z/, '')
|
|
#
|
|
# str.sub(/suffix\z/, '')
|
|
# str.sub!(/suffix\z/, '')
|
|
#
|
|
# # good
|
|
# str.delete_suffix('suffix')
|
|
# str.delete_suffix!('suffix')
|
|
# @example SafeMultiline: true (default)
|
|
#
|
|
# # good
|
|
# str.gsub(/suffix$/, '')
|
|
# str.gsub!(/suffix$/, '')
|
|
# str.sub(/suffix$/, '')
|
|
# str.sub!(/suffix$/, '')
|
|
# @example SafeMultiline: false
|
|
#
|
|
# # bad
|
|
# str.gsub(/suffix$/, '')
|
|
# str.gsub!(/suffix$/, '')
|
|
# str.sub(/suffix$/, '')
|
|
# str.sub!(/suffix$/, '')
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_suffix.rb#49
|
|
class RuboCop::Cop::Performance::DeleteSuffix < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RegexpMetacharacter
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_suffix.rb#66
|
|
def delete_suffix_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_suffix.rb#71
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_suffix.rb#71
|
|
def on_send(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_suffix.rb#56
|
|
RuboCop::Cop::Performance::DeleteSuffix::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_suffix.rb#59
|
|
RuboCop::Cop::Performance::DeleteSuffix::PREFERRED_METHODS = T.let(T.unsafe(nil), Hash)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/delete_suffix.rb#57
|
|
RuboCop::Cop::Performance::DeleteSuffix::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies usages of `first`, `last`, `[0]` or `[-1]`
|
|
# chained to `select`, `find_all` or `filter` and change them to use
|
|
# `detect` instead.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# [].select { |item| true }.first
|
|
# [].select { |item| true }.last
|
|
# [].find_all { |item| true }.first
|
|
# [].find_all { |item| true }.last
|
|
# [].filter { |item| true }.first
|
|
# [].filter { |item| true }.last
|
|
# [].filter { |item| true }[0]
|
|
# [].filter { |item| true }[-1]
|
|
#
|
|
# # good
|
|
# [].detect { |item| true }
|
|
# [].reverse.detect { |item| true }
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#30
|
|
class RuboCop::Cop::Performance::Detect < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#41
|
|
def detect_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#50
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#50
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#70
|
|
def accept_first_call?(receiver, body); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#102
|
|
def autocorrect(corrector, node, replacement); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#128
|
|
def lazy?(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#113
|
|
def message_for_method(method, index); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#124
|
|
def preferred_method; end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#79
|
|
def register_offense(node, receiver, second_method, index); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#94
|
|
def replacement(method, index); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#33
|
|
RuboCop::Cop::Performance::Detect::CANDIDATE_METHODS = T.let(T.unsafe(nil), Set)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#37
|
|
RuboCop::Cop::Performance::Detect::INDEX_MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#38
|
|
RuboCop::Cop::Performance::Detect::INDEX_REVERSE_MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#35
|
|
RuboCop::Cop::Performance::Detect::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#39
|
|
RuboCop::Cop::Performance::Detect::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#36
|
|
RuboCop::Cop::Performance::Detect::REVERSE_MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# Checks for double `#start_with?` or `#end_with?` calls
|
|
# separated by `||`. In some cases such calls can be replaced
|
|
# with an single `#start_with?`/`#end_with?` call.
|
|
#
|
|
# `IncludeActiveSupportAliases` configuration option is used to check for
|
|
# `starts_with?` and `ends_with?`. These methods are defined by Active Support.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# str.start_with?("a") || str.start_with?(Some::CONST)
|
|
# str.start_with?("a", "b") || str.start_with?("c")
|
|
# str.end_with?(var1) || str.end_with?(var2)
|
|
#
|
|
# # good
|
|
# str.start_with?("a", Some::CONST)
|
|
# str.start_with?("a", "b", "c")
|
|
# str.end_with?(var1, var2)
|
|
# @example IncludeActiveSupportAliases: false (default)
|
|
# # good
|
|
# str.starts_with?("a", "b") || str.starts_with?("c")
|
|
# str.ends_with?(var1) || str.ends_with?(var2)
|
|
#
|
|
# str.starts_with?("a", "b", "c")
|
|
# str.ends_with?(var1, var2)
|
|
# @example IncludeActiveSupportAliases: true
|
|
# # bad
|
|
# str.starts_with?("a", "b") || str.starts_with?("c")
|
|
# str.ends_with?(var1) || str.ends_with?(var2)
|
|
#
|
|
# # good
|
|
# str.starts_with?("a", "b", "c")
|
|
# str.ends_with?(var1, var2)
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#41
|
|
class RuboCop::Cop::Performance::DoubleStartEndWith < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#96
|
|
def check_with_active_support_aliases(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#46
|
|
def on_or(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#90
|
|
def two_start_end_with_calls(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#60
|
|
def autocorrect(corrector, first_call_args, second_call_args, combined_args); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#86
|
|
def check_for_active_support_aliases?; end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#82
|
|
def combine_args(first_call_args, second_call_args); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#76
|
|
def message(node, receiver, method, combined_args); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#68
|
|
def process_source(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#44
|
|
RuboCop::Cop::Performance::DoubleStartEndWith::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# Identifies unnecessary use of a regex where `String#end_with?` would suffice.
|
|
#
|
|
# This cop has `SafeMultiline` configuration option that `true` by default because
|
|
# `end$` is unsafe as it will behave incompatible with `end_with?`
|
|
# for receiver is multiline string.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# 'abc'.match?(/bc\Z/)
|
|
# /bc\Z/.match?('abc')
|
|
# 'abc' =~ /bc\Z/
|
|
# /bc\Z/ =~ 'abc'
|
|
# 'abc'.match(/bc\Z/)
|
|
# /bc\Z/.match('abc')
|
|
#
|
|
# # good
|
|
# 'abc'.end_with?('bc')
|
|
# @example SafeMultiline: true (default)
|
|
#
|
|
# # good
|
|
# 'abc'.match?(/bc$/)
|
|
# /bc$/.match?('abc')
|
|
# 'abc' =~ /bc$/
|
|
# /bc$/ =~ 'abc'
|
|
# 'abc'.match(/bc$/)
|
|
# /bc$/.match('abc')
|
|
# @example SafeMultiline: false
|
|
#
|
|
# # bad
|
|
# 'abc'.match?(/bc$/)
|
|
# /bc$/.match?('abc')
|
|
# 'abc' =~ /bc$/
|
|
# /bc$/ =~ 'abc'
|
|
# 'abc'.match(/bc$/)
|
|
# /bc$/.match('abc')
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/end_with.rb#49
|
|
class RuboCop::Cop::Performance::EndWith < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RegexpMetacharacter
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/end_with.rb#62
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/end_with.rb#62
|
|
def on_match_with_lvasgn(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/end_with.rb#62
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/end_with.rb#56
|
|
def redundant_regex?(param0 = T.unsafe(nil)); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/end_with.rb#53
|
|
RuboCop::Cop::Performance::EndWith::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/end_with.rb#54
|
|
RuboCop::Cop::Performance::EndWith::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Do not compute the size of statically sized objects.
|
|
#
|
|
# @example
|
|
# # String methods
|
|
# # bad
|
|
# 'foo'.size
|
|
# %q[bar].count
|
|
# %(qux).length
|
|
#
|
|
# # Symbol methods
|
|
# # bad
|
|
# :fred.size
|
|
# :'baz'.length
|
|
#
|
|
# # Array methods
|
|
# # bad
|
|
# [1, 2, thud].count
|
|
# %W(1, 2, bar).size
|
|
#
|
|
# # Hash methods
|
|
# # bad
|
|
# { a: corge, b: grault }.length
|
|
#
|
|
# # good
|
|
# foo.size
|
|
# bar.count
|
|
# qux.length
|
|
#
|
|
# # good
|
|
# :"#{fred}".size
|
|
# CONST = :baz.length
|
|
#
|
|
# # good
|
|
# [1, 2, *thud].count
|
|
# garply = [1, 2, 3]
|
|
# garply.size
|
|
#
|
|
# # good
|
|
# { a: corge, **grault }.length
|
|
# waldo = { a: corge, b: grault }
|
|
# waldo.size
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#48
|
|
class RuboCop::Cop::Performance::FixedSize < ::RuboCop::Cop::Base
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#52
|
|
def counter(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#56
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#56
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#73
|
|
def allowed_argument?(arg); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#77
|
|
def allowed_parent?(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#69
|
|
def allowed_variable?(var); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#87
|
|
def contains_double_splat?(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#81
|
|
def contains_splat?(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#93
|
|
def non_string_argument?(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#49
|
|
RuboCop::Cop::Performance::FixedSize::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/fixed_size.rb#50
|
|
RuboCop::Cop::Performance::FixedSize::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies usages of `map { ... }.flatten` and
|
|
# change them to use `flat_map { ... }` instead.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# [1, 2, 3, 4].map { |e| [e, e] }.flatten(1)
|
|
# [1, 2, 3, 4].collect { |e| [e, e] }.flatten(1)
|
|
#
|
|
# # good
|
|
# [1, 2, 3, 4].flat_map { |e| [e, e] }
|
|
# [1, 2, 3, 4].map { |e| [e, e] }.flatten
|
|
# [1, 2, 3, 4].collect { |e| [e, e] }.flatten
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#18
|
|
class RuboCop::Cop::Performance::FlatMap < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#28
|
|
def flat_map_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#39
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#39
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#73
|
|
def autocorrect(corrector, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#53
|
|
def offense_for_levels(node, map_node, first_method, flatten); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#59
|
|
def offense_for_method(node, map_node, first_method, flatten); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#63
|
|
def register_offense(node, map_node, first_method, flatten, message); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#24
|
|
RuboCop::Cop::Performance::FlatMap::FLATTEN_MULTIPLE_LEVELS = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#22
|
|
RuboCop::Cop::Performance::FlatMap::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/flat_map.rb#23
|
|
RuboCop::Cop::Performance::FlatMap::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Checks for inefficient searching of keys and values within
|
|
# hashes.
|
|
#
|
|
# `Hash#keys.include?` is less efficient than `Hash#key?` because
|
|
# the former allocates a new array and then performs an O(n) search
|
|
# through that array, while `Hash#key?` does not allocate any array and
|
|
# performs a faster O(1) search for the key.
|
|
#
|
|
# `Hash#values.include?` is less efficient than `Hash#value?`. While they
|
|
# both perform an O(n) search through all of the values, calling `values`
|
|
# allocates a new array while using `value?` does not.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# { a: 1, b: 2 }.keys.include?(:a)
|
|
# { a: 1, b: 2 }.keys.include?(:z)
|
|
# h = { a: 1, b: 2 }; h.keys.include?(100)
|
|
#
|
|
# # good
|
|
# { a: 1, b: 2 }.key?(:a)
|
|
# { a: 1, b: 2 }.has_key?(:z)
|
|
# h = { a: 1, b: 2 }; h.key?(100)
|
|
#
|
|
# # bad
|
|
# { a: 1, b: 2 }.values.include?(2)
|
|
# { a: 1, b: 2 }.values.include?('garbage')
|
|
# h = { a: 1, b: 2 }; h.values.include?(nil)
|
|
#
|
|
# # good
|
|
# { a: 1, b: 2 }.value?(2)
|
|
# { a: 1, b: 2 }.has_value?('garbage')
|
|
# h = { a: 1, b: 2 }; h.value?(nil)
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#42
|
|
class RuboCop::Cop::Performance::InefficientHashSearch < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#47
|
|
def inefficient_include?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#51
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#51
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#91
|
|
def correct_argument(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#99
|
|
def correct_dot(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#95
|
|
def correct_hash_expression(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#75
|
|
def correct_method(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#82
|
|
def current_method(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#67
|
|
def message(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#71
|
|
def replacement(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#86
|
|
def use_long_method; end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#45
|
|
RuboCop::Cop::Performance::InefficientHashSearch::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where inefficient `readlines` method
|
|
# can be replaced by `each_line` to avoid fully loading file content into memory.
|
|
#
|
|
# @example
|
|
#
|
|
# # bad
|
|
# File.readlines('testfile').each { |l| puts l }
|
|
# IO.readlines('testfile', chomp: true).each { |l| puts l }
|
|
#
|
|
# conn.readlines(10).map { |l| l.size }
|
|
# file.readlines.find { |l| l.start_with?('#') }
|
|
# file.readlines.each { |l| puts l }
|
|
#
|
|
# # good
|
|
# File.open('testfile', 'r').each_line { |l| puts l }
|
|
# IO.open('testfile').each_line(chomp: true) { |l| puts l }
|
|
#
|
|
# conn.each_line(10).map { |l| l.size }
|
|
# file.each_line.find { |l| l.start_with?('#') }
|
|
# file.each_line { |l| puts l }
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#27
|
|
class RuboCop::Cop::Performance::IoReadlines < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#42
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#34
|
|
def readlines_on_class?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#38
|
|
def readlines_on_instance?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#58
|
|
def autocorrect(corrector, enumerable_call, readlines_call, receiver); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#90
|
|
def build_bad_method(enumerable_call); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#106
|
|
def build_call_args(call_args_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#82
|
|
def build_good_method(enumerable_call); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#94
|
|
def correction_range(enumerable_call, readlines_call); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#76
|
|
def offense_range(enumerable_call, readlines_call); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#31
|
|
RuboCop::Cop::Performance::IoReadlines::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/io_readlines.rb#32
|
|
RuboCop::Cop::Performance::IoReadlines::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# In Ruby 2.7, `Enumerable#filter_map` has been added.
|
|
#
|
|
# This cop identifies places where `map { ... }.compact` can be replaced by `filter_map`.
|
|
#
|
|
# [source,ruby]
|
|
# ----
|
|
# [true, false, nil].compact #=> [true, false]
|
|
# [true, false, nil].filter_map(&:itself) #=> [true]
|
|
# ----
|
|
#
|
|
# @example
|
|
# # bad
|
|
# ary.map(&:foo).compact
|
|
# ary.collect(&:foo).compact
|
|
#
|
|
# # good
|
|
# ary.filter_map(&:foo)
|
|
# ary.map(&:foo).compact!
|
|
# ary.compact.map(&:foo)
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#30
|
|
class RuboCop::Cop::Performance::MapCompact < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#40
|
|
def map_compact(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#53
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#53
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#94
|
|
def compact_method_with_final_newline_range(compact_method_range); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#90
|
|
def invoke_method_after_map_compact_on_same_line?(compact_node, chained_method); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#86
|
|
def map_method_and_compact_method_on_same_line?(map_node, compact_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#68
|
|
def remove_compact_method(corrector, map_node, compact_node, chained_method); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#82
|
|
def use_dot?(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#35
|
|
RuboCop::Cop::Performance::MapCompact::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_compact.rb#36
|
|
RuboCop::Cop::Performance::MapCompact::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Checks if the map method is used in a chain.
|
|
#
|
|
# Autocorrection is not supported because an appropriate block variable name cannot be determined automatically.
|
|
#
|
|
# [source,ruby]
|
|
# ----
|
|
# class X
|
|
# def initialize
|
|
# @@num = 0
|
|
# end
|
|
#
|
|
# def foo
|
|
# @@num += 1
|
|
# self
|
|
# end
|
|
#
|
|
# def bar
|
|
# @@num * 2
|
|
# end
|
|
# end
|
|
#
|
|
# [X.new, X.new].map(&:foo).map(&:bar) # => [4, 4]
|
|
# [X.new, X.new].map { |x| x.foo.bar } # => [2, 4]
|
|
# ----
|
|
#
|
|
# @example
|
|
#
|
|
# # bad
|
|
# array.map(&:foo).map(&:bar)
|
|
#
|
|
# # good
|
|
# array.map { |item| item.foo.bar }
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_method_chain.rb#43
|
|
class RuboCop::Cop::Performance::MapMethodChain < ::RuboCop::Cop::Base
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_method_chain.rb#49
|
|
def block_pass_with_symbol_arg?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_method_chain.rb#53
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_method_chain.rb#72
|
|
def find_begin_of_chained_map_method(node, map_args); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_method_chain.rb#46
|
|
RuboCop::Cop::Performance::MapMethodChain::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/map_method_chain.rb#47
|
|
RuboCop::Cop::Performance::MapMethodChain::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where methods are converted to blocks, with the
|
|
# use of `&method`, and passed as arguments to method calls.
|
|
# It is faster to replace those with explicit blocks, calling those methods inside.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# array.map(&method(:do_something))
|
|
# [1, 2, 3].each(&out.method(:puts))
|
|
#
|
|
# # good
|
|
# array.map { |x| do_something(x) }
|
|
# [1, 2, 3].each { |x| out.puts(x) }
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/method_object_as_block.rb#19
|
|
class RuboCop::Cop::Performance::MethodObjectAsBlock < ::RuboCop::Cop::Base
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/method_object_as_block.rb#22
|
|
def method_object_as_argument?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/method_object_as_block.rb#26
|
|
def on_block_pass(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/method_object_as_block.rb#20
|
|
RuboCop::Cop::Performance::MethodObjectAsBlock::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# Checks for `OpenStruct.new` calls.
|
|
# Instantiation of an `OpenStruct` invalidates
|
|
# Ruby global method cache as it causes dynamic method
|
|
# definition during program runtime.
|
|
# This could have an effect on performance,
|
|
# especially in case of single-threaded
|
|
# applications with multiple `OpenStruct` instantiations.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# class MyClass
|
|
# def my_method
|
|
# OpenStruct.new(my_key1: 'my_value1', my_key2: 'my_value2')
|
|
# end
|
|
# end
|
|
#
|
|
# # good
|
|
# class MyClass
|
|
# MyStruct = Struct.new(:my_key1, :my_key2)
|
|
# def my_method
|
|
# MyStruct.new('my_value1', 'my_value2')
|
|
# end
|
|
# end
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/open_struct.rb#34
|
|
class RuboCop::Cop::Performance::OpenStruct < ::RuboCop::Cop::Base
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/open_struct.rb#42
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/open_struct.rb#38
|
|
def open_struct(param0 = T.unsafe(nil)); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/open_struct.rb#35
|
|
RuboCop::Cop::Performance::OpenStruct::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/open_struct.rb#36
|
|
RuboCop::Cop::Performance::OpenStruct::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies uses of `Range#include?` and `Range#member?`, which iterates over each
|
|
# item in a `Range` to see if a specified item is there. In contrast,
|
|
# `Range#cover?` simply compares the target item with the beginning and
|
|
# end points of the `Range`. In a great majority of cases, this is what
|
|
# is wanted.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# ('a'..'z').include?('b') # => true
|
|
# ('a'..'z').member?('b') # => true
|
|
#
|
|
# # good
|
|
# ('a'..'z').cover?('b') # => true
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/range_include.rb#29
|
|
class RuboCop::Cop::Performance::RangeInclude < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/range_include.rb#44
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/range_include.rb#44
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/range_include.rb#40
|
|
def range_include(param0 = T.unsafe(nil)); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/range_include.rb#32
|
|
RuboCop::Cop::Performance::RangeInclude::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/range_include.rb#33
|
|
RuboCop::Cop::Performance::RangeInclude::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies the use of a `&block` parameter and `block.call`
|
|
# where `yield` would do just as well.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# def method(&block)
|
|
# block.call
|
|
# end
|
|
# def another(&func)
|
|
# func.call 1, 2, 3
|
|
# end
|
|
#
|
|
# # good
|
|
# def method
|
|
# yield
|
|
# end
|
|
# def another
|
|
# yield 1, 2, 3
|
|
# end
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#25
|
|
class RuboCop::Cop::Performance::RedundantBlockCall < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#43
|
|
def blockarg_assigned?(param0, param1); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#39
|
|
def blockarg_calls(param0, param1); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#34
|
|
def blockarg_def(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#47
|
|
def on_def(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#47
|
|
def on_defs(node); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#97
|
|
def args_include_block_pass?(blockcall); end
|
|
|
|
# offenses are registered on the `block.call` nodes
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#63
|
|
def autocorrect(corrector, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#81
|
|
def calls_to_report(argname, body); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#91
|
|
def shadowed_block_argument?(body, block_argument_of_method_signature); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#31
|
|
RuboCop::Cop::Performance::RedundantBlockCall::CLOSE_PAREN = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#28
|
|
RuboCop::Cop::Performance::RedundantBlockCall::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#30
|
|
RuboCop::Cop::Performance::RedundantBlockCall::OPEN_PAREN = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#32
|
|
RuboCop::Cop::Performance::RedundantBlockCall::SPACE = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_block_call.rb#29
|
|
RuboCop::Cop::Performance::RedundantBlockCall::YIELD = T.let(T.unsafe(nil), String)
|
|
|
|
# Checks for uses `Enumerable#all?`, `Enumerable#any?`, `Enumerable#one?`,
|
|
# and `Enumerable#none?` are compared with `===` or similar methods in block.
|
|
#
|
|
# By default, `Object#===` behaves the same as `Object#==`, but this
|
|
# behavior is appropriately overridden in subclass. For example,
|
|
# `Range#===` returns `true` when argument is within the range.
|
|
#
|
|
# This cop has `AllowRegexpMatch` option and it is true by default because
|
|
# `regexp.match?('string')` often used in block changes to the opposite result:
|
|
#
|
|
# [source,ruby]
|
|
# ----
|
|
# [/pattern/].all? { |regexp| regexp.match?('pattern') } # => true
|
|
# [/pattern/].all? { |regexp| regexp =~ 'pattern' } # => true
|
|
# [/pattern/].all?('pattern') # => false
|
|
# ----
|
|
#
|
|
# @example
|
|
# # bad
|
|
# items.all? { |item| pattern === item }
|
|
# items.all? { |item| item == other }
|
|
# items.all? { |item| item.is_a?(Klass) }
|
|
# items.all? { |item| item.kind_of?(Klass) }
|
|
#
|
|
# # good
|
|
# items.all?(pattern)
|
|
# items.all?(Klass)
|
|
# @example AllowRegexpMatch: true (default)
|
|
#
|
|
# # good
|
|
# items.all? { |item| item =~ pattern }
|
|
# items.all? { |item| item.match?(pattern) }
|
|
# @example AllowRegexpMatch: false
|
|
#
|
|
# # bad
|
|
# items.all? { |item| item =~ pattern }
|
|
# items.all? { |item| item.match?(pattern) }
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#49
|
|
class RuboCop::Cop::Performance::RedundantEqualityComparisonBlock < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#62
|
|
def on_block(node); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#131
|
|
def allow_regexp_match?; end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#104
|
|
def new_argument(block_argument, block_body); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#127
|
|
def offense_range(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#82
|
|
def one_block_argument?(block_arguments); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#94
|
|
def same_block_argument_and_is_a_argument?(block_body, block_argument); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#118
|
|
def use_block_argument_in_method_argument_of_operand?(block_argument, operand); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#86
|
|
def use_equality_comparison_block?(block_body); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#58
|
|
RuboCop::Cop::Performance::RedundantEqualityComparisonBlock::COMPARISON_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#60
|
|
RuboCop::Cop::Performance::RedundantEqualityComparisonBlock::IS_A_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#55
|
|
RuboCop::Cop::Performance::RedundantEqualityComparisonBlock::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#59
|
|
RuboCop::Cop::Performance::RedundantEqualityComparisonBlock::REGEXP_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_equality_comparison_block.rb#57
|
|
RuboCop::Cop::Performance::RedundantEqualityComparisonBlock::TARGET_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies the use of `Regexp#match` or `String#match`, which
|
|
# returns `#<MatchData>`/`nil`. The return value of `=~` is an integral
|
|
# index/`nil` and is more performant.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# do_something if str.match(/regex/)
|
|
# while regex.match('str')
|
|
# do_something
|
|
# end
|
|
#
|
|
# # good
|
|
# method(str =~ /regex/)
|
|
# return value unless regex =~ 'str'
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#20
|
|
class RuboCop::Cop::Performance::RedundantMatch < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#30
|
|
def match_call?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#39
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#35
|
|
def only_truthiness_matters?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#51
|
|
def autocorrect(corrector, node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#57
|
|
def autocorrectable?(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#86
|
|
def call_like?(arg); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#63
|
|
def replacement(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#73
|
|
def requires_parentheses?(arg); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#80
|
|
def requires_parentheses_for_call_like?(arg); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#26
|
|
RuboCop::Cop::Performance::RedundantMatch::HIGHER_PRECEDENCE_OPERATOR_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#23
|
|
RuboCop::Cop::Performance::RedundantMatch::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_match.rb#24
|
|
RuboCop::Cop::Performance::RedundantMatch::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where `Hash#merge!` can be replaced by `Hash#[]=`.
|
|
# You can set the maximum number of key-value pairs to consider
|
|
# an offense with `MaxKeyValuePairs`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# hash.merge!(a: 1)
|
|
# hash.merge!({'key' => 'value'})
|
|
#
|
|
# # good
|
|
# hash[:a] = 1
|
|
# hash['key'] = 'value'
|
|
# @example MaxKeyValuePairs: 2 (default)
|
|
# # bad
|
|
# hash.merge!(a: 1, b: 2)
|
|
#
|
|
# # good
|
|
# hash[:a] = 1
|
|
# hash[:b] = 2
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#30
|
|
class RuboCop::Cop::Performance::RedundantMerge < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::Alignment
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#48
|
|
def modifier_flow_control?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#52
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#44
|
|
def redundant_merge_candidate(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#106
|
|
def correct_multiple_elements(corrector, node, parent, new_source); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#118
|
|
def correct_single_element(corrector, node, new_source); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#79
|
|
def each_redundant_merge(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#98
|
|
def kwsplat_used?(pairs); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#146
|
|
def leading_spaces(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#150
|
|
def max_key_value_pairs; end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#71
|
|
def message(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#87
|
|
def non_redundant_merge?(node, receiver, pairs); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#94
|
|
def non_redundant_pairs?(receiver, pairs); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#102
|
|
def non_redundant_value_used?(receiver, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#132
|
|
def rewrite_with_modifier(node, parent, new_source); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#122
|
|
def to_assignments(receiver, pairs); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#34
|
|
RuboCop::Cop::Performance::RedundantMerge::AREF_ASGN = T.let(T.unsafe(nil), String)
|
|
|
|
# A utility class for checking the use of values within an
|
|
# `each_with_object` call.
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#156
|
|
class RuboCop::Cop::Performance::RedundantMerge::EachWithObjectInspector
|
|
extend ::RuboCop::AST::NodePattern::Macros
|
|
|
|
# @return [EachWithObjectInspector] a new instance of EachWithObjectInspector
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#159
|
|
def initialize(node, receiver); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#190
|
|
def each_with_object_node(param0 = T.unsafe(nil)); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#164
|
|
def value_used?; end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#174
|
|
def eligible_receiver?; end
|
|
|
|
# Returns the value of attribute node.
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#172
|
|
def node; end
|
|
|
|
# Returns the value of attribute receiver.
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#172
|
|
def receiver; end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#178
|
|
def second_argument; end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#185
|
|
def unwind(receiver); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#35
|
|
RuboCop::Cop::Performance::RedundantMerge::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#36
|
|
RuboCop::Cop::Performance::RedundantMerge::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_merge.rb#38
|
|
RuboCop::Cop::Performance::RedundantMerge::WITH_MODIFIER_CORRECTION = T.let(T.unsafe(nil), String)
|
|
|
|
# Identifies places where `sort { |a, b| a <=> b }` can be replaced with `sort`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# array.sort { |a, b| a <=> b }
|
|
#
|
|
# # good
|
|
# array.sort
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_sort_block.rb#15
|
|
class RuboCop::Cop::Performance::RedundantSortBlock < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
include ::RuboCop::Cop::SortBlock
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_sort_block.rb#21
|
|
def on_block(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_sort_block.rb#29
|
|
def on_numblock(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_sort_block.rb#40
|
|
def register_offense(send, node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_sort_block.rb#19
|
|
RuboCop::Cop::Performance::RedundantSortBlock::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# Identifies places where `split` argument can be replaced from
|
|
# a deterministic regexp to a string.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# 'a,b,c'.split(/,/)
|
|
#
|
|
# # good
|
|
# 'a,b,c'.split(',')
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#15
|
|
class RuboCop::Cop::Performance::RedundantSplitRegexpArgument < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#27
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#27
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#23
|
|
def split_call_with_regexp?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#42
|
|
def determinist_regexp?(regexp_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#46
|
|
def replacement(regexp_node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#20
|
|
RuboCop::Cop::Performance::RedundantSplitRegexpArgument::DETERMINISTIC_REGEX = T.let(T.unsafe(nil), Regexp)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#18
|
|
RuboCop::Cop::Performance::RedundantSplitRegexpArgument::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#19
|
|
RuboCop::Cop::Performance::RedundantSplitRegexpArgument::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_split_regexp_argument.rb#21
|
|
RuboCop::Cop::Performance::RedundantSplitRegexpArgument::STR_SPECIAL_CHARS = T.let(T.unsafe(nil), Array)
|
|
|
|
# Checks for redundant `String#chars`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# str.chars[0..2]
|
|
# str.chars.slice(0..2)
|
|
# str.chars.last
|
|
#
|
|
# # good
|
|
# str[0..2].chars
|
|
#
|
|
# # bad
|
|
# str.chars.first
|
|
# str.chars.first(2)
|
|
#
|
|
# # good
|
|
# str[0]
|
|
# str[0...2].chars
|
|
# str[-1]
|
|
#
|
|
# # bad
|
|
# str.chars.take(2)
|
|
# str.chars.length
|
|
# str.chars.size
|
|
# str.chars.empty?
|
|
#
|
|
# # good
|
|
# str[0...2].chars
|
|
# str.length
|
|
# str.size
|
|
# str.empty?
|
|
#
|
|
# # For example, if the receiver is an empty string, it will be incompatible.
|
|
# # If a negative value is specified for the receiver, `nil` is returned.
|
|
# str.chars.last(2) # Incompatible with `str[-2..-1].chars`.
|
|
# str.chars.drop(2) # Incompatible with `str[2..-1].chars`.
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#43
|
|
class RuboCop::Cop::Performance::RedundantStringChars < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#54
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#50
|
|
def redundant_chars_call?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#112
|
|
def build_bad_method(method, args); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#125
|
|
def build_call_args(call_args_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#85
|
|
def build_good_method(method, args); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#100
|
|
def build_good_method_for_brackets_or_first_method(method, args); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#79
|
|
def build_message(method, args); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#75
|
|
def correction_range(receiver, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#71
|
|
def offense_range(receiver, node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#47
|
|
RuboCop::Cop::Performance::RedundantStringChars::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/redundant_string_chars.rb#48
|
|
RuboCop::Cop::Performance::RedundantStringChars::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# In Ruby 2.4, `String#match?`, `Regexp#match?`, and `Symbol#match?`
|
|
# have been added. The methods are faster than `match`.
|
|
# Because the methods avoid creating a `MatchData` object or saving
|
|
# backref.
|
|
# So, when `MatchData` is not used, use `match?` instead of `match`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# def foo
|
|
# if x =~ /re/
|
|
# do_something
|
|
# end
|
|
# end
|
|
#
|
|
# # bad
|
|
# def foo
|
|
# if x !~ /re/
|
|
# do_something
|
|
# end
|
|
# end
|
|
#
|
|
# # bad
|
|
# def foo
|
|
# if x.match(/re/)
|
|
# do_something
|
|
# end
|
|
# end
|
|
#
|
|
# # bad
|
|
# def foo
|
|
# if /re/ === x
|
|
# do_something
|
|
# end
|
|
# end
|
|
#
|
|
# # good
|
|
# def foo
|
|
# if x.match?(/re/)
|
|
# do_something
|
|
# end
|
|
# end
|
|
#
|
|
# # good
|
|
# def foo
|
|
# if !x.match?(/re/)
|
|
# do_something
|
|
# end
|
|
# end
|
|
#
|
|
# # good
|
|
# def foo
|
|
# if x =~ /re/
|
|
# do_something(Regexp.last_match)
|
|
# end
|
|
# end
|
|
#
|
|
# # good
|
|
# def foo
|
|
# if x.match(/re/)
|
|
# do_something($~)
|
|
# end
|
|
# end
|
|
#
|
|
# # good
|
|
# def foo
|
|
# if /re/ === x
|
|
# do_something($~)
|
|
# end
|
|
# end
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#75
|
|
class RuboCop::Cop::Performance::RegexpMatch < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#125
|
|
def last_matches(param0); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#86
|
|
def match_method?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#122
|
|
def match_node?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#97
|
|
def match_operator?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#101
|
|
def match_threequals?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#93
|
|
def match_with_int_arg_method?(param0 = T.unsafe(nil)); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#105
|
|
def match_with_lvasgn?(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#142
|
|
def on_case(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#138
|
|
def on_if(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#123
|
|
def search_match_nodes(param0); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#165
|
|
def autocorrect(corrector, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#154
|
|
def check_condition(cond); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#250
|
|
def correct_operator(corrector, recv, arg, oper = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#275
|
|
def correction_range(recv, arg); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#221
|
|
def find_last_match(body, range, scope_root); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#181
|
|
def last_match_used?(match_node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#246
|
|
def match_gvar?(sym); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#177
|
|
def message(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#217
|
|
def modifier_form?(match_node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#203
|
|
def next_match_pos(body, match_node_pos, scope_root); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#190
|
|
def range_to_search_for_last_matches(match_node, body, scope_root); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#259
|
|
def replace_with_match_predicate_method(corrector, recv, arg, op_range); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#228
|
|
def scope_body(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#240
|
|
def scope_root(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#270
|
|
def swap_receiver_and_arg(corrector, recv, arg); end
|
|
|
|
class << self
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#134
|
|
def autocorrect_incompatible_with; end
|
|
end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#112
|
|
RuboCop::Cop::Performance::RegexpMatch::MATCH_NODE_PATTERN = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#84
|
|
RuboCop::Cop::Performance::RegexpMatch::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# Constants are included in this list because it is unlikely that
|
|
# someone will store `nil` as a constant and then use it for comparison
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/regexp_match.rb#83
|
|
RuboCop::Cop::Performance::RegexpMatch::TYPES_IMPLEMENTING_MATCH = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies usages of `reverse.each` and change them to use `reverse_each` instead.
|
|
#
|
|
# If the return value is used, it will not be detected because the result will be different.
|
|
#
|
|
# [source,ruby]
|
|
# ----
|
|
# [1, 2, 3].reverse.each {} #=> [3, 2, 1]
|
|
# [1, 2, 3].reverse_each {} #=> [1, 2, 3]
|
|
# ----
|
|
#
|
|
# @example
|
|
# # bad
|
|
# items.reverse.each
|
|
#
|
|
# # good
|
|
# items.reverse_each
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_each.rb#22
|
|
class RuboCop::Cop::Performance::ReverseEach < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_each.rb#33
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_each.rb#33
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_each.rb#29
|
|
def reverse_each?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_each.rb#54
|
|
def offense_range(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_each.rb#48
|
|
def use_return_value?(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_each.rb#26
|
|
RuboCop::Cop::Performance::ReverseEach::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_each.rb#27
|
|
RuboCop::Cop::Performance::ReverseEach::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where `reverse.first(n)` and `reverse.first`
|
|
# can be replaced by `last(n).reverse` and `last`.
|
|
#
|
|
# @example
|
|
#
|
|
# # bad
|
|
# array.reverse.first(5)
|
|
# array.reverse.first
|
|
#
|
|
# # good
|
|
# array.last(5).reverse
|
|
# array.last
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_first.rb#19
|
|
class RuboCop::Cop::Performance::ReverseFirst < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_first.rb#30
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_first.rb#30
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_first.rb#26
|
|
def reverse_first_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_first.rb#56
|
|
def build_good_method(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_first.rb#50
|
|
def build_message(node, range); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_first.rb#46
|
|
def correction_range(receiver, node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_first.rb#23
|
|
RuboCop::Cop::Performance::ReverseFirst::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/reverse_first.rb#24
|
|
RuboCop::Cop::Performance::ReverseFirst::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# In Ruby 2.7, `Enumerable#filter_map` has been added.
|
|
#
|
|
# This cop identifies places where `select.map` can be replaced by `filter_map`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# ary.select(&:foo).map(&:bar)
|
|
# ary.filter(&:foo).map(&:bar)
|
|
#
|
|
# # good
|
|
# ary.filter_map { |o| o.bar if o.foo }
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/select_map.rb#18
|
|
class RuboCop::Cop::Performance::SelectMap < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/select_map.rb#27
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/select_map.rb#27
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/select_map.rb#41
|
|
def map_method_candidate(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/select_map.rb#51
|
|
def offense_range(node, map_method); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/select_map.rb#24
|
|
RuboCop::Cop::Performance::SelectMap::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/select_map.rb#25
|
|
RuboCop::Cop::Performance::SelectMap::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies usages of `count` on an `Array` and `Hash` and change them to `size`.
|
|
#
|
|
# TODO: Add advanced detection of variables that could
|
|
# have been assigned to an array or a hash.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# [1, 2, 3].count
|
|
# (1..3).to_a.count
|
|
# Array[*1..3].count
|
|
# Array(1..3).count
|
|
#
|
|
# # bad
|
|
# {a: 1, b: 2, c: 3}.count
|
|
# [[:foo, :bar], [1, 2]].to_h.count
|
|
# Hash[*('a'..'z')].count
|
|
# Hash(key: :value).count
|
|
#
|
|
# # good
|
|
# [1, 2, 3].size
|
|
# (1..3).to_a.size
|
|
# Array[*1..3].size
|
|
# Array(1..3).size
|
|
#
|
|
# # good
|
|
# {a: 1, b: 2, c: 3}.size
|
|
# [[:foo, :bar], [1, 2]].to_h.size
|
|
# Hash[*('a'..'z')].size
|
|
# Hash(key: :value).size
|
|
#
|
|
# # good
|
|
# [1, 2, 3].count { |e| e > 2 }
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/size.rb#37
|
|
class RuboCop::Cop::Performance::Size < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/size.rb#43
|
|
def array?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/size.rb#61
|
|
def count?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/size.rb#52
|
|
def hash?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/size.rb#65
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/size.rb#65
|
|
def on_send(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/size.rb#40
|
|
RuboCop::Cop::Performance::Size::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/size.rb#41
|
|
RuboCop::Cop::Performance::Size::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where `sort { |a, b| b <=> a }`
|
|
# can be replaced by a faster `sort.reverse`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# array.sort { |a, b| b <=> a }
|
|
#
|
|
# # good
|
|
# array.sort.reverse
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sort_reverse.rb#16
|
|
class RuboCop::Cop::Performance::SortReverse < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
include ::RuboCop::Cop::SortBlock
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sort_reverse.rb#22
|
|
def on_block(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sort_reverse.rb#30
|
|
def on_numblock(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sort_reverse.rb#42
|
|
def register_offense(send, node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sort_reverse.rb#20
|
|
RuboCop::Cop::Performance::SortReverse::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# Identifies places where `gsub(/a+/, 'a')` and `gsub!(/a+/, 'a')`
|
|
# can be replaced by `squeeze('a')` and `squeeze!('a')`.
|
|
#
|
|
# The `squeeze('a')` method is faster than `gsub(/a+/, 'a')`.
|
|
#
|
|
# @example
|
|
#
|
|
# # bad
|
|
# str.gsub(/a+/, 'a')
|
|
# str.gsub!(/a+/, 'a')
|
|
#
|
|
# # good
|
|
# str.squeeze('a')
|
|
# str.squeeze!('a')
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/squeeze.rb#21
|
|
class RuboCop::Cop::Performance::Squeeze < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/squeeze.rb#39
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/squeeze.rb#39
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/squeeze.rb#29
|
|
def squeeze_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/squeeze.rb#61
|
|
def repeating_literal?(regex_str); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/squeeze.rb#24
|
|
RuboCop::Cop::Performance::Squeeze::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/squeeze.rb#27
|
|
RuboCop::Cop::Performance::Squeeze::PREFERRED_METHODS = T.let(T.unsafe(nil), Hash)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/squeeze.rb#25
|
|
RuboCop::Cop::Performance::Squeeze::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies unnecessary use of a regex where `String#start_with?` would suffice.
|
|
#
|
|
# This cop has `SafeMultiline` configuration option that `true` by default because
|
|
# `^start` is unsafe as it will behave incompatible with `start_with?`
|
|
# for receiver is multiline string.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# 'abc'.match?(/\Aab/)
|
|
# /\Aab/.match?('abc')
|
|
# 'abc' =~ /\Aab/
|
|
# /\Aab/ =~ 'abc'
|
|
# 'abc'.match(/\Aab/)
|
|
# /\Aab/.match('abc')
|
|
#
|
|
# # good
|
|
# 'abc'.start_with?('ab')
|
|
# @example SafeMultiline: true (default)
|
|
#
|
|
# # good
|
|
# 'abc'.match?(/^ab/)
|
|
# /^ab/.match?('abc')
|
|
# 'abc' =~ /^ab/
|
|
# /^ab/ =~ 'abc'
|
|
# 'abc'.match(/^ab/)
|
|
# /^ab/.match('abc')
|
|
# @example SafeMultiline: false
|
|
#
|
|
# # bad
|
|
# 'abc'.match?(/^ab/)
|
|
# /^ab/.match?('abc')
|
|
# 'abc' =~ /^ab/
|
|
# /^ab/ =~ 'abc'
|
|
# 'abc'.match(/^ab/)
|
|
# /^ab/.match('abc')
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/start_with.rb#49
|
|
class RuboCop::Cop::Performance::StartWith < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RegexpMetacharacter
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/start_with.rb#62
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/start_with.rb#62
|
|
def on_match_with_lvasgn(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/start_with.rb#62
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/start_with.rb#56
|
|
def redundant_regex?(param0 = T.unsafe(nil)); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/start_with.rb#53
|
|
RuboCop::Cop::Performance::StartWith::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/start_with.rb#54
|
|
RuboCop::Cop::Performance::StartWith::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where string identifier argument can be replaced
|
|
# by symbol identifier argument.
|
|
# It prevents the redundancy of the internal string-to-symbol conversion.
|
|
#
|
|
# This cop targets methods that take identifier (e.g. method name) argument
|
|
# and the following examples are parts of it.
|
|
#
|
|
# @example
|
|
#
|
|
# # bad
|
|
# send('do_something')
|
|
# attr_accessor 'do_something'
|
|
# instance_variable_get('@ivar')
|
|
# respond_to?("string_#{interpolation}")
|
|
#
|
|
# # good
|
|
# send(:do_something)
|
|
# attr_accessor :do_something
|
|
# instance_variable_get(:@ivar)
|
|
# respond_to?(:"string_#{interpolation}")
|
|
#
|
|
# # good - these methods don't support namespaced symbols
|
|
# const_get("#{module_path}::Base")
|
|
# const_source_location("#{module_path}::Base")
|
|
# const_defined?("#{module_path}::Base")
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#33
|
|
class RuboCop::Cop::Performance::StringIdentifierArgument < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#64
|
|
def on_send(node); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#105
|
|
def argument_replacement(node, value); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#95
|
|
def register_offense(argument, argument_value); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#89
|
|
def string_argument_compatible?(argument, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#77
|
|
def string_arguments(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#38
|
|
RuboCop::Cop::Performance::StringIdentifierArgument::COMMAND_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#43
|
|
RuboCop::Cop::Performance::StringIdentifierArgument::INTERPOLATION_IGNORE_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#36
|
|
RuboCop::Cop::Performance::StringIdentifierArgument::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#46
|
|
RuboCop::Cop::Performance::StringIdentifierArgument::MULTIPLE_ARGUMENTS_METHODS = T.let(T.unsafe(nil), Array)
|
|
|
|
# NOTE: `attr` method is not included in this list as it can cause false positives in Nokogiri API.
|
|
# And `attr` may not be used because `Style/Attr` registers an offense.
|
|
# https://github.com/rubocop/rubocop-performance/issues/278
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#54
|
|
RuboCop::Cop::Performance::StringIdentifierArgument::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_identifier_argument.rb#45
|
|
RuboCop::Cop::Performance::StringIdentifierArgument::TWO_ARGUMENTS_METHOD = T.let(T.unsafe(nil), Symbol)
|
|
|
|
# Identifies unnecessary use of a regex where `String#include?` would suffice.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# str.match?(/ab/)
|
|
# /ab/.match?(str)
|
|
# str =~ /ab/
|
|
# /ab/ =~ str
|
|
# str.match(/ab/)
|
|
# /ab/.match(str)
|
|
# /ab/ === str
|
|
#
|
|
# # good
|
|
# str.include?('ab')
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_include.rb#23
|
|
class RuboCop::Cop::Performance::StringInclude < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_include.rb#36
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_include.rb#36
|
|
def on_match_with_lvasgn(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_include.rb#36
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_include.rb#29
|
|
def redundant_regex?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_include.rb#58
|
|
def literal?(regex_str); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_include.rb#26
|
|
RuboCop::Cop::Performance::StringInclude::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_include.rb#27
|
|
RuboCop::Cop::Performance::StringInclude::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where `gsub` can be replaced by `tr` or `delete`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# 'abc'.gsub('b', 'd')
|
|
# 'abc'.gsub('a', '')
|
|
# 'abc'.gsub(/a/, 'd')
|
|
# 'abc'.gsub!('a', 'd')
|
|
#
|
|
# # good
|
|
# 'abc'.gsub(/.*/, 'a')
|
|
# 'abc'.gsub(/a+/, 'd')
|
|
# 'abc'.tr('b', 'd')
|
|
# 'a b c'.delete(' ')
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#20
|
|
class RuboCop::Cop::Performance::StringReplacement < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#37
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#37
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#31
|
|
def string_replacement?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#84
|
|
def accept_first_param?(first_param); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#79
|
|
def accept_second_param?(second_param); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#60
|
|
def autocorrect(corrector, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#100
|
|
def first_source(first_param); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#143
|
|
def message(node, first_source, second_source); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#149
|
|
def method_suffix(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#49
|
|
def offense(node, first_param, second_param); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#129
|
|
def range(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#153
|
|
def remove_second_param(corrector, node, first_param); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#70
|
|
def replace_method(corrector, node, first_source, second_source, first_param); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#133
|
|
def replacement_method(node, first_source, second_source); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#118
|
|
def source_from_regex_constructor(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#111
|
|
def source_from_regex_literal(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#29
|
|
RuboCop::Cop::Performance::StringReplacement::BANG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#27
|
|
RuboCop::Cop::Performance::StringReplacement::DELETE = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#26
|
|
RuboCop::Cop::Performance::StringReplacement::DETERMINISTIC_REGEX = T.let(T.unsafe(nil), Regexp)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#24
|
|
RuboCop::Cop::Performance::StringReplacement::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#25
|
|
RuboCop::Cop::Performance::StringReplacement::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/string_replacement.rb#28
|
|
RuboCop::Cop::Performance::StringReplacement::TR = T.let(T.unsafe(nil), String)
|
|
|
|
# Identifies places where custom code finding the sum of elements
|
|
# in some Enumerable object can be replaced by `Enumerable#sum` method.
|
|
#
|
|
# @example OnlySumOrWithInitialValue: false (default)
|
|
# # bad
|
|
# [1, 2, 3].inject(:+) # Autocorrections for cases without initial value are unsafe
|
|
# [1, 2, 3].inject(&:+) # and will only be performed when using the `-A` option.
|
|
# [1, 2, 3].reduce { |acc, elem| acc + elem } # They can be prohibited completely using `SafeAutoCorrect: true`.
|
|
# [1, 2, 3].reduce(10, :+)
|
|
# [1, 2, 3].map { |elem| elem ** 2 }.sum
|
|
# [1, 2, 3].collect(&:count).sum(10)
|
|
#
|
|
# # good
|
|
# [1, 2, 3].sum
|
|
# [1, 2, 3].sum(10)
|
|
# [1, 2, 3].sum { |elem| elem ** 2 }
|
|
# [1, 2, 3].sum(10, &:count)
|
|
# @example OnlySumOrWithInitialValue: true
|
|
# # bad
|
|
# [1, 2, 3].reduce(10, :+)
|
|
# [1, 2, 3].map { |elem| elem ** 2 }.sum
|
|
# [1, 2, 3].collect(&:count).sum(10)
|
|
#
|
|
# # good
|
|
# [1, 2, 3].sum(10)
|
|
# [1, 2, 3].sum { |elem| elem ** 2 }
|
|
# [1, 2, 3].sum(10, &:count)
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#70
|
|
class RuboCop::Cop::Performance::Sum < ::RuboCop::Cop::Base
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#102
|
|
def acc_plus_elem?(param0 = T.unsafe(nil), param1, param2); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#102
|
|
def elem_plus_acc?(param0 = T.unsafe(nil), param1, param2); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#115
|
|
def on_block(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#107
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#107
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#82
|
|
def sum_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#86
|
|
def sum_map_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#95
|
|
def sum_with_block_candidate?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#160
|
|
def array_literal?(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#165
|
|
def autocorrect(corrector, init, range); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#173
|
|
def autocorrect_sum_map(corrector, sum, map, init); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#250
|
|
def build_block_bad_method(method, init, var_acc, var_elem, body); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#217
|
|
def build_block_message(send, init, var_acc, var_elem, body); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#223
|
|
def build_good_method(init, block_pass = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#236
|
|
def build_method_bad_method(init, method, operation); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#198
|
|
def build_method_message(node, method, init, operation); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#209
|
|
def build_sum_map_message(send_node, init); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#155
|
|
def empty_array_literal?(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#130
|
|
def handle_sum_candidate(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#143
|
|
def handle_sum_map_candidate(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#261
|
|
def method_call_with_args_range(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#194
|
|
def sum_block_range(send, node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#190
|
|
def sum_map_range(map, sum); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#186
|
|
def sum_method_range(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#77
|
|
RuboCop::Cop::Performance::Sum::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#78
|
|
RuboCop::Cop::Performance::Sum::MSG_IF_NO_INIT_VALUE = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/sum.rb#80
|
|
RuboCop::Cop::Performance::Sum::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Checks for .times.map calls.
|
|
# In most cases such calls can be replaced
|
|
# with an explicit array creation.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# 9.times.map do |i|
|
|
# i.to_s
|
|
# end
|
|
#
|
|
# # good
|
|
# Array.new(9) do |i|
|
|
# i.to_s
|
|
# end
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#32
|
|
class RuboCop::Cop::Performance::TimesMap < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#44
|
|
def on_block(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#39
|
|
def on_csend(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#44
|
|
def on_numblock(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#39
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#79
|
|
def times_map_call(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#51
|
|
def check(node); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#63
|
|
def handleable_receiver?(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#70
|
|
def message(map_or_collect, count); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#35
|
|
RuboCop::Cop::Performance::TimesMap::MESSAGE = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#36
|
|
RuboCop::Cop::Performance::TimesMap::MESSAGE_ONLY_IF = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/times_map.rb#37
|
|
RuboCop::Cop::Performance::TimesMap::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# In Ruby 2.3 or later, use unary plus operator to unfreeze a string
|
|
# literal instead of `String#dup` and `String.new`.
|
|
# Unary plus operator is faster than `String#dup`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# ''.dup # when Ruby 3.2 or lower
|
|
# "something".dup # when Ruby 3.2 or lower
|
|
# String.new
|
|
# String.new('')
|
|
# String.new('something')
|
|
#
|
|
# # good
|
|
# +'something'
|
|
# +''
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/unfreeze_string.rb#27
|
|
class RuboCop::Cop::Performance::UnfreezeString < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
extend ::RuboCop::Cop::TargetRubyVersion
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/unfreeze_string.rb#36
|
|
def dup_string?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/unfreeze_string.rb#47
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/unfreeze_string.rb#40
|
|
def string_new?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/unfreeze_string.rb#60
|
|
def string_value(node); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/unfreeze_string.rb#33
|
|
RuboCop::Cop::Performance::UnfreezeString::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/unfreeze_string.rb#34
|
|
RuboCop::Cop::Performance::UnfreezeString::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Identifies places where `URI::Parser.new` can be replaced by `URI::DEFAULT_PARSER`.
|
|
#
|
|
# @example
|
|
# # bad
|
|
# URI::Parser.new
|
|
#
|
|
# # good
|
|
# URI::DEFAULT_PARSER
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/uri_default_parser.rb#15
|
|
class RuboCop::Cop::Performance::UriDefaultParser < ::RuboCop::Cop::Base
|
|
extend ::RuboCop::Cop::AutoCorrector
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/uri_default_parser.rb#27
|
|
def on_send(node); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/uri_default_parser.rb#21
|
|
def uri_parser_new?(param0 = T.unsafe(nil)); end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/uri_default_parser.rb#18
|
|
RuboCop::Cop::Performance::UriDefaultParser::MSG = T.let(T.unsafe(nil), String)
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/performance/uri_default_parser.rb#19
|
|
RuboCop::Cop::Performance::UriDefaultParser::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array)
|
|
|
|
# Common functionality for handling regexp metacharacters.
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#6
|
|
module RuboCop::Cop::RegexpMetacharacter
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#63
|
|
def drop_end_metacharacter(regexp_string); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#55
|
|
def drop_start_metacharacter(regexp_string); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#15
|
|
def literal_at_end?(regexp); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#41
|
|
def literal_at_end_with_backslash_z?(regex_str); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#48
|
|
def literal_at_end_with_dollar?(regex_str); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#9
|
|
def literal_at_start?(regexp); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#21
|
|
def literal_at_start_with_backslash_a?(regex_str); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#31
|
|
def literal_at_start_with_caret?(regex_str); end
|
|
|
|
# @return [Boolean]
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/regexp_metacharacter.rb#71
|
|
def safe_multiline?; end
|
|
end
|
|
|
|
# Common functionality for cops checking `Enumerable#sort` blocks.
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/sort_block.rb#6
|
|
module RuboCop::Cop::SortBlock
|
|
include ::RuboCop::Cop::RangeHelp
|
|
extend ::RuboCop::AST::NodePattern::Macros
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/sort_block.rb#24
|
|
def replaceable_body?(param0 = T.unsafe(nil), param1, param2); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/sort_block.rb#10
|
|
def sort_with_block?(param0 = T.unsafe(nil)); end
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/sort_block.rb#17
|
|
def sort_with_numblock?(param0 = T.unsafe(nil)); end
|
|
|
|
private
|
|
|
|
# source://rubocop-performance//lib/rubocop/cop/mixin/sort_block.rb#30
|
|
def sort_range(send, node); end
|
|
end
|
|
|
|
# RuboCop Performance project namespace
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/performance.rb#5
|
|
module RuboCop::Performance; end
|
|
|
|
# source://rubocop-performance//lib/rubocop/performance.rb#8
|
|
RuboCop::Performance::CONFIG = T.let(T.unsafe(nil), Hash)
|
|
|
|
# source://rubocop-performance//lib/rubocop/performance.rb#7
|
|
RuboCop::Performance::CONFIG_DEFAULT = T.let(T.unsafe(nil), Pathname)
|
|
|
|
# Because RuboCop doesn't yet support plugins, we have to monkey patch in a
|
|
# bit of our configuration.
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/performance/inject.rb#7
|
|
module RuboCop::Performance::Inject
|
|
class << self
|
|
# source://rubocop-performance//lib/rubocop/performance/inject.rb#8
|
|
def defaults!; end
|
|
end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/performance.rb#6
|
|
RuboCop::Performance::PROJECT_ROOT = T.let(T.unsafe(nil), Pathname)
|
|
|
|
# This module holds the RuboCop Performance version information.
|
|
#
|
|
# source://rubocop-performance//lib/rubocop/performance/version.rb#6
|
|
module RuboCop::Performance::Version
|
|
class << self
|
|
# source://rubocop-performance//lib/rubocop/performance/version.rb#9
|
|
def document_version; end
|
|
end
|
|
end
|
|
|
|
# source://rubocop-performance//lib/rubocop/performance/version.rb#7
|
|
RuboCop::Performance::Version::STRING = T.let(T.unsafe(nil), String)
|