fix: Add custom rubocop rules for email fetch (#8987)

This commit is contained in:
Shivam Mishra
2024-02-24 01:28:02 +05:30
committed by GitHub
parent 1de3ff1a6d
commit fa305d76e8
3 changed files with 46 additions and 0 deletions

View File

@@ -2,6 +2,8 @@ require:
- rubocop-performance
- rubocop-rails
- rubocop-rspec
- ./rubocop/use_from_email.rb
- ./rubocop/custom_cop_location.rb
Layout/LineLength:
Max: 150
@@ -140,6 +142,16 @@ RSpec/MultipleExpectations:
RSpec/MultipleMemoizedHelpers:
Max: 14
# custom rules
UseFromEmail:
Enabled: true
Exclude:
- 'app/models/user.rb'
- 'app/models/contact.rb'
CustomCopLocation:
Enabled: true
AllCops:
NewCops: enable
Exclude:

View File

@@ -0,0 +1,18 @@
require 'rubocop'
# enforce rubocop custom rules to only be added in the `rubocop` directory
class CustomCopLocation < RuboCop::Cop::Base
MSG = 'Custom cops should be added in the `rubocop` directory.'.freeze
def on_send(node)
return unless node.source.include?('require \'rubocop\'')
# convert the full path to relative
full_path = processed_source.file_path
relative_path = Pathname.new(full_path).relative_path_from(Pathname.new(Dir.pwd)).to_s
return if relative_path.start_with?('rubocop')
add_offense(node, message: MSG)
end
end

16
rubocop/use_from_email.rb Normal file
View File

@@ -0,0 +1,16 @@
require 'rubocop'
# Enforces use of from_email for email attribute lookups
class UseFromEmail < RuboCop::Cop::Base
MSG = 'Use `from_email` for email lookups to ensure case insensitivity.'.freeze
def_node_matcher :find_by_email?, <<~PATTERN
(send _ :find_by (hash (pair (sym :email) _)))
PATTERN
def on_send(node)
return unless find_by_email?(node)
add_offense(node, message: MSG)
end
end