Class: RuboCop::Cop::Vicenzo::Style::JsonParseSymbolizeNames
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Vicenzo::Style::JsonParseSymbolizeNames
- Defined in:
- lib/rubocop/cop/vicenzo/style/json_parse_symbolize_names.rb
Overview
Enforces passing symbolize_names: true to JSON.parse so the
resulting hash uses symbol keys instead of strings.
An explicit symbolize_names: false is treated as a deliberate
opt-out and is allowed. Calls whose options cannot be analyzed
statically (a variable, splat, or double splat) are ignored to
avoid false positives.
Constant Summary collapse
- MSG =
'Pass `symbolize_names: true` to `JSON.parse` so keys are symbols. ' \ 'Only when string keys are truly required, set `symbolize_names: false` explicitly.'
- RESTRICT_ON_SEND =
[:parse].freeze
Instance Method Summary collapse
- #json_parse?(node) ⇒ Object
- #on_send(node) ⇒ Object (also: #on_csend)
Instance Method Details
#json_parse?(node) ⇒ Object
34 35 36 |
# File 'lib/rubocop/cop/vicenzo/style/json_parse_symbolize_names.rb', line 34 def_node_matcher :json_parse?, <<~PATTERN (send (const {nil? cbase} :JSON) :parse ...) PATTERN |
#on_send(node) ⇒ Object Also known as: on_csend
38 39 40 41 42 |
# File 'lib/rubocop/cop/vicenzo/style/json_parse_symbolize_names.rb', line 38 def on_send(node) return unless json_parse?(node) add_offense(node) if missing_symbolize_names?(node) end |