code_analyzer 0.4.6 → 0.5.2

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
- SHA1:
3
- metadata.gz: 84254a2c93bfef8fd24e54f1830729c22cb24cb9
4
- data.tar.gz: d098c0883a5b139a4147118045f2c6ce3a76e034
2
+ SHA256:
3
+ metadata.gz: 5a68561649e1e345495d4a494530dc7abb9ca256dc5a999d1aa71b1c567b0e66
4
+ data.tar.gz: d21414e33aa72bbb23571985b9eaa00e177057f7781cbb3f1398476119f38c69
5
5
  SHA512:
6
- metadata.gz: baddc030af7af45aba9b808432ea3374dd10231d0b1f4c1d0624499bb27319762405e2f318a42cf0a4102ac81833ccd1b535e0813e4ddfb9fa50a996bbf7ea18
7
- data.tar.gz: 0da69c9d2fc22b0db89a84b5b0f3435b06e1cfcb81cad98de5ead1bd34e89cbcdc8615b695d82b11155d1cfc608db4c1604ab4dfb52ab8dcdec397ea85d22136
6
+ metadata.gz: 99369336e083dd38d76e7436ee9d824565108760339d3da59b057649341917da4649e68c78f01a29ba45c09c95a2ca71c1b2392d9c2a252826cb81abb2580131
7
+ data.tar.gz: cbba861e5caa35dcd4a0e887159ae0a14bb166a21f2b0bb8b5e33f188c346f9b71b6b11bbee253e9ee2b18b4fc7be039801d438168d43d00b4f007b0541698d8
@@ -1,5 +1,5 @@
1
1
  language: ruby
2
2
  cache: bundler
3
- sudo: false
4
3
  rvm:
5
- - 2.3.1
4
+ - 2.6.6
5
+ - 2.7.1
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  require File.expand_path('../lib/code_analyzer/version', __FILE__)
3
4
 
4
5
  Gem::Specification.new do |gem|
@@ -1,12 +1,13 @@
1
- # encoding: utf-8
2
- require "ripper"
3
- require "code_analyzer/version"
4
- require "code_analyzer/nil"
5
- require "code_analyzer/sexp"
1
+ # frozen_string_literal: true
2
+
3
+ require 'ripper'
4
+ require 'code_analyzer/version'
5
+ require 'code_analyzer/nil'
6
+ require 'code_analyzer/sexp'
6
7
 
7
8
  module CodeAnalyzer
8
- autoload :AnalyzerException, "code_analyzer/analyzer_exception"
9
- autoload :Checker, "code_analyzer/checker"
10
- autoload :CheckingVisitor, "code_analyzer/checking_visitor"
11
- autoload :Warning, "code_analyzer/warning"
9
+ autoload :AnalyzerException, 'code_analyzer/analyzer_exception'
10
+ autoload :Checker, 'code_analyzer/checker'
11
+ autoload :CheckingVisitor, 'code_analyzer/checking_visitor'
12
+ autoload :Warning, 'code_analyzer/warning'
12
13
  end
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer
3
4
  class AnalyzerException < Exception; end
4
5
  end
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer
3
4
  # A checker class that takes charge of checking the sexp.
4
5
  class Checker
@@ -28,9 +29,7 @@ module CodeAnalyzer
28
29
  # @param [Sexp] node
29
30
  def node_start(node)
30
31
  @node = node
31
- self.class.get_callbacks("start_#{node.sexp_type}".to_sym).each do |block|
32
- self.instance_exec(node, &block)
33
- end
32
+ self.class.get_callbacks("start_#{node.sexp_type}".to_sym).each { |block| self.instance_exec(node, &block) }
34
33
  end
35
34
 
36
35
  # delegate to end_### according to the sexp_type, like
@@ -41,9 +40,7 @@ module CodeAnalyzer
41
40
  # @param [Sexp] node
42
41
  def node_end(node)
43
42
  @node = node
44
- self.class.get_callbacks("end_#{node.sexp_type}".to_sym).each do |block|
45
- self.instance_exec(node, &block)
46
- end
43
+ self.class.get_callbacks("end_#{node.sexp_type}".to_sym).each { |block| self.instance_exec(node, &block) }
47
44
  end
48
45
 
49
46
  # add an warning.
@@ -60,7 +57,7 @@ module CodeAnalyzer
60
57
  @warnings ||= []
61
58
  end
62
59
 
63
- class <<self
60
+ class << self
64
61
  def interesting_nodes(*nodes)
65
62
  @interesting_nodes ||= []
66
63
  @interesting_nodes += nodes
@@ -1,8 +1,9 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer
3
4
  module CheckingVisitor
4
- autoload :Base, "code_analyzer/checking_visitor/base"
5
- autoload :Plain, "code_analyzer/checking_visitor/plain"
6
- autoload :Default, "code_analyzer/checking_visitor/default"
5
+ autoload :Base, 'code_analyzer/checking_visitor/base'
6
+ autoload :Plain, 'code_analyzer/checking_visitor/plain'
7
+ autoload :Default, 'code_analyzer/checking_visitor/default'
7
8
  end
8
9
  end
@@ -1,8 +1,9 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer::CheckingVisitor
3
4
  # Base class for checking visitor.
4
5
  class Base
5
- def initialize(options={})
6
+ def initialize(options = {})
6
7
  @checkers = options[:checkers]
7
8
  end
8
9
 
@@ -1,8 +1,9 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer::CheckingVisitor
3
4
  # This is the default checking visitor to check ruby sexp nodes.
4
5
  class Default < Base
5
- def initialize(options={})
6
+ def initialize(options = {})
6
7
  super
7
8
  @checks = {}
8
9
  @checkers.each do |checker|
@@ -28,9 +29,7 @@ module CodeAnalyzer::CheckingVisitor
28
29
  def after_check
29
30
  @checkers.each do |checker|
30
31
  after_check_callbacks = checker.class.get_callbacks(:after_check)
31
- after_check_callbacks.each do |block|
32
- checker.instance_exec &block
33
- end
32
+ after_check_callbacks.each { |block| checker.instance_exec &block }
34
33
  end
35
34
  end
36
35
 
@@ -51,16 +50,14 @@ module CodeAnalyzer::CheckingVisitor
51
50
  # 3. it triggers the interesting checkers' end callbacks.
52
51
  def check_node(node)
53
52
  checkers = @checks[node.sexp_type]
54
- if checkers
55
- checkers.each { |checker| checker.node_start(node) if checker.parse_file?(node.file) }
56
- end
57
- node.children.each { |child_node|
53
+
54
+ checkers.each { |checker| checker.node_start(node) if checker.parse_file?(node.file) } if checkers
55
+ node.children.each do |child_node|
58
56
  child_node.file = node.file
59
57
  check_node(child_node)
60
- }
61
- if checkers
62
- checkers.each { |checker| checker.node_end(node) if checker.parse_file?(node.file) }
63
58
  end
59
+
60
+ checkers.each { |checker| checker.node_end(node) if checker.parse_file?(node.file) } if checkers
64
61
  end
65
62
  end
66
63
  end
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer::CheckingVisitor
3
4
  # This is the checking visitor to check ruby plain code.
4
5
  class Plain < Base
@@ -7,9 +8,7 @@ module CodeAnalyzer::CheckingVisitor
7
8
  # @param [String] filename is the filename of ruby code.
8
9
  # @param [String] content is the content of ruby file.
9
10
  def check(filename, content)
10
- @checkers.each do |checker|
11
- checker.check(filename, content) if checker.parse_file?(filename)
12
- end
11
+ @checkers.each { |checker| checker.check(filename, content) if checker.parse_file?(filename) }
13
12
  end
14
13
  end
15
14
  end
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer
3
4
  # Fake nil.
4
5
  class Nil
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require 'sexp'
3
4
 
4
5
  class Sexp
@@ -13,22 +14,23 @@ class Sexp
13
14
  #
14
15
  # s(:@ident, "test", s(2, 12)
15
16
  # => 2
17
+
16
18
  def line_number
17
19
  case sexp_type
18
- when :def, :defs, :command, :command_call, :call, :fcall, :method_add_arg, :method_add_block,
19
- :var_ref, :vcall, :const_ref, :const_path_ref, :class, :module,
20
- :if, :unless, :elsif, :ifop, :if_mod, :unless_mod, :binary,
21
- :alias, :symbol_literal, :symbol, :aref, :hash, :assoc_new, :string_literal,
22
- :massign
20
+ when :def, :defs, :command, :command_call, :call, :fcall, :method_add_arg, :method_add_block, :var_ref, :vcall,
21
+ :const_ref, :top_const_ref, :const_path_ref, :class, :module, :if, :unless, :elsif, :ifop, :if_mod, :unless_mod, :binary, :alias,
22
+ :symbol_literal, :symbol, :aref, :hash, :assoc_new, :string_literal, :massign, :var_field, :assign, :paren, :dot2, :dot3
23
23
  self[1].line_number
24
24
  when :assoclist_from_args, :bare_assoc_hash
25
25
  self[1][0].line_number
26
- when :string_add, :opassign
26
+ when :string_add, :opassign, :unary, :stmts_add
27
27
  self[2].line_number
28
28
  when :array
29
29
  array_values.first.line_number
30
30
  when :mlhs_add
31
31
  self.last.line_number
32
+ when :params
33
+ self[1][0].line_number if self[1].is_a? Array
32
34
  else
33
35
  self.last.first if self.last.is_a? Array
34
36
  end
@@ -38,7 +40,7 @@ class Sexp
38
40
  #
39
41
  # @return [Array] child nodes.
40
42
  def children
41
- find_all { | sexp | Sexp === sexp }
43
+ find_all { |sexp| Sexp === sexp }
42
44
  end
43
45
 
44
46
  # recursively find all child nodes, and yeild each child node.
@@ -68,10 +70,17 @@ class Sexp
68
70
  message = options[:message]
69
71
  to_s = options[:to_s]
70
72
  self.recursive_children do |child|
71
- if (!sexp_type || (sexp_type.is_a?(Array) ? sexp_type.include?(child.sexp_type) : sexp_type == child.sexp_type)) &&
72
- (!receiver || (receiver.is_a?(Array) ? receiver.include?(child.receiver.to_s) : receiver == child.receiver.to_s)) &&
73
- (!message || (message.is_a?(Array) ? message.include?(child.message.to_s) : message == child.message.to_s)) &&
74
- (!to_s || (to_s.is_a?(Array) ? to_s.include?(child.to_s) : to_s == child.to_s))
73
+ if (
74
+ !sexp_type || (sexp_type.is_a?(Array) ? sexp_type.include?(child.sexp_type) : sexp_type == child.sexp_type)
75
+ ) &&
76
+ (
77
+ !receiver ||
78
+ (receiver.is_a?(Array) ? receiver.include?(child.receiver.to_s) : receiver == child.receiver.to_s)
79
+ ) &&
80
+ (
81
+ !message || (message.is_a?(Array) ? message.include?(child.message.to_s) : message == child.message.to_s)
82
+ ) &&
83
+ (!to_s || (to_s.is_a?(Array) ? to_s.include?(child.to_s) : to_s == child.to_s))
75
84
  yield child
76
85
  end
77
86
  end
@@ -91,7 +100,10 @@ class Sexp
91
100
  # the condition value can be Symbol, Array or Sexp.
92
101
  def grep_node(options)
93
102
  result = CodeAnalyzer::Nil.new
94
- grep_nodes(options) { |node| result = node; break; }
103
+ grep_nodes(options) do |node|
104
+ result = node
105
+ break
106
+ end
95
107
  result
96
108
  end
97
109
 
@@ -138,9 +150,7 @@ class Sexp
138
150
  #
139
151
  # @return [Sexp] module name node
140
152
  def module_name
141
- if :module == sexp_type
142
- self[1]
143
- end
153
+ self[1] if :module == sexp_type
144
154
  end
145
155
 
146
156
  # Get the class name of the class node.
@@ -154,9 +164,7 @@ class Sexp
154
164
  #
155
165
  # @return [Sexp] class name node
156
166
  def class_name
157
- if :class == sexp_type
158
- self[1]
159
- end
167
+ self[1] if :class == sexp_type
160
168
  end
161
169
 
162
170
  # Get the base class of the class node.
@@ -170,9 +178,7 @@ class Sexp
170
178
  #
171
179
  # @return [Sexp] base class of class node
172
180
  def base_class
173
- if :class == sexp_type
174
- self[2]
175
- end
181
+ self[2] if :class == sexp_type
176
182
  end
177
183
 
178
184
  # Get the left value of the assign node.
@@ -185,9 +191,7 @@ class Sexp
185
191
  #
186
192
  # @return [Symbol] left value of lasgn or iasgn node
187
193
  def left_value
188
- if :assign == sexp_type
189
- self[1]
190
- end
194
+ self[1] if :assign == sexp_type
191
195
  end
192
196
 
193
197
  # Get the right value of assign node.
@@ -200,9 +204,7 @@ class Sexp
200
204
  #
201
205
  # @return [Sexp] right value of assign node
202
206
  def right_value
203
- if :assign == sexp_type
204
- self[2]
205
- end
207
+ self[2] if :assign == sexp_type
206
208
  end
207
209
 
208
210
  # Get the message node.
@@ -277,9 +279,7 @@ class Sexp
277
279
  #
278
280
  # @return [Sexp] argument node
279
281
  def argument
280
- if :binary == sexp_type
281
- self[3]
282
- end
282
+ self[3] if :binary == sexp_type
283
283
  end
284
284
 
285
285
  # Get all arguments.
@@ -305,7 +305,7 @@ class Sexp
305
305
  else
306
306
  node = self[1]
307
307
  while true
308
- if [:args_add, :args_add_star].include? node.sexp_type
308
+ if %i[args_add args_add_star].include? node.sexp_type
309
309
  nodes.unshift node[2]
310
310
  node = node[1]
311
311
  elsif :args_new == node.sexp_type
@@ -330,9 +330,7 @@ class Sexp
330
330
  #
331
331
  # @return [Sexp] conditional statement of if node
332
332
  def conditional_statement
333
- if [:if, :unless, :elsif, :ifop, :if_mod, :unless_mod].include? sexp_type
334
- self[1]
335
- end
333
+ self[1] if %i[if unless elsif ifop if_mod unless_mod].include? sexp_type
336
334
  end
337
335
 
338
336
  # Get all condition nodes.
@@ -366,13 +364,13 @@ class Sexp
366
364
  # @return [Array] all condition nodes
367
365
  def all_conditions
368
366
  nodes = []
369
- if :binary == sexp_type && %w(&& || and or).include?(self[2].to_s)
370
- if :binary == self[1].sexp_type && %w(&& || and or).include?(self[1][2].to_s)
367
+ if :binary == sexp_type && %w[&& || and or].include?(self[2].to_s)
368
+ if :binary == self[1].sexp_type && %w[&& || and or].include?(self[1][2].to_s)
371
369
  nodes += self[1].all_conditions
372
370
  else
373
371
  nodes << self[1]
374
372
  end
375
- if :binary == self[3].sexp_type && %w(&& || and or).include?(self[3][2].to_s)
373
+ if :binary == self[3].sexp_type && %w[&& || and or].include?(self[3][2].to_s)
376
374
  nodes += self[3].all_conditions
377
375
  else
378
376
  nodes << self[3]
@@ -392,6 +390,7 @@ class Sexp
392
390
  # => s(:@ident, "show", s(1, 4)),
393
391
  #
394
392
  # @return [Sexp] method name node
393
+
395
394
  def method_name
396
395
  case sexp_type
397
396
  when :def
@@ -399,6 +398,7 @@ class Sexp
399
398
  when :defs
400
399
  self[3]
401
400
  else
401
+
402
402
  end
403
403
  end
404
404
 
@@ -428,6 +428,7 @@ class Sexp
428
428
  # )
429
429
  #
430
430
  # @return [Sexp] body node
431
+
431
432
  def body
432
433
  case sexp_type
433
434
  when :else
@@ -506,13 +507,15 @@ class Sexp
506
507
  # @return [Array] all statements
507
508
  def statements
508
509
  stmts = []
509
- node = case sexp_type
510
- when :do_block, :brace_block
511
- self[2]
512
- when :bodystmt
513
- self[1]
514
- else
515
- end
510
+ node =
511
+ case sexp_type
512
+ when :do_block, :brace_block
513
+ self[2][1]
514
+ when :bodystmt
515
+ self[1]
516
+ else
517
+
518
+ end
516
519
  if node
517
520
  while true
518
521
  if :stmts_add == node.sexp_type && s(:void_stmt) != node[2]
@@ -542,6 +545,7 @@ class Sexp
542
545
  def exception_classes
543
546
  if :rescue == sexp_type
544
547
  return [] unless self[1]
548
+
545
549
  if :mrhs_add == self[1].sexp_type
546
550
  exceptions = Array.new(self[1][2])
547
551
  arg_nodes = self[1][1][1]
@@ -566,9 +570,7 @@ class Sexp
566
570
  # )
567
571
  # => s(:var_field, s(:@ident, "e", s(1, 20)))
568
572
  def exception_variable
569
- if :rescue == sexp_type
570
- self[2]
571
- end
573
+ self[2] if :rescue == sexp_type
572
574
  end
573
575
 
574
576
  # Get hash value node.
@@ -585,20 +587,17 @@ class Sexp
585
587
  #
586
588
  # @return [Sexp] hash value node
587
589
  def hash_value(key)
588
- pair_nodes = case sexp_type
589
- when :bare_assoc_hash
590
- self[1]
591
- when :hash
592
- self[1][1]
593
- else
594
- end
595
- if pair_nodes
596
- pair_nodes.size.times do |i|
597
- if key == pair_nodes[i][1].to_s
598
- return pair_nodes[i][2]
599
- end
590
+ pair_nodes =
591
+ case sexp_type
592
+ when :bare_assoc_hash
593
+ self[1]
594
+ when :hash
595
+ self[1][1]
596
+ else
597
+
600
598
  end
601
- end
599
+
600
+ pair_nodes.size.times { |i| return pair_nodes[i][2] if key == pair_nodes[i][1].to_s } if pair_nodes
602
601
  CodeAnalyzer::Nil.new
603
602
  end
604
603
 
@@ -640,18 +639,18 @@ class Sexp
640
639
  #
641
640
  # @return [Array] hash keys
642
641
  def hash_keys
643
- pair_nodes = case sexp_type
644
- when :bare_assoc_hash
645
- self[1]
646
- when :hash
647
- self[1][1]
648
- else
649
- end
642
+ pair_nodes =
643
+ case sexp_type
644
+ when :bare_assoc_hash
645
+ self[1]
646
+ when :hash
647
+ self[1][1]
648
+ else
649
+
650
+ end
650
651
  if pair_nodes
651
652
  keys = []
652
- pair_nodes.size.times do |i|
653
- keys << pair_nodes[i][1].to_s
654
- end
653
+ pair_nodes.size.times { |i| keys << pair_nodes[i][1].to_s }
655
654
  keys
656
655
  end
657
656
  end
@@ -673,18 +672,18 @@ class Sexp
673
672
  #
674
673
  # @return [Array] hash values
675
674
  def hash_values
676
- pair_nodes = case sexp_type
677
- when :bare_assoc_hash
678
- self[1]
679
- when :hash
680
- self[1][1]
681
- else
682
- end
675
+ pair_nodes =
676
+ case sexp_type
677
+ when :bare_assoc_hash
678
+ self[1]
679
+ when :hash
680
+ self[1][1]
681
+ else
682
+
683
+ end
683
684
  if pair_nodes
684
685
  values = []
685
- pair_nodes.size.times do |i|
686
- values << pair_nodes[i][2]
687
- end
686
+ pair_nodes.size.times { |i| values << pair_nodes[i][2] }
688
687
  values
689
688
  end
690
689
  end
@@ -709,9 +708,7 @@ class Sexp
709
708
  array_size += 1
710
709
  first_node = s(:args_new) == first_node[1] ? first_node[2] : first_node[1]
711
710
  if :args_add != first_node.sexp_type
712
- if :array == first_node.sexp_type
713
- array_size += first_node.array_size
714
- end
711
+ array_size += first_node.array_size if :array == first_node.sexp_type
715
712
  break
716
713
  end
717
714
  end
@@ -737,21 +734,21 @@ class Sexp
737
734
  def array_values
738
735
  case sexp_type
739
736
  when :array
740
- if nil == self[1]
737
+ if nil == self[1] || %i[words_new qwords_new symbols_new qsymbols_new].include?(self[1].sexp_type)
741
738
  []
742
- elsif [:words_add, :qwords_add, :qsymbols_add].include? self[1].sexp_type
739
+ elsif %i[words_add qwords_add symbols_add qsymbols_add].include? self[1].sexp_type
743
740
  self[1].array_values
744
741
  else
745
742
  arguments.all
746
743
  end
747
- when :words_add, :qwords_add, :qsymbols_add
744
+ when :words_add, :qwords_add, :symbols_add, :qsymbols_add
748
745
  values = []
749
746
  node = self
750
747
  while true
751
- if [:words_add, :qwords_add, :qsymbols_add].include? node.sexp_type
748
+ if %i[words_add qwords_add symbols_add qsymbols_add].include? node.sexp_type
752
749
  values.unshift node[2]
753
750
  node = node[1]
754
- elsif [:words_new, :qwords_new, :qsymbols_new].include? node.sexp_type
751
+ elsif %i[words_new qwords_new symbols_new qsymbols_new].include? node.sexp_type
755
752
  break
756
753
  end
757
754
  end
@@ -808,22 +805,13 @@ class Sexp
808
805
  # @return [String] to_s
809
806
  def to_s
810
807
  case sexp_type
811
- when :string_literal, :xstring_literal, :string_content, :const_ref, :symbol_literal, :symbol,
812
- :args_add_block, :var_ref, :vcall, :var_field,
813
- :@ident, :@tstring_content, :@const, :@ivar, :@kw, :@gvar, :@cvar
808
+ when :string_literal, :xstring_literal, :string_content, :const_ref, :symbol_literal, :symbol, :args_add_block, :var_ref,
809
+ :vcall, :var_field, :@ident, :@tstring_content, :@const, :@ivar, :@kw, :@gvar, :@cvar, :@period
814
810
  self[1].to_s
815
811
  when :string_add
816
- if s(:string_content) == self[1]
817
- self[2].to_s
818
- else
819
- self[1].to_s
820
- end
812
+ s(:string_content) == self[1] ? self[2].to_s : self[1].to_s
821
813
  when :args_add
822
- if s(:args_new) == self[1]
823
- self[2].to_s
824
- else
825
- self[1].to_s
826
- end
814
+ s(:args_new) == self[1] ? self[2].to_s : self[1].to_s
827
815
  when :qwords_add
828
816
  self[2].to_s
829
817
  when :word_add
@@ -839,13 +827,13 @@ class Sexp
839
827
  when :top_const_ref
840
828
  "::#{self[1]}"
841
829
  else
842
- ""
830
+ ''
843
831
  end
844
832
  end
845
833
 
846
834
  # check if the self node is a const.
847
835
  def const?
848
- :@const == self.sexp_type || ([:var_ref, :vcall].include?(self.sexp_type) && :@const == self[1].sexp_type)
836
+ :@const == self.sexp_type || (%i[var_ref vcall].include?(self.sexp_type) && :@const == self[1].sexp_type)
849
837
  end
850
838
 
851
839
  # true
@@ -865,22 +853,33 @@ class Sexp
865
853
  if Sexp === last_node && last_node.size == 2 && last_node.first.is_a?(Integer) && last_node.last.is_a?(Integer)
866
854
  node.delete_at(-1)
867
855
  end
868
- node.sexp_body.each_with_index do |child, index|
869
- if Sexp === child
870
- node[index+1] = child.remove_line_and_column
871
- end
872
- end
856
+ node.sexp_body.each_with_index { |child, index| node[index + 1] = child.remove_line_and_column if Sexp === child }
873
857
  node
874
858
  end
875
859
 
876
860
  # if the return value of these methods is nil, then return CodeAnalyzer::Nil.new instead
877
- [:sexp_type, :receiver, :message, :arguments, :argument, :class_name, :base_class, :method_name,
878
- :body, :block_node, :conditional_statement, :left_value, :right_value].each do |method|
861
+ %i[
862
+ sexp_type
863
+ receiver
864
+ message
865
+ arguments
866
+ argument
867
+ class_name
868
+ base_class
869
+ method_name
870
+ body
871
+ block_node
872
+ conditional_statement
873
+ left_value
874
+ right_value
875
+ ].each do |method|
879
876
  class_eval <<-EOS
880
877
  alias_method :origin_#{method}, :#{method}
881
878
 
882
879
  def #{method}
883
- ret = origin_#{method}
880
+ ret = origin_#{
881
+ method
882
+ }
884
883
  ret.nil? ? CodeAnalyzer::Nil.new : ret
885
884
  end
886
885
  EOS