Class: RuboCop::Cop::Academia::YAMLLoad

Inherits:
Cop
  • Object
show all
Defined in:
lib/rubocop/cop/academia/yaml_load.rb

Constant Summary collapse

RESTRICT_ON_SEND =
%i[load unsafe_load load_file unsafe_load_file].freeze
MSG =
'Avoid using %<unsafe_call>s. Use %<safe_call>s instead.'
UNSAFE_METHODS =
{
  'YAML.load' => 'YAML.safe_load',
  'Psych.load' => 'Psych.safe_load',
  'YAML.load_file' => 'YAML.safe_load_file',
  'Psych.load_file' => 'Psych.safe_load_file',
  'YAML.unsafe_load' => 'YAML.safe_load',
  'Psych.unsafe_load' => 'Psych.safe_load',
  'YAML.unsafe_load_file' => 'YAML.safe_load_file',
  'Psych.unsafe_load_file' => 'Psych.safe_load_file',
}.freeze

Instance Method Summary collapse

Instance Method Details

#on_send(node) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rubocop/cop/academia/yaml_load.rb', line 24

def on_send(node)
  unsafe_yaml_load(node) do |mojule, unsafe_method|
    unsafe_call = "#{mojule}.#{unsafe_method}"
    add_offense(
      node,
      message: format(
        MSG,
        unsafe_call: unsafe_call,
        safe_call: UNSAFE_METHODS.fetch(unsafe_call),
      ),
    )
  end
end