Enable Rubocop Performance/InefficientHashSearch

When used with a Hash, `.keys.include?` is bad because:

1. It performs a O(n) search instead of the efficient `.has_key?`
2. It clones all keys into separate array.

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/64975
This commit is contained in:
Stan Hu 2019-07-24 11:11:18 -07:00
parent 0d538e44af
commit 3e001d29cc
5 changed files with 4 additions and 15 deletions

View file

@ -262,17 +262,6 @@ Naming/HeredocDelimiterNaming:
Naming/RescuedExceptionsVariableName:
Enabled: false
# Offense count: 6
# Cop supports --auto-correct.
Performance/InefficientHashSearch:
Exclude:
- 'app/controllers/concerns/sessionless_authentication.rb'
- 'app/models/note.rb'
- 'app/models/user_preference.rb'
- 'ee/app/models/ee/project.rb'
- 'lib/gitlab/import_export/members_mapper.rb'
- 'qa/spec/spec_helper.rb'
# Offense count: 3
# Cop supports --auto-correct.
Performance/ReverseEach:

View file

@ -13,7 +13,7 @@ module SessionlessAuthentication
end
def sessionless_user?
current_user && !session.keys.include?('warden.user.user.key')
current_user && !session.key?('warden.user.user.key')
end
def sessionless_sign_in(user)

View file

@ -292,7 +292,7 @@ class Note < ApplicationRecord
end
def special_role=(role)
raise "Role is undefined, #{role} not found in #{SpecialRole.values}" unless SpecialRole.values.include?(role)
raise "Role is undefined, #{role} not found in #{SpecialRole.values}" unless SpecialRole.value?(role)
@special_role = role
end

View file

@ -26,7 +26,7 @@ class UserPreference < ApplicationRecord
def set_notes_filter(filter_id, issuable)
# No need to update the column if the value is already set.
if filter_id && NOTES_FILTERS.values.include?(filter_id)
if filter_id && NOTES_FILTERS.value?(filter_id)
field = notes_filter_field_for(issuable)
self[field] = filter_id

View file

@ -46,7 +46,7 @@ RSpec.configure do |config|
if ENV['CI']
config.around do |example|
retry_times = example.metadata.keys.include?(:quarantine) ? 1 : 2
retry_times = example.metadata.key?(:quarantine) ? 1 : 2
example.run_with_retry retry: retry_times
end
end