Skip to content
Snippets Groups Projects
Commit 3e001d29 authored by Stan Hu's avatar Stan Hu
Browse files

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
parent 0d538e44
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -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:
Loading
Loading
Loading
Loading
@@ -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)
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
 
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment