code_analyzer 0.5.1 → 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
2
  SHA256:
3
- metadata.gz: 792496737344902c984457c4a153f5e7e5717e7f9568f130cdc039c1779e9627
4
- data.tar.gz: 8b15a24c9ede966353b1100328fe1d5dcc14937fc6d2a4401a455cfe42176d27
3
+ metadata.gz: 5a68561649e1e345495d4a494530dc7abb9ca256dc5a999d1aa71b1c567b0e66
4
+ data.tar.gz: d21414e33aa72bbb23571985b9eaa00e177057f7781cbb3f1398476119f38c69
5
5
  SHA512:
6
- metadata.gz: 2bd9cd8d09ffaab831f417207e0003082408ddb61e8a513884a0d137adb567c1c6f3aed5f68d2460d58a5799ef56a514cb49af4d1c5f2b92b017500193709e54
7
- data.tar.gz: dd4bf2b587ca333c7eeabcd088586eeebc421c9e41931d1637a7dd0bb3f1b403959b95c0cc697eb81cd6d818e198f4648b1fc8e1d585c8896600f528ec2511fe
6
+ metadata.gz: 99369336e083dd38d76e7436ee9d824565108760339d3da59b057649341917da4649e68c78f01a29ba45c09c95a2ca71c1b2392d9c2a252826cb81abb2580131
7
+ data.tar.gz: cbba861e5caa35dcd4a0e887159ae0a14bb166a21f2b0bb8b5e33f188c346f9b71b6b11bbee253e9ee2b18b4fc7be039801d438168d43d00b4f007b0541698d8
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
- - 2.6.4
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,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require 'ripper'
3
4
  require 'code_analyzer/version'
4
5
  require 'code_analyzer/nil'
@@ -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,8 +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)
32
- .each { |block| self.instance_exec(node, &block) }
32
+ self.class.get_callbacks("start_#{node.sexp_type}".to_sym).each { |block| self.instance_exec(node, &block) }
33
33
  end
34
34
 
35
35
  # delegate to end_### according to the sexp_type, like
@@ -40,9 +40,7 @@ module CodeAnalyzer
40
40
  # @param [Sexp] node
41
41
  def node_end(node)
42
42
  @node = node
43
- self.class.get_callbacks("end_#{node.sexp_type}".to_sym).each do |block|
44
- self.instance_exec(node, &block)
45
- end
43
+ self.class.get_callbacks("end_#{node.sexp_type}".to_sym).each { |block| self.instance_exec(node, &block) }
46
44
  end
47
45
 
48
46
  # add an warning.
@@ -50,13 +48,8 @@ module CodeAnalyzer
50
48
  # @param [String] message, is the warning message
51
49
  # @param [String] filename, is the filename of source code
52
50
  # @param [Integer] line_number, is the line number of the source code which is reviewing
53
- def add_warning(
54
- message, filename = @node.file, line_number = @node.line_number
55
- )
56
- warnings <<
57
- Warning.new(
58
- filename: filename, line_number: line_number, message: message
59
- )
51
+ def add_warning(message, filename = @node.file, line_number = @node.line_number)
52
+ warnings << Warning.new(filename: filename, line_number: line_number, message: message)
60
53
  end
61
54
 
62
55
  # all warnings.
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer
3
4
  module CheckingVisitor
4
5
  autoload :Base, 'code_analyzer/checking_visitor/base'
@@ -1,4 +1,5 @@
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
@@ -1,4 +1,5 @@
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
@@ -39,9 +40,7 @@ module CodeAnalyzer::CheckingVisitor
39
40
  def parse(filename, content)
40
41
  Sexp.from_array(Ripper::SexpBuilder.new(content).parse)
41
42
  rescue Exception
42
- raise AnalyzerException.new(
43
- "#{filename} looks like it's not a valid Ruby file. Skipping..."
44
- )
43
+ raise AnalyzerException.new("#{filename} looks like it's not a valid Ruby file. Skipping...")
45
44
  end
46
45
 
47
46
  # recursively check ruby sexp node.
@@ -51,20 +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 do |checker|
56
- checker.node_start(node) if checker.parse_file?(node.file)
57
- end
58
- end
53
+
54
+ checkers.each { |checker| checker.node_start(node) if checker.parse_file?(node.file) } if checkers
59
55
  node.children.each do |child_node|
60
56
  child_node.file = node.file
61
57
  check_node(child_node)
62
58
  end
63
- if checkers
64
- checkers.each do |checker|
65
- checker.node_end(node) if checker.parse_file?(node.file)
66
- end
67
- end
59
+
60
+ checkers.each { |checker| checker.node_end(node) if checker.parse_file?(node.file) } if checkers
68
61
  end
69
62
  end
70
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,21 +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, :if, :unless,
20
- :elsif, :ifop, :if_mod, :unless_mod, :binary, :alias, :symbol_literal, :symbol,
21
- :aref, :hash, :assoc_new, :string_literal, :massign, :var_field
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
22
23
  self[1].line_number
23
24
  when :assoclist_from_args, :bare_assoc_hash
24
25
  self[1][0].line_number
25
- when :string_add, :opassign
26
+ when :string_add, :opassign, :unary, :stmts_add
26
27
  self[2].line_number
27
28
  when :array
28
29
  array_values.first.line_number
29
30
  when :mlhs_add
30
31
  self.last.line_number
32
+ when :params
33
+ self[1][0].line_number if self[1].is_a? Array
31
34
  else
32
35
  self.last.first if self.last.is_a? Array
33
36
  end
@@ -68,45 +71,16 @@ class Sexp
68
71
  to_s = options[:to_s]
69
72
  self.recursive_children do |child|
70
73
  if (
71
- !sexp_type ||
72
- (
73
- if sexp_type.is_a?(Array)
74
- sexp_type.include?(child.sexp_type)
75
- else
76
- sexp_type == child.sexp_type
77
- end
78
- )
79
- ) &&
80
- (
81
- !receiver ||
82
- (
83
- if receiver.is_a?(Array)
84
- receiver.include?(child.receiver.to_s)
85
- else
86
- receiver == child.receiver.to_s
87
- end
88
- )
89
- ) &&
90
- (
91
- !message ||
92
- (
93
- if message.is_a?(Array)
94
- message.include?(child.message.to_s)
95
- else
96
- message == child.message.to_s
97
- end
98
- )
74
+ !sexp_type || (sexp_type.is_a?(Array) ? sexp_type.include?(child.sexp_type) : sexp_type == child.sexp_type)
99
75
  ) &&
100
- (
101
- !to_s ||
102
- (
103
- if to_s.is_a?(Array)
104
- to_s.include?(child.to_s)
105
- else
106
- to_s == child.to_s
107
- end
108
- )
109
- )
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))
110
84
  yield child
111
85
  end
112
86
  end
@@ -391,14 +365,12 @@ class Sexp
391
365
  def all_conditions
392
366
  nodes = []
393
367
  if :binary == sexp_type && %w[&& || and or].include?(self[2].to_s)
394
- if :binary == self[1].sexp_type &&
395
- %w[&& || and or].include?(self[1][2].to_s)
368
+ if :binary == self[1].sexp_type && %w[&& || and or].include?(self[1][2].to_s)
396
369
  nodes += self[1].all_conditions
397
370
  else
398
371
  nodes << self[1]
399
372
  end
400
- if :binary == self[3].sexp_type &&
401
- %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)
402
374
  nodes += self[3].all_conditions
403
375
  else
404
376
  nodes << self[3]
@@ -418,6 +390,7 @@ class Sexp
418
390
  # => s(:@ident, "show", s(1, 4)),
419
391
  #
420
392
  # @return [Sexp] method name node
393
+
421
394
  def method_name
422
395
  case sexp_type
423
396
  when :def
@@ -455,6 +428,7 @@ class Sexp
455
428
  # )
456
429
  #
457
430
  # @return [Sexp] body node
431
+
458
432
  def body
459
433
  case sexp_type
460
434
  when :else
@@ -571,6 +545,7 @@ class Sexp
571
545
  def exception_classes
572
546
  if :rescue == sexp_type
573
547
  return [] unless self[1]
548
+
574
549
  if :mrhs_add == self[1].sexp_type
575
550
  exceptions = Array.new(self[1][2])
576
551
  arg_nodes = self[1][1][1]
@@ -621,11 +596,8 @@ class Sexp
621
596
  else
622
597
 
623
598
  end
624
- if pair_nodes
625
- pair_nodes.size.times do |i|
626
- return pair_nodes[i][2] if key == pair_nodes[i][1].to_s
627
- end
628
- end
599
+
600
+ pair_nodes.size.times { |i| return pair_nodes[i][2] if key == pair_nodes[i][1].to_s } if pair_nodes
629
601
  CodeAnalyzer::Nil.new
630
602
  end
631
603
 
@@ -734,12 +706,9 @@ class Sexp
734
706
  if first_node
735
707
  while true
736
708
  array_size += 1
737
- first_node =
738
- s(:args_new) == first_node[1] ? first_node[2] : first_node[1]
709
+ first_node = s(:args_new) == first_node[1] ? first_node[2] : first_node[1]
739
710
  if :args_add != first_node.sexp_type
740
- if :array == first_node.sexp_type
741
- array_size += first_node.array_size
742
- end
711
+ array_size += first_node.array_size if :array == first_node.sexp_type
743
712
  break
744
713
  end
745
714
  end
@@ -765,13 +734,9 @@ class Sexp
765
734
  def array_values
766
735
  case sexp_type
767
736
  when :array
768
- if nil == self[1] ||
769
- %i[words_new qwords_new symbols_new qsymbols_new].include?(
770
- self[1].sexp_type
771
- )
737
+ if nil == self[1] || %i[words_new qwords_new symbols_new qsymbols_new].include?(self[1].sexp_type)
772
738
  []
773
- elsif %i[words_add qwords_add symbols_add qsymbols_add].include? self[1]
774
- .sexp_type
739
+ elsif %i[words_add qwords_add symbols_add qsymbols_add].include? self[1].sexp_type
775
740
  self[1].array_values
776
741
  else
777
742
  arguments.all
@@ -780,12 +745,10 @@ class Sexp
780
745
  values = []
781
746
  node = self
782
747
  while true
783
- if %i[words_add qwords_add symbols_add qsymbols_add].include? node
784
- .sexp_type
748
+ if %i[words_add qwords_add symbols_add qsymbols_add].include? node.sexp_type
785
749
  values.unshift node[2]
786
750
  node = node[1]
787
- elsif %i[words_new qwords_new symbols_new qsymbols_new].include? node
788
- .sexp_type
751
+ elsif %i[words_new qwords_new symbols_new qsymbols_new].include? node.sexp_type
789
752
  break
790
753
  end
791
754
  end
@@ -842,9 +805,8 @@ class Sexp
842
805
  # @return [String] to_s
843
806
  def to_s
844
807
  case sexp_type
845
- when :string_literal, :xstring_literal, :string_content, :const_ref,
846
- :symbol_literal, :symbol, :args_add_block, :var_ref, :vcall, :var_field,
847
- :@ident, :@tstring_content, :@const, :@ivar, :@kw, :@gvar, :@cvar, :@period
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
848
810
  self[1].to_s
849
811
  when :string_add
850
812
  s(:string_content) == self[1] ? self[2].to_s : self[1].to_s
@@ -871,11 +833,7 @@ class Sexp
871
833
 
872
834
  # check if the self node is a const.
873
835
  def const?
874
- :@const == self.sexp_type ||
875
- (
876
- %i[var_ref vcall].include?(self.sexp_type) &&
877
- :@const == self[1].sexp_type
878
- )
836
+ :@const == self.sexp_type || (%i[var_ref vcall].include?(self.sexp_type) && :@const == self[1].sexp_type)
879
837
  end
880
838
 
881
839
  # true
@@ -892,14 +850,10 @@ class Sexp
892
850
  def remove_line_and_column
893
851
  node = self.clone
894
852
  last_node = node.last
895
- if Sexp === last_node && last_node.size == 2 &&
896
- last_node.first.is_a?(Integer) &&
897
- last_node.last.is_a?(Integer)
853
+ if Sexp === last_node && last_node.size == 2 && last_node.first.is_a?(Integer) && last_node.last.is_a?(Integer)
898
854
  node.delete_at(-1)
899
855
  end
900
- node.sexp_body.each_with_index do |child, index|
901
- node[index + 1] = child.remove_line_and_column if Sexp === child
902
- end
856
+ node.sexp_body.each_with_index { |child, index| node[index + 1] = child.remove_line_and_column if Sexp === child }
903
857
  node
904
858
  end
905
859
 
@@ -922,9 +876,7 @@ class Sexp
922
876
  class_eval <<-EOS
923
877
  alias_method :origin_#{method}, :#{method}
924
878
 
925
- def #{
926
- method
927
- }
879
+ def #{method}
928
880
  ret = origin_#{
929
881
  method
930
882
  }
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer
3
- VERSION = '0.5.1'
4
+ VERSION = '0.5.2'
4
5
  end
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module CodeAnalyzer
3
4
  # Warning is the violation.
4
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module CodeAnalyzer
@@ -28,16 +30,12 @@ module CodeAnalyzer
28
30
 
29
31
  context '#parse_file?' do
30
32
  it 'should return true if node_file matches pattern' do
31
- allow(checker).to receive(:interesting_files).and_return(
32
- [%r{spec\/.*\.rb}, %r{lib\/.*\.rb}]
33
- )
33
+ allow(checker).to receive(:interesting_files).and_return([%r{spec\/.*\.rb}, %r{lib\/.*\.rb}])
34
34
  expect(checker.parse_file?('lib/code_analyzer.rb')).to be true
35
35
  end
36
36
 
37
37
  it "should return false if node_file doesn't match pattern" do
38
- allow(checker).to receive(:interesting_files).and_return(
39
- [%r{spec\/.*\.rb}]
40
- )
38
+ allow(checker).to receive(:interesting_files).and_return([%r{spec\/.*\.rb}])
41
39
  expect(checker.parse_file?('lib/code_analyzer.rb')).to be false
42
40
  end
43
41
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module CodeAnalyzer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module CodeAnalyzer::CheckingVisitor
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module CodeAnalyzer::CheckingVisitor
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module CodeAnalyzer
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Sexp do
4
- describe 'line' do
6
+ describe 'line_number' do
5
7
  before :each do
6
8
  content = <<-EOF
7
9
  class Demo
@@ -18,9 +20,12 @@ describe Sexp do
18
20
  end
19
21
  def condition
20
22
  if success?
21
- puts "unknown" if output?
23
+ puts "unknown" if !output?
22
24
  elsif fail?
25
+ 1..2
26
+ 3...4
23
27
  end
28
+ pp ::Rails.application
24
29
  end
25
30
  end
26
31
  EOF
@@ -39,6 +44,10 @@ describe Sexp do
39
44
  expect(@node.grep_node(sexp_type: :const_ref).line_number).to eq 1
40
45
  end
41
46
 
47
+ it 'should return top const line' do
48
+ expect(@node.grep_node(sexp_type: :top_const_ref).line_number).to eq 20
49
+ end
50
+
42
51
  it 'should return const path line' do
43
52
  expect(@node.grep_node(sexp_type: :const_path_ref).line_number).to eq 3
44
53
  end
@@ -70,6 +79,79 @@ describe Sexp do
70
79
  it 'should return if_mod line' do
71
80
  expect(@node.grep_node(sexp_type: :if_mod).line_number).to eq 15
72
81
  end
82
+
83
+ it 'should return unary line' do
84
+ expect(@node.grep_node(sexp_type: :unary).line_number).to eq 15
85
+ end
86
+
87
+ it 'should return assign line' do
88
+ expect(@node.grep_node(sexp_type: :assign).line_number).to eq 6
89
+ end
90
+
91
+ it 'should return paren line' do
92
+ expect(@node.grep_node(sexp_type: :paren).line_number).to eq 10
93
+ end
94
+
95
+ it 'should return dot2 line' do
96
+ expect(@node.grep_node(sexp_type: :dot2).line_number).to eq 17
97
+ end
98
+
99
+ it 'should return dot3 line' do
100
+ expect(@node.grep_node(sexp_type: :dot3).line_number).to eq 18
101
+ end
102
+
103
+ it 'should return params line' do
104
+ expect(@node.grep_node(sexp_type: :params).line_number).to be_nil
105
+ end
106
+
107
+ it 'should return params line if not empty' do
108
+ @node = parse_content(<<~CODE)
109
+ # @see Foo
110
+ def foo(a, b)
111
+ end
112
+ CODE
113
+ expect(@node.grep_node(sexp_type: :params).line_number).to eq 2
114
+ end
115
+
116
+ it 'should return stmts_add line' do
117
+ expect(@node.grep_node(sexp_type: :stmts_add).line_number).to eq 13
118
+ end
119
+
120
+ context 'when a complex code is given' do
121
+ before :each do
122
+ @node = parse_content(<<~CODE)
123
+ def foo(num)
124
+ unless (num == 0 ? :zero, :other) || !@opts.right?
125
+ @bar = {}
126
+ end
127
+ end
128
+ CODE
129
+ end
130
+
131
+ it 'should return unless line' do
132
+ expect(@node.grep_node(sexp_type: :unless).line_number).to eq 2
133
+ end
134
+
135
+ it 'should return paren line' do
136
+ expect(@node.grep_node(sexp_type: :paren).line_number).to eq 1
137
+ end
138
+
139
+ it 'should return stmts_add line' do
140
+ expect(@node.grep_node(sexp_type: :stmts_add).line_number).to eq 2
141
+ end
142
+
143
+ it 'should return binary line' do
144
+ expect(@node.grep_node(sexp_type: :binary).line_number).to eq 2
145
+ end
146
+
147
+ it 'should return unary line' do
148
+ expect(@node.grep_node(sexp_type: :unary).line_number).to eq 2
149
+ end
150
+
151
+ it 'should return assign line' do
152
+ expect(@node.grep_node(sexp_type: :assign).line_number).to eq 3
153
+ end
154
+ end
73
155
  end
74
156
 
75
157
  describe 'grep_nodes' do
@@ -84,14 +166,12 @@ describe Sexp do
84
166
 
85
167
  it 'should get the call nodes with receiver current_user' do
86
168
  nodes = []
87
- @node.grep_nodes(sexp_type: :call, receiver: 'current_user') do |node|
88
- nodes << node
89
- end
169
+ @node.grep_nodes(sexp_type: :call, receiver: 'current_user') { |node| nodes << node }
90
170
  expect(nodes).to eq [
91
171
  s(
92
172
  :call,
93
173
  s(:vcall, s(:@ident, 'current_user', s(2, 8))),
94
- s(:@period, ".", s(2, 20)),
174
+ s(:@period, '.', s(2, 20)),
95
175
  s(:@ident, 'posts', s(2, 21))
96
176
  )
97
177
  ]
@@ -99,25 +179,23 @@ describe Sexp do
99
179
 
100
180
  it 'should get the call nodes with different messages' do
101
181
  nodes = []
102
- @node.grep_nodes(sexp_type: :call, message: %w[posts find]) do |node|
103
- nodes << node
104
- end
182
+ @node.grep_nodes(sexp_type: :call, message: %w[posts find]) { |node| nodes << node }
105
183
  expect(nodes).to eq [
106
184
  s(
107
185
  :call,
108
186
  s(
109
187
  :call,
110
188
  s(:vcall, s(:@ident, 'current_user', s(2, 8))),
111
- s(:@period, ".", s(2, 20)),
189
+ s(:@period, '.', s(2, 20)),
112
190
  s(:@ident, 'posts', s(2, 21))
113
191
  ),
114
- s(:@period, ".", s(2, 26)),
192
+ s(:@period, '.', s(2, 26)),
115
193
  s(:@ident, 'find', s(2, 27))
116
194
  ),
117
195
  s(
118
196
  :call,
119
197
  s(:vcall, s(:@ident, 'current_user', s(2, 8))),
120
- s(:@period, ".", s(2, 20)),
198
+ s(:@period, '.', s(2, 20)),
121
199
  s(:@ident, 'posts', s(2, 21))
122
200
  )
123
201
  ]
@@ -125,9 +203,7 @@ describe Sexp do
125
203
 
126
204
  it 'should get the vcall node with to_s' do
127
205
  nodes = []
128
- @node.grep_nodes(sexp_type: :vcall, to_s: 'current_user') do |node|
129
- nodes << node
130
- end
206
+ @node.grep_nodes(sexp_type: :vcall, to_s: 'current_user') { |node| nodes << node }
131
207
  expect(nodes).to eq [s(:vcall, s(:@ident, 'current_user', s(2, 8)))]
132
208
  end
133
209
  end
@@ -147,7 +223,7 @@ describe Sexp do
147
223
  expect(node).to eq s(
148
224
  :call,
149
225
  s(:vcall, s(:@ident, 'current_user', s(2, 8))),
150
- s(:@period, ".", s(2, 20)),
226
+ s(:@period, '.', s(2, 20)),
151
227
  s(:@ident, 'posts', s(2, 21))
152
228
  )
153
229
  end
@@ -170,8 +246,7 @@ describe Sexp do
170
246
 
171
247
  describe 'receiver' do
172
248
  it 'should get receiver of assign node' do
173
- node =
174
- parse_content('user.name = params[:name]').grep_node(sexp_type: :assign)
249
+ node = parse_content('user.name = params[:name]').grep_node(sexp_type: :assign)
175
250
  receiver = node.receiver
176
251
  expect(receiver.sexp_type).to eq :field
177
252
  expect(receiver.receiver.to_s).to eq 'user'
@@ -179,8 +254,7 @@ describe Sexp do
179
254
  end
180
255
 
181
256
  it 'should get receiver of field node' do
182
- node =
183
- parse_content('user.name = params[:name]').grep_node(sexp_type: :field)
257
+ node = parse_content('user.name = params[:name]').grep_node(sexp_type: :field)
184
258
  expect(node.receiver.to_s).to eq 'user'
185
259
  end
186
260
 
@@ -204,16 +278,12 @@ describe Sexp do
204
278
  end
205
279
 
206
280
  it 'should get receiver of method_add_arg' do
207
- node =
208
- parse_content('Post.find(:all)').grep_node(sexp_type: :method_add_arg)
281
+ node = parse_content('Post.find(:all)').grep_node(sexp_type: :method_add_arg)
209
282
  expect(node.receiver.to_s).to eq 'Post'
210
283
  end
211
284
 
212
285
  it 'should get receiver of method_add_block' do
213
- node =
214
- parse_content('Post.save do; end').grep_node(
215
- sexp_type: :method_add_block
216
- )
286
+ node = parse_content('Post.save do; end').grep_node(sexp_type: :method_add_block)
217
287
  expect(node.receiver.to_s).to eq 'Post'
218
288
  end
219
289
  end
@@ -234,10 +304,7 @@ describe Sexp do
234
304
 
235
305
  describe 'base_class' do
236
306
  it 'should get base class of class node' do
237
- node =
238
- parse_content('class User < ActiveRecord::Base; end').grep_node(
239
- sexp_type: :class
240
- )
307
+ node = parse_content('class User < ActiveRecord::Base; end').grep_node(sexp_type: :class)
241
308
  expect(node.base_class.to_s).to eq 'ActiveRecord::Base'
242
309
  end
243
310
  end
@@ -263,10 +330,7 @@ describe Sexp do
263
330
  end
264
331
 
265
332
  it 'should get the message of command_call' do
266
- node =
267
- parse_content('map.resources :posts do; end').grep_node(
268
- sexp_type: :command_call
269
- )
333
+ node = parse_content('map.resources :posts do; end').grep_node(sexp_type: :command_call)
270
334
  expect(node.message.to_s).to eq 'resources'
271
335
  end
272
336
 
@@ -291,46 +355,34 @@ describe Sexp do
291
355
  end
292
356
 
293
357
  it 'should get the message of method_add_arg' do
294
- node =
295
- parse_content('Post.find(:all)').grep_node(sexp_type: :method_add_arg)
358
+ node = parse_content('Post.find(:all)').grep_node(sexp_type: :method_add_arg)
296
359
  expect(node.message.to_s).to eq 'find'
297
360
  end
298
361
 
299
362
  it 'should get the message of method_add_block' do
300
- node =
301
- parse_content('Post.save do; end').grep_node(
302
- sexp_type: :method_add_block
303
- )
363
+ node = parse_content('Post.save do; end').grep_node(sexp_type: :method_add_block)
304
364
  expect(node.message.to_s).to eq 'save'
305
365
  end
306
366
  end
307
367
 
308
368
  describe 'arguments' do
309
369
  it 'should get the arguments of command' do
310
- node =
311
- parse_content('resources :posts do; end').grep_node(sexp_type: :command)
370
+ node = parse_content('resources :posts do; end').grep_node(sexp_type: :command)
312
371
  expect(node.arguments.sexp_type).to eq :args_add_block
313
372
  end
314
373
 
315
374
  it 'should get the arguments of command_call' do
316
- node =
317
- parse_content('map.resources :posts do; end').grep_node(
318
- sexp_type: :command_call
319
- )
375
+ node = parse_content('map.resources :posts do; end').grep_node(sexp_type: :command_call)
320
376
  expect(node.arguments.sexp_type).to eq :args_add_block
321
377
  end
322
378
 
323
379
  it 'should get the arguments of method_add_arg' do
324
- node =
325
- parse_content('User.find(:all)').grep_node(sexp_type: :method_add_arg)
380
+ node = parse_content('User.find(:all)').grep_node(sexp_type: :method_add_arg)
326
381
  expect(node.arguments.sexp_type).to eq :args_add_block
327
382
  end
328
383
 
329
384
  it 'should get the arguments of method_add_block' do
330
- node =
331
- parse_content('Post.save(false) do; end').grep_node(
332
- sexp_type: :method_add_block
333
- )
385
+ node = parse_content('Post.save(false) do; end').grep_node(sexp_type: :method_add_block)
334
386
  expect(node.arguments.sexp_type).to eq :args_add_block
335
387
  end
336
388
  end
@@ -344,49 +396,30 @@ describe Sexp do
344
396
 
345
397
  describe 'all' do
346
398
  it 'should get all arguments' do
347
- node =
348
- parse_content("puts 'hello', 'world'").grep_node(
349
- sexp_type: :args_add_block
350
- )
399
+ node = parse_content("puts 'hello', 'world'").grep_node(sexp_type: :args_add_block)
351
400
  expect(node.all.map(&:to_s)).to eq %w[hello world]
352
401
  end
353
402
 
354
403
  it 'should get all arguments with &:' do
355
- node =
356
- parse_content('user.posts.map(&:title)').grep_node(
357
- sexp_type: :args_add_block
358
- )
404
+ node = parse_content('user.posts.map(&:title)').grep_node(sexp_type: :args_add_block)
359
405
  expect(node.all.map(&:to_s)).to eq %w[title]
360
406
  end
361
407
 
362
408
  it 'should get all arguments with command_call node' do
363
- node =
364
- parse_content('options_for_select(Account.get_business current_user)')
365
- .grep_node(sexp_type: :args_add)
409
+ node = parse_content('options_for_select(Account.get_business current_user)').grep_node(sexp_type: :args_add)
366
410
  expect(node.all).to eq [
367
411
  s(
368
412
  :command_call,
369
413
  s(:var_ref, s(:@const, 'Account', s(1, 19))),
370
- s(:@period, ".", s(1, 26)),
414
+ s(:@period, '.', s(1, 26)),
371
415
  s(:@ident, 'get_business', s(1, 27)),
372
- s(
373
- :args_add_block,
374
- s(
375
- :args_add,
376
- s(:args_new),
377
- s(:vcall, s(:@ident, 'current_user', s(1, 40)))
378
- ),
379
- false
380
- )
416
+ s(:args_add_block, s(:args_add, s(:args_new), s(:vcall, s(:@ident, 'current_user', s(1, 40)))), false)
381
417
  )
382
418
  ]
383
419
  end
384
420
 
385
421
  it 'no error for args_add_star' do
386
- node =
387
- parse_content("send(:\"\#{route}_url\", *args)").grep_node(
388
- sexp_type: :args_add_block
389
- )
422
+ node = parse_content("send(:\"\#{route}_url\", *args)").grep_node(sexp_type: :args_add_block)
390
423
  expect { node.all }.not_to raise_error
391
424
  end
392
425
  end
@@ -403,8 +436,7 @@ describe Sexp do
403
436
  end
404
437
 
405
438
  it 'should get conditional statement of elsif' do
406
- node =
407
- parse_content('if true; elsif false; end').grep_node(sexp_type: :elsif)
439
+ node = parse_content('if true; elsif false; end').grep_node(sexp_type: :elsif)
408
440
  expect(node.conditional_statement.to_s).to eq 'false'
409
441
  end
410
442
 
@@ -414,8 +446,7 @@ describe Sexp do
414
446
  end
415
447
 
416
448
  it 'should get conditional statement of unless_mod' do
417
- node =
418
- parse_content("'OK' unless false").grep_node(sexp_type: :unless_mod)
449
+ node = parse_content("'OK' unless false").grep_node(sexp_type: :unless_mod)
419
450
  expect(node.conditional_statement.to_s).to eq 'false'
420
451
  end
421
452
 
@@ -427,9 +458,7 @@ describe Sexp do
427
458
 
428
459
  describe 'all_conditions' do
429
460
  it 'should get all conditions' do
430
- node =
431
- parse_content('user == current_user && user.valid? || user.admin?')
432
- .grep_node(sexp_type: :binary)
461
+ node = parse_content('user == current_user && user.valid? || user.admin?').grep_node(sexp_type: :binary)
433
462
  expect(node.all_conditions.size).to eq 3
434
463
  end
435
464
  end
@@ -463,8 +492,7 @@ describe Sexp do
463
492
  end
464
493
 
465
494
  it 'should get body of module' do
466
- node =
467
- parse_content('module Enumerable; end').grep_node(sexp_type: :module)
495
+ node = parse_content('module Enumerable; end').grep_node(sexp_type: :module)
468
496
  expect(node.body.sexp_type).to eq :bodystmt
469
497
  end
470
498
 
@@ -474,22 +502,17 @@ describe Sexp do
474
502
  end
475
503
 
476
504
  it 'should get body of elsif' do
477
- node =
478
- parse_content("if true; elsif true; 'OK'; end").grep_node(
479
- sexp_type: :elsif
480
- )
505
+ node = parse_content("if true; elsif true; 'OK'; end").grep_node(sexp_type: :elsif)
481
506
  expect(node.body.sexp_type).to eq :stmts_add
482
507
  end
483
508
 
484
509
  it 'should get body of unless' do
485
- node =
486
- parse_content("unless true; 'OK'; end").grep_node(sexp_type: :unless)
510
+ node = parse_content("unless true; 'OK'; end").grep_node(sexp_type: :unless)
487
511
  expect(node.body.sexp_type).to eq :stmts_add
488
512
  end
489
513
 
490
514
  it 'should get body of else' do
491
- node =
492
- parse_content("if true; else; 'OK'; end").grep_node(sexp_type: :else)
515
+ node = parse_content("if true; else; 'OK'; end").grep_node(sexp_type: :else)
493
516
  expect(node.body.sexp_type).to eq :stmts_add
494
517
  end
495
518
 
@@ -499,8 +522,7 @@ describe Sexp do
499
522
  end
500
523
 
501
524
  it 'should get body of unless_mod' do
502
- node =
503
- parse_content("'OK' unless false").grep_node(sexp_type: :unless_mod)
525
+ node = parse_content("'OK' unless false").grep_node(sexp_type: :unless_mod)
504
526
  expect(node.body.to_s).to eq 'OK'
505
527
  end
506
528
 
@@ -512,9 +534,7 @@ describe Sexp do
512
534
 
513
535
  describe 'block' do
514
536
  it 'sould get block of method_add_block node' do
515
- node =
516
- parse_content('resources :posts do; resources :comments; end')
517
- .grep_node(sexp_type: :method_add_block)
537
+ node = parse_content('resources :posts do; resources :comments; end').grep_node(sexp_type: :method_add_block)
518
538
  expect(node.block_node.sexp_type).to eq :do_block
519
539
  end
520
540
  end
@@ -522,40 +542,29 @@ describe Sexp do
522
542
  describe 'statements' do
523
543
  it 'should get statements of do_block node' do
524
544
  node =
525
- parse_content(
526
- 'resources :posts do; resources :comments; resources :like; end'
527
- )
528
- .grep_node(sexp_type: :do_block)
545
+ parse_content('resources :posts do; resources :comments; resources :like; end').grep_node(sexp_type: :do_block)
529
546
  expect(node.statements.size).to eq 2
530
547
  end
531
548
 
532
549
  it 'should get statements of bodystmt node' do
533
- node =
534
- parse_content('class User; def login?; end; def admin?; end; end')
535
- .grep_node(sexp_type: :bodystmt)
550
+ node = parse_content('class User; def login?; end; def admin?; end; end').grep_node(sexp_type: :bodystmt)
536
551
  expect(node.statements.size).to eq 2
537
552
  end
538
553
  end
539
554
 
540
555
  describe 'exception_classes' do
541
556
  it 'should get exception classes of rescue node' do
542
- node =
543
- parse_content('def test; rescue CustomException; end').grep_node(
544
- sexp_type: :rescue
545
- )
557
+ node = parse_content('def test; rescue CustomException; end').grep_node(sexp_type: :rescue)
546
558
  expect(node.exception_classes.first.to_s).to eq 'CustomException'
547
559
  end
548
560
 
549
561
  it 'should get empty of empty rescue node' do
550
- node =
551
- parse_content('def test; rescue; end').grep_node(sexp_type: :rescue)
562
+ node = parse_content('def test; rescue; end').grep_node(sexp_type: :rescue)
552
563
  expect(node.exception_classes.first.to_s).to eq ''
553
564
  end
554
565
 
555
566
  it 'should get exception classes of rescue node for multiple exceptions' do
556
- node =
557
- parse_content('def test; rescue StandardError, CustomException; end')
558
- .grep_node(sexp_type: :rescue)
567
+ node = parse_content('def test; rescue StandardError, CustomException; end').grep_node(sexp_type: :rescue)
559
568
  expect(node.exception_classes.first.to_s).to eq 'StandardError'
560
569
  expect(node.exception_classes.last.to_s).to eq 'CustomException'
561
570
  end
@@ -563,36 +572,28 @@ describe Sexp do
563
572
 
564
573
  describe 'exception_variable' do
565
574
  it 'should get exception varible of rescue node' do
566
- node =
567
- parse_content('def test; rescue => e; end').grep_node(
568
- sexp_type: :rescue
569
- )
575
+ node = parse_content('def test; rescue => e; end').grep_node(sexp_type: :rescue)
570
576
  expect(node.exception_variable.to_s).to eq 'e'
571
577
  end
572
578
 
573
579
  it 'should get empty of empty rescue node' do
574
- node =
575
- parse_content('def test; rescue; end').grep_node(sexp_type: :rescue)
580
+ node = parse_content('def test; rescue; end').grep_node(sexp_type: :rescue)
576
581
  expect(node.exception_variable.to_s).to eq ''
577
582
  end
578
583
  end
579
584
 
580
585
  describe 'hash_value' do
581
586
  it 'should get value for hash node' do
582
- node =
583
- parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(
584
- sexp_type: :hash
585
- )
587
+ node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(sexp_type: :hash)
586
588
  expect(node.hash_value('first_name').to_s).to eq 'Richard'
587
589
  expect(node.hash_value('last_name').to_s).to eq 'Huang'
588
590
  end
589
591
 
590
592
  it 'should get value for bare_assoc_hash' do
591
593
  node =
592
- parse_content(
593
- "add_user :user, first_name: 'Richard', last_name: 'Huang'"
594
+ parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(
595
+ sexp_type: :bare_assoc_hash
594
596
  )
595
- .grep_node(sexp_type: :bare_assoc_hash)
596
597
  expect(node.hash_value('first_name').to_s).to eq 'Richard'
597
598
  expect(node.hash_value('last_name').to_s).to eq 'Huang'
598
599
  end
@@ -600,67 +601,52 @@ describe Sexp do
600
601
 
601
602
  describe 'hash_size' do
602
603
  it 'should get value for hash node' do
603
- node =
604
- parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(
605
- sexp_type: :hash
606
- )
604
+ node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(sexp_type: :hash)
607
605
  expect(node.hash_size).to eq 2
608
606
  end
609
607
 
610
608
  it 'should get value for bare_assoc_hash' do
611
609
  node =
612
- parse_content(
613
- "add_user :user, first_name: 'Richard', last_name: 'Huang'"
610
+ parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(
611
+ sexp_type: :bare_assoc_hash
614
612
  )
615
- .grep_node(sexp_type: :bare_assoc_hash)
616
613
  expect(node.hash_size).to eq 2
617
614
  end
618
615
  end
619
616
 
620
617
  describe 'hash_keys' do
621
618
  it 'should get hash_keys for hash node' do
622
- node =
623
- parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(
624
- sexp_type: :hash
625
- )
619
+ node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(sexp_type: :hash)
626
620
  expect(node.hash_keys).to eq %w[first_name last_name]
627
621
  end
628
622
 
629
623
  it 'should get hash_keys for bare_assoc_hash' do
630
624
  node =
631
- parse_content(
632
- "add_user :user, first_name: 'Richard', last_name: 'Huang'"
625
+ parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(
626
+ sexp_type: :bare_assoc_hash
633
627
  )
634
- .grep_node(sexp_type: :bare_assoc_hash)
635
628
  expect(node.hash_keys).to eq %w[first_name last_name]
636
629
  end
637
630
  end
638
631
 
639
632
  describe 'hash_values' do
640
633
  it 'should get hash_values for hash node' do
641
- node =
642
- parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(
643
- sexp_type: :hash
644
- )
634
+ node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(sexp_type: :hash)
645
635
  expect(node.hash_values.map(&:to_s)).to eq %w[Richard Huang]
646
636
  end
647
637
 
648
638
  it 'should get hash_values for bare_assoc_hash' do
649
639
  node =
650
- parse_content(
651
- "add_user :user, first_name: 'Richard', last_name: 'Huang'"
640
+ parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(
641
+ sexp_type: :bare_assoc_hash
652
642
  )
653
- .grep_node(sexp_type: :bare_assoc_hash)
654
643
  expect(node.hash_values.map(&:to_s)).to eq %w[Richard Huang]
655
644
  end
656
645
  end
657
646
 
658
647
  describe 'array_size' do
659
648
  it 'should get array size' do
660
- node =
661
- parse_content("['first_name', 'last_name']").grep_node(
662
- sexp_type: :array
663
- )
649
+ node = parse_content("['first_name', 'last_name']").grep_node(sexp_type: :array)
664
650
  expect(node.array_size).to eq 2
665
651
  end
666
652
 
@@ -672,10 +658,7 @@ describe Sexp do
672
658
 
673
659
  describe 'array_values' do
674
660
  it 'should get array values' do
675
- node =
676
- parse_content("['first_name', 'last_name']").grep_node(
677
- sexp_type: :array
678
- )
661
+ node = parse_content("['first_name', 'last_name']").grep_node(sexp_type: :array)
679
662
  expect(node.array_values.map(&:to_s)).to eq %w[first_name last_name]
680
663
  end
681
664
 
@@ -685,8 +668,7 @@ describe Sexp do
685
668
  end
686
669
 
687
670
  it 'should get array value with array and words_add' do
688
- node =
689
- parse_content('%W{day week fortnight}').grep_node(sexp_type: :array)
671
+ node = parse_content('%W{day week fortnight}').grep_node(sexp_type: :array)
690
672
  expect(node.array_values.map(&:to_s)).to eq %w[day week fortnight]
691
673
  end
692
674
 
@@ -696,8 +678,7 @@ describe Sexp do
696
678
  end
697
679
 
698
680
  it 'should get array value with array and qwords_add' do
699
- node =
700
- parse_content('%w(first_name last_name)').grep_node(sexp_type: :array)
681
+ node = parse_content('%w(first_name last_name)').grep_node(sexp_type: :array)
701
682
  expect(node.array_values.map(&:to_s)).to eq %w[first_name last_name]
702
683
  end
703
684
 
@@ -708,8 +689,7 @@ describe Sexp do
708
689
 
709
690
  if RUBY_VERSION.to_i > 1
710
691
  it 'should get array value with array and symbols_add' do
711
- node =
712
- parse_content('%I(first_name last_name)').grep_node(sexp_type: :array)
692
+ node = parse_content('%I(first_name last_name)').grep_node(sexp_type: :array)
713
693
  expect(node.array_values.map(&:to_s)).to eq %w[first_name last_name]
714
694
  end
715
695
 
@@ -719,8 +699,7 @@ describe Sexp do
719
699
  end
720
700
 
721
701
  it 'should get array value with array and qsymbols_add' do
722
- node =
723
- parse_content('%i(first_name last_name)').grep_node(sexp_type: :array)
702
+ node = parse_content('%i(first_name last_name)').grep_node(sexp_type: :array)
724
703
  expect(node.array_values.map(&:to_s)).to eq %w[first_name last_name]
725
704
  end
726
705
 
@@ -733,9 +712,7 @@ describe Sexp do
733
712
 
734
713
  describe 'alias' do
735
714
  context 'method' do
736
- before do
737
- @node = parse_content('alias new old').grep_node(sexp_type: :alias)
738
- end
715
+ before { @node = parse_content('alias new old').grep_node(sexp_type: :alias) }
739
716
 
740
717
  it 'should get old_method' do
741
718
  expect(@node.old_method.to_s).to eq 'old'
@@ -747,9 +724,7 @@ describe Sexp do
747
724
  end
748
725
 
749
726
  context 'symbol' do
750
- before do
751
- @node = parse_content('alias :new :old').grep_node(sexp_type: :alias)
752
- end
727
+ before { @node = parse_content('alias :new :old').grep_node(sexp_type: :alias) }
753
728
 
754
729
  it 'should get old_method' do
755
730
  expect(@node.old_method.to_s).to eq 'old'
@@ -763,10 +738,7 @@ describe Sexp do
763
738
 
764
739
  describe 'to_object' do
765
740
  it 'should to array' do
766
- node =
767
- parse_content("['first_name', 'last_name']").grep_node(
768
- sexp_type: :array
769
- )
741
+ node = parse_content("['first_name', 'last_name']").grep_node(sexp_type: :array)
770
742
  expect(node.to_object).to eq %w[first_name last_name]
771
743
  end
772
744
 
@@ -776,8 +748,7 @@ describe Sexp do
776
748
  end
777
749
 
778
750
  it 'should to array with symbols' do
779
- node =
780
- parse_content('[:first_name, :last_name]').grep_node(sexp_type: :array)
751
+ node = parse_content('[:first_name, :last_name]').grep_node(sexp_type: :array)
781
752
  expect(node.to_object).to eq %w[first_name last_name]
782
753
  end
783
754
 
@@ -819,16 +790,12 @@ describe Sexp do
819
790
  end
820
791
 
821
792
  it 'should get to_s for class with module' do
822
- node =
823
- parse_content('ActiveRecord::Base').grep_node(
824
- sexp_type: :const_path_ref
825
- )
793
+ node = parse_content('ActiveRecord::Base').grep_node(sexp_type: :const_path_ref)
826
794
  expect(node.to_s).to eq 'ActiveRecord::Base'
827
795
  end
828
796
 
829
797
  it 'should get to_s for label' do
830
- node =
831
- parse_content("{first_name: 'Richard'}").grep_node(sexp_type: :@label)
798
+ node = parse_content("{first_name: 'Richard'}").grep_node(sexp_type: :@label)
832
799
  expect(node.to_s).to eq 'first_name'
833
800
  end
834
801
 
@@ -876,15 +843,11 @@ describe Sexp do
876
843
 
877
844
  describe 'remove_line_and_column' do
878
845
  it 'should remove' do
879
- s(:@ident, 'test', s(2, 12)).remove_line_and_column.should_equal s(
880
- :@ident,
881
- 'test'
882
- )
846
+ s(:@ident, 'test', s(2, 12)).remove_line_and_column.should_equal s(:@ident, 'test')
883
847
  end
884
848
 
885
849
  it 'should remove child nodes' do
886
- s(:const_ref, s(:@const, 'Demo', s(1, 12)))
887
- .remove_line_and_column.should_equal s(:const_def, s(:@const, 'Demo'))
850
+ s(:const_ref, s(:@const, 'Demo', s(1, 12))).remove_line_and_column.should_equal s(:const_def, s(:@const, 'Demo'))
888
851
  end
889
852
  end
890
853
  end
@@ -1,15 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module CodeAnalyzer
4
6
  describe Warning do
5
7
  it 'should return error with filename, line number and message' do
6
8
  expect(
7
- Warning.new(
8
- filename: 'app/models/user.rb',
9
- line_number: '100',
10
- message: 'not good'
11
- )
12
- .to_s
9
+ Warning.new(filename: 'app/models/user.rb', line_number: '100', message: 'not good').to_s
13
10
  ).to eq 'app/models/user.rb:100 - not good'
14
11
  end
15
12
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
5
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_analyzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-28 00:00:00.000000000 Z
11
+ date: 2020-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sexp_processor
@@ -91,7 +91,7 @@ homepage: https://github.com/flyerhzm/code_analyzer
91
91
  licenses:
92
92
  - MIT
93
93
  metadata: {}
94
- post_install_message:
94
+ post_install_message:
95
95
  rdoc_options: []
96
96
  require_paths:
97
97
  - lib
@@ -106,8 +106,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
108
  requirements: []
109
- rubygems_version: 3.0.3
110
- signing_key:
109
+ rubygems_version: 3.1.2
110
+ signing_key:
111
111
  specification_version: 4
112
112
  summary: a code analyzer helps you build your own code analyzer tool.
113
113
  test_files: