rubocop-academia 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f32574804a6987eb17ed0b1e81499907dc28445b474ff974a49b5e6e9507314
4
- data.tar.gz: 532b9bc91f9255446093c3418ffb8e3d746d5c4f0ce691975b3815dca0fb5ae3
3
+ metadata.gz: da776612864f982acb5ec0ed0cebd62b0647f09b4f0f7758f4cddda79ebb663a
4
+ data.tar.gz: 815e55496ace7c2c73e71feff0a21eb56ade7293097cbed6693b02666f038aa8
5
5
  SHA512:
6
- metadata.gz: 92aa5cab37719c8ddd07bccf5058dab93905cbd074792d26cdf067184ab731c7697392a3ed1551e817858f2406da1fc541c76cb8ff8365efa72b04db1f7d9d03
7
- data.tar.gz: e11092ac75b8e4f4790b9ceefee32f066d57efa9ba0192af5fe3900a7db47c8db6d7527d66fd60d81f5a951eee3ad371a5160482d284a99666df7a327aea8b03
6
+ metadata.gz: b1f440fe9e3c15b64f1b15352f24e61ef69e030b9be91eca15abd403547d766f21192bc6165a04a79e5553f86fc2785040f8a69f3642d6e377fa7837dc7fc0b0
7
+ data.tar.gz: '083500052ced92edbc2ca3f25c186f12b00c878a4d1e0eb47cb307c94ba97369ce30875c92b2fb20cb5d87a8104a575b6ccdb696524ef8c1de54a6f36cd9423e'
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Academia
6
+ class YAMLLoad < RuboCop::Cop::Cop
7
+ RESTRICT_ON_SEND = %i[load unsafe_load load_file unsafe_load_file].freeze
8
+ MSG = 'Avoid using %<unsafe_call>s. Use %<safe_call>s instead.'
9
+ UNSAFE_METHODS = {
10
+ 'YAML.load' => 'YAML.safe_load',
11
+ 'Psych.load' => 'Psych.safe_load',
12
+ 'YAML.load_file' => 'YAML.safe_load_file',
13
+ 'Psych.load_file' => 'Psych.safe_load_file',
14
+ 'YAML.unsafe_load' => 'YAML.safe_load',
15
+ 'Psych.unsafe_load' => 'Psych.safe_load',
16
+ 'YAML.unsafe_load_file' => 'YAML.safe_load_file',
17
+ 'Psych.unsafe_load_file' => 'Psych.safe_load_file',
18
+ }.freeze
19
+
20
+ def_node_matcher :unsafe_yaml_load, <<~PATTERN
21
+ (send (const {nil? cbase} ${:YAML :Psych}) ${:load :unsafe_load :load_file :unsafe_load_file} ...)
22
+ PATTERN
23
+
24
+ def on_send(node)
25
+ unsafe_yaml_load(node) do |mojule, unsafe_method|
26
+ unsafe_call = "#{mojule}.#{unsafe_method}"
27
+ add_offense(
28
+ node,
29
+ message: format(
30
+ MSG,
31
+ unsafe_call: unsafe_call,
32
+ safe_call: UNSAFE_METHODS.fetch(unsafe_call),
33
+ ),
34
+ )
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-academia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick White
@@ -18,6 +18,7 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - lib/rubocop-academia.rb
20
20
  - lib/rubocop/cop/academia/on_replica.rb
21
+ - lib/rubocop/cop/academia/yaml_load.rb
21
22
  homepage: https://rubygems.org/gems/rubocop-academia
22
23
  licenses:
23
24
  - MIT