Class: RuboCop::Cop::HGOOSTDD::NoSecureRandomInDomain
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::HGOOSTDD::NoSecureRandomInDomain
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/hgoostdd/no_secure_random_in_domain.rb
Overview
Domain code must generate IDs via an injected id_gen: collaborator,
not via the SecureRandom constant. See HGOOSTDD §6.
Autocorrect rewrites SecureRandom.<method>(args) to
@id_gen.<method>(args), preserving the method name and args.
Marked unsafe — assumes @id_gen exists and exposes a matching
method (e.g. IdGen#uuid for SecureRandom.uuid).
Constant Summary collapse
- MSG =
"Inject an `id_gen:` collaborator; do not call `%{call}` in domain code (§6)."
Instance Method Summary collapse
Instance Method Details
#on_send(node) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/rubocop/cop/hgoostdd/no_secure_random_in_domain.rb', line 20 def on_send(node) return unless (method_name = secure_random_send?(node)) add_offense(node, message: format(MSG, call: node.source)) do |corrector| args = node.arguments.map(&:source).join(", ") replacement = args.empty? ? "@id_gen.#{method_name}" : "@id_gen.#{method_name}(#{args})" corrector.replace(node, replacement) end end |