Class: RuboCop::Cop::HGOOSTDD::NoTimeInDomain
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::HGOOSTDD::NoTimeInDomain
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/hgoostdd/no_time_in_domain.rb
Overview
Domain code must read time via an injected clock: collaborator,
not via Time.now / Time.current. See HGOOSTDD §6.
Autocorrect rewrites the call to @clock.now. This is marked
unsafe (SafeAutoCorrect: false in .rubocop.yml) because it
assumes the surrounding object has a @clock ivar wired by an
injected collaborator. After autocorrect, the developer must
ensure the constructor accepts clock: and assigns @clock.
Constant Summary collapse
- MSG =
"Inject a `clock:` collaborator; do not call `%{call}` in domain code (§6)."- RESTRICT_ON_SEND =
i[now current].freeze
Instance Method Summary collapse
Instance Method Details
#on_send(node) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/rubocop/cop/hgoostdd/no_time_in_domain.rb', line 23 def on_send(node) return unless time_send?(node) add_offense(node, message: format(MSG, call: node.source)) do |corrector| corrector.replace(node, "@clock.now") end end |