fasterer 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.fasterer.yml +4 -0
- data/README.md +3 -0
- data/fasterer.gemspec +1 -0
- data/lib/fasterer/file_traverser.rb +31 -27
- data/lib/fasterer/method_call.rb +4 -22
- data/lib/fasterer/method_definition.rb +57 -11
- data/lib/fasterer/offense.rb +8 -2
- data/lib/fasterer/rescue_call.rb +0 -11
- data/lib/fasterer/scanners/method_definition_scanner.rb +34 -0
- data/lib/fasterer/version.rb +1 -1
- data/spec/lib/fasterer/analyzer/{04_find_vs_bsearch_spec.rb → 26_getter_vs_attr_reader_spec.rb} +3 -3
- data/spec/lib/fasterer/analyzer/27_setter_vs_attr_writer_spec.rb +12 -0
- data/spec/spec_helper.rb +2 -1
- data/spec/support/analyzer/26_getter_vs_attr_reader.rb +16 -0
- data/spec/support/analyzer/27_setter_vs_attr_writer.rb +13 -0
- metadata +24 -6
- data/spec/support/analyzer/04_find_vs_bsearch.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9166a1cbd984ee3e8af00277252f430d7efcc817
|
4
|
+
data.tar.gz: 35ec0f0a4953e38f0145106c3523622461e9467c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f9774ae496a60c30b619155a53e1cf306ee1beed19e63fb601e4de2a40e3c435c0352daafeeb6d3de19ee7b9fde694d3493089cf36901197be939d80e376ca5
|
7
|
+
data.tar.gz: 0bac8bc68e9f4d5032d12d9dd29a8b4cc99efc59338aefe15a262590f955fb97f2af2ed4cb6b25b0502992f48cc1b4e983d54aee2879789c81b9a1c9442073e3
|
data/.fasterer.yml
CHANGED
data/README.md
CHANGED
data/fasterer.gemspec
CHANGED
@@ -7,50 +7,50 @@ require_relative 'analyzer'
|
|
7
7
|
module Fasterer
|
8
8
|
class FileTraverser
|
9
9
|
|
10
|
-
CONFIG_FILE_NAME
|
11
|
-
|
12
|
-
SPEEDUPS_KEY = 'speedups'
|
13
|
-
|
10
|
+
CONFIG_FILE_NAME = '.fasterer.yml'
|
11
|
+
SPEEDUPS_KEY = 'speedups'
|
14
12
|
EXCLUDE_PATHS_KEY = 'exclude_paths'
|
15
13
|
|
16
|
-
attr_reader :ignored_speedups, :ignored_paths
|
17
|
-
|
18
14
|
def initialize(path)
|
19
15
|
@path = Pathname(path)
|
20
16
|
@parse_error_paths = []
|
21
|
-
set_ignored_speedups
|
22
|
-
set_ignored_paths
|
23
17
|
end
|
24
18
|
|
25
19
|
def traverse
|
26
20
|
if @path.directory?
|
27
|
-
|
21
|
+
scannable_files.each { |ruby_file| scan_file(ruby_file) }
|
28
22
|
else
|
29
23
|
scan_file(@path)
|
30
24
|
end
|
31
25
|
output_parse_errors if parse_error_paths.any?
|
32
26
|
end
|
33
27
|
|
34
|
-
def
|
35
|
-
@ignored_speedups
|
36
|
-
config_file[SPEEDUPS_KEY].select {|_, value| value == false }.keys.map(&:to_sym)
|
37
|
-
end || []
|
28
|
+
def ignored_speedups
|
29
|
+
@ignored_speedups ||=
|
30
|
+
config_file[SPEEDUPS_KEY].select { |_, value| value == false }.keys.map(&:to_sym)
|
38
31
|
end
|
39
32
|
|
40
|
-
def
|
41
|
-
@
|
42
|
-
config_file[EXCLUDE_PATHS_KEY].flat_map {|path| Dir[path] }
|
43
|
-
end || []
|
33
|
+
def ignored_files
|
34
|
+
@ignored_files ||=
|
35
|
+
config_file[EXCLUDE_PATHS_KEY].flat_map { |path| Dir[path] }
|
44
36
|
end
|
45
37
|
|
46
38
|
def config_file
|
47
|
-
File.exists?(CONFIG_FILE_NAME)
|
39
|
+
@config_file ||= if File.exists?(CONFIG_FILE_NAME)
|
40
|
+
YAML.load_file(CONFIG_FILE_NAME)
|
41
|
+
else
|
42
|
+
nil_config_file
|
43
|
+
end
|
48
44
|
end
|
49
45
|
|
50
46
|
private
|
51
47
|
|
52
48
|
attr_reader :parse_error_paths
|
53
49
|
|
50
|
+
def nil_config_file
|
51
|
+
{ SPEEDUPS_KEY => {}, EXCLUDE_PATHS_KEY => [] }
|
52
|
+
end
|
53
|
+
|
54
54
|
def scan_file(path)
|
55
55
|
analyzer = Analyzer.new(path)
|
56
56
|
analyzer.scan
|
@@ -60,12 +60,13 @@ module Fasterer
|
|
60
60
|
output(analyzer) if offenses_grouped_by_type(analyzer).any?
|
61
61
|
end
|
62
62
|
|
63
|
-
def
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
63
|
+
def scannable_files
|
64
|
+
all_files - ignored_files
|
65
|
+
end
|
66
|
+
|
67
|
+
def all_files
|
68
|
+
Dir["#{@path}/**/*.rb"].map do |ruby_file_path|
|
69
|
+
Pathname(ruby_file_path).relative_path_from(@path).to_s
|
69
70
|
end
|
70
71
|
end
|
71
72
|
|
@@ -73,20 +74,23 @@ module Fasterer
|
|
73
74
|
puts analyzer.file_path.colorize(:red)
|
74
75
|
|
75
76
|
offenses_grouped_by_type(analyzer).each do |error_group_name, error_occurences|
|
76
|
-
puts "#{Fasterer::Offense::EXPLANATIONS[error_group_name]}.
|
77
|
+
puts "#{Fasterer::Offense::EXPLANATIONS[error_group_name]}."\
|
78
|
+
" Occurred at lines: #{error_occurences.map(&:line_number).join(', ')}."
|
77
79
|
end
|
78
80
|
|
79
81
|
puts
|
80
82
|
end
|
81
83
|
|
82
84
|
def offenses_grouped_by_type(analyzer)
|
83
|
-
analyzer.errors.group_by(&:name).delete_if
|
85
|
+
analyzer.errors.group_by(&:name).delete_if do |offense_name, _|
|
86
|
+
ignored_speedups.include?(offense_name)
|
87
|
+
end
|
84
88
|
end
|
85
89
|
|
86
90
|
def output_parse_errors
|
87
91
|
puts 'Fasterer was unable to process some files because the'
|
88
92
|
puts 'internal parser is not able to read some characters or'
|
89
|
-
puts 'has
|
93
|
+
puts 'has timed out. Unprocessable files were:'
|
90
94
|
puts '-----------------------------------------------------'
|
91
95
|
puts parse_error_paths
|
92
96
|
puts
|
data/lib/fasterer/method_call.rb
CHANGED
@@ -42,8 +42,6 @@ module Fasterer
|
|
42
42
|
@element
|
43
43
|
when :iter
|
44
44
|
@element[1]
|
45
|
-
else
|
46
|
-
fail '!!!!!!!'
|
47
45
|
end
|
48
46
|
end
|
49
47
|
|
@@ -77,33 +75,17 @@ module Fasterer
|
|
77
75
|
element[2].drop(1).map { |argument| argument }
|
78
76
|
end || []
|
79
77
|
end
|
80
|
-
|
81
|
-
def token
|
82
|
-
element[0]
|
83
|
-
end
|
84
78
|
end
|
85
79
|
|
86
|
-
# For now, used for determening if
|
87
|
-
#
|
80
|
+
# For now, used for determening if the
|
81
|
+
# receiver is a reference or a method call.
|
88
82
|
class ReceiverFactory
|
89
|
-
attr_reader :name
|
90
|
-
attr_reader :method
|
91
|
-
|
92
83
|
def self.new(receiver_info)
|
93
|
-
return
|
94
|
-
token = receiver_info.first
|
84
|
+
return unless receiver_info.is_a?(Sexp)
|
95
85
|
|
96
|
-
case
|
86
|
+
case receiver_info.sexp_type
|
97
87
|
when :lvar
|
98
88
|
return VariableReference.new(receiver_info)
|
99
|
-
when :method_add_arg, :method_add_block
|
100
|
-
case receiver_info[1][0]
|
101
|
-
when :call, :fcall
|
102
|
-
return MethodCall.new(receiver_info[1])
|
103
|
-
else
|
104
|
-
# binding.pry watch out for :method_add_arg
|
105
|
-
# raise 'nije ni metoda'
|
106
|
-
end
|
107
89
|
when :call, :iter
|
108
90
|
return MethodCall.new(receiver_info)
|
109
91
|
end
|
@@ -4,34 +4,40 @@ module Fasterer
|
|
4
4
|
attr_reader :method_name
|
5
5
|
attr_reader :block_argument_name
|
6
6
|
attr_reader :body
|
7
|
+
attr_reader :arguments
|
8
|
+
|
9
|
+
alias_method :name, :method_name
|
7
10
|
|
8
11
|
def initialize(element)
|
9
12
|
@element = element # Ripper element
|
10
13
|
set_method_name
|
11
14
|
set_body
|
12
|
-
|
13
|
-
|
14
|
-
set_argument_names
|
15
|
-
set_block_argument_name
|
16
|
-
end
|
15
|
+
set_arguments
|
16
|
+
set_block_argument_name
|
17
17
|
end
|
18
18
|
|
19
19
|
def has_block?
|
20
20
|
!!@block_argument_name
|
21
21
|
end
|
22
22
|
|
23
|
+
def setter?
|
24
|
+
name.to_s.end_with?('=')
|
25
|
+
end
|
26
|
+
|
23
27
|
private
|
24
28
|
|
25
29
|
def arguments_element
|
26
|
-
element[2].drop(1)
|
30
|
+
element[2].drop(1) || []
|
27
31
|
end
|
28
32
|
|
29
33
|
def set_method_name
|
30
34
|
@method_name = @element[1]
|
31
35
|
end
|
32
36
|
|
33
|
-
def
|
34
|
-
|
37
|
+
def set_arguments
|
38
|
+
@arguments = arguments_element.map do |argument_element|
|
39
|
+
MethodDefinitionArgument.new(argument_element)
|
40
|
+
end
|
35
41
|
end
|
36
42
|
|
37
43
|
def set_body
|
@@ -39,13 +45,53 @@ module Fasterer
|
|
39
45
|
end
|
40
46
|
|
41
47
|
def set_block_argument_name
|
42
|
-
if
|
43
|
-
@block_argument_name =
|
48
|
+
if last_argument_element.to_s.start_with?('&')
|
49
|
+
@block_argument_name = last_argument_element.to_s[1..-1].to_sym
|
44
50
|
end
|
45
51
|
end
|
46
52
|
|
47
|
-
def
|
53
|
+
def last_argument_element
|
48
54
|
arguments_element.last
|
49
55
|
end
|
50
56
|
end
|
57
|
+
|
58
|
+
class MethodDefinitionArgument
|
59
|
+
|
60
|
+
attr_reader :element, :name, :type
|
61
|
+
|
62
|
+
def initialize(element)
|
63
|
+
@element = element
|
64
|
+
set_name
|
65
|
+
set_argument_type
|
66
|
+
end
|
67
|
+
|
68
|
+
def regular_argument?
|
69
|
+
@type == :regular_argument
|
70
|
+
end
|
71
|
+
|
72
|
+
def default_argument?
|
73
|
+
@type == :default_argument
|
74
|
+
end
|
75
|
+
|
76
|
+
def keyword_argument?
|
77
|
+
@type == :keyword_argument
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def set_name
|
83
|
+
@name = element.is_a?(Symbol) ? element : element[1]
|
84
|
+
end
|
85
|
+
|
86
|
+
def set_argument_type
|
87
|
+
@type = if element.is_a?(Symbol)
|
88
|
+
:regular_argument
|
89
|
+
elsif element.is_a?(Sexp) && element.sexp_type == :lasgn
|
90
|
+
:default_argument
|
91
|
+
elsif element.is_a?(Sexp) && element.sexp_type == :kwarg
|
92
|
+
:keyword_argument
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
51
97
|
end
|
data/lib/fasterer/offense.rb
CHANGED
@@ -38,7 +38,7 @@ module Fasterer
|
|
38
38
|
'Array#map.flatten(1) is slower than Array#flat_map',
|
39
39
|
|
40
40
|
reverse_each_vs_reverse_each:
|
41
|
-
'Array#
|
41
|
+
'Array#reverse.each is slower than Array#reverse_each',
|
42
42
|
|
43
43
|
select_first_vs_detect:
|
44
44
|
'Array#select.first is slower than Array#detect',
|
@@ -65,7 +65,13 @@ module Fasterer
|
|
65
65
|
'Using tr is faster than gsub when replacing a single character in a string with another single character',
|
66
66
|
|
67
67
|
select_last_vs_reverse_detect:
|
68
|
-
'Array#select.last is slower than Array#reverse.detect'
|
68
|
+
'Array#select.last is slower than Array#reverse.detect',
|
69
|
+
|
70
|
+
getter_vs_attr_reader:
|
71
|
+
'Use attr_reader for reading ivars',
|
72
|
+
|
73
|
+
setter_vs_attr_writer:
|
74
|
+
'Use attr_writer for writing to ivars'
|
69
75
|
}
|
70
76
|
|
71
77
|
end
|
data/lib/fasterer/rescue_call.rb
CHANGED
@@ -21,16 +21,5 @@ module Fasterer
|
|
21
21
|
end.compact
|
22
22
|
end
|
23
23
|
|
24
|
-
def set_multiple_rescue_classes
|
25
|
-
@rescue_classes = element[1].drop(1).map do |rescue_reference|
|
26
|
-
rescue_reference.flatten[2]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def set_single_rescue_class
|
31
|
-
if element[1][0][0] == :var_ref
|
32
|
-
@rescue_classes = Array(element[1][0][1][1])
|
33
|
-
end
|
34
|
-
end
|
35
24
|
end
|
36
25
|
end
|
@@ -19,6 +19,8 @@ module Fasterer
|
|
19
19
|
def check_offense
|
20
20
|
if method_definition.has_block?
|
21
21
|
scan_block_call_offense
|
22
|
+
else
|
23
|
+
scan_getter_and_setter_offense
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
@@ -48,5 +50,37 @@ module Fasterer
|
|
48
50
|
traverse_tree(element, &block)
|
49
51
|
end
|
50
52
|
end
|
53
|
+
|
54
|
+
def scan_getter_and_setter_offense
|
55
|
+
method_definition.setter? ? scan_setter_offense : scan_getter_offense
|
56
|
+
end
|
57
|
+
|
58
|
+
def scan_setter_offense
|
59
|
+
return if method_definition.arguments.size != 1
|
60
|
+
return if method_definition.body.size != 1
|
61
|
+
|
62
|
+
first_argument = method_definition.arguments.first
|
63
|
+
return if first_argument.type != :regular_argument
|
64
|
+
|
65
|
+
if method_definition.body.first.sexp_type == :iasgn &&
|
66
|
+
method_definition.body.first[1].to_s == "@#{method_definition.name.to_s[0..-2]}" &&
|
67
|
+
method_definition.body.first[2][1] == first_argument.name
|
68
|
+
|
69
|
+
add_offense(:setter_vs_attr_writer)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def scan_getter_offense
|
74
|
+
return if method_definition.arguments.size > 0
|
75
|
+
return if method_definition.body.size != 1
|
76
|
+
|
77
|
+
if method_definition.body.first.sexp_type == :ivar &&
|
78
|
+
method_definition.body.first[1].to_s == "@#{method_definition.name}"
|
79
|
+
|
80
|
+
add_offense(:getter_vs_attr_reader)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
51
84
|
end
|
85
|
+
|
52
86
|
end
|
data/lib/fasterer/version.rb
CHANGED
data/spec/lib/fasterer/analyzer/{04_find_vs_bsearch_spec.rb → 26_getter_vs_attr_reader_spec.rb}
RENAMED
@@ -2,11 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Fasterer::Analyzer do
|
4
4
|
|
5
|
-
let(:test_file_path) { RSpec.root.join('support', 'analyzer', '
|
5
|
+
let(:test_file_path) { RSpec.root.join('support', 'analyzer', '26_getter_vs_attr_reader.rb') }
|
6
6
|
|
7
|
-
|
7
|
+
it 'should detect 2 getters' do
|
8
8
|
analyzer = Fasterer::Analyzer.new(test_file_path)
|
9
9
|
analyzer.scan
|
10
|
-
|
10
|
+
expect(analyzer.errors[:getter_vs_attr_reader].count).to eq(2)
|
11
11
|
end
|
12
12
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Fasterer::Analyzer do
|
4
|
+
|
5
|
+
let(:test_file_path) { RSpec.root.join('support', 'analyzer', '27_setter_vs_attr_writer.rb') }
|
6
|
+
|
7
|
+
it 'should detect 2 setters' do
|
8
|
+
analyzer = Fasterer::Analyzer.new(test_file_path)
|
9
|
+
analyzer.scan
|
10
|
+
expect(analyzer.errors[:setter_vs_attr_writer].count).to eq(2)
|
11
|
+
end
|
12
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fasterer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damir Svrtan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.10'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.9'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.9'
|
97
111
|
description: Use Fasterer to check various places in your code that could be faster.
|
98
112
|
email:
|
99
113
|
- damir.svrtan@gmail.com
|
@@ -133,7 +147,6 @@ files:
|
|
133
147
|
- spec/lib/fasterer/analyzer/01_parallel_assignment_spec.rb
|
134
148
|
- spec/lib/fasterer/analyzer/02_rescue_vs_respond_to_spec.rb
|
135
149
|
- spec/lib/fasterer/analyzer/03_module_eval_spec.rb
|
136
|
-
- spec/lib/fasterer/analyzer/04_find_vs_bsearch_spec.rb
|
137
150
|
- spec/lib/fasterer/analyzer/06_shuffle_first_vs_sample_spec.rb
|
138
151
|
- spec/lib/fasterer/analyzer/08_for_loop_vs_each_spec.rb
|
139
152
|
- spec/lib/fasterer/analyzer/09_each_with_index_vs_while_spec.rb
|
@@ -148,6 +161,8 @@ files:
|
|
148
161
|
- spec/lib/fasterer/analyzer/19_proc_call_vs_yield_spec.rb
|
149
162
|
- spec/lib/fasterer/analyzer/24_gsub_vs_tr_spec.rb
|
150
163
|
- spec/lib/fasterer/analyzer/25_select_last_vs_reverse_detect_spec.rb
|
164
|
+
- spec/lib/fasterer/analyzer/26_getter_vs_attr_reader_spec.rb
|
165
|
+
- spec/lib/fasterer/analyzer/27_setter_vs_attr_writer_spec.rb
|
151
166
|
- spec/lib/fasterer/analyzer/98_misc_spec.rb
|
152
167
|
- spec/lib/fasterer/analyzer/99_exceptional_files_spec.rb
|
153
168
|
- spec/lib/fasterer/method_call_spec.rb
|
@@ -157,7 +172,6 @@ files:
|
|
157
172
|
- spec/support/analyzer/01_parallel_assignment.rb
|
158
173
|
- spec/support/analyzer/02_rescue_vs_respond_to.rb
|
159
174
|
- spec/support/analyzer/03_module_eval.rb
|
160
|
-
- spec/support/analyzer/04_find_vs_bsearch.rb
|
161
175
|
- spec/support/analyzer/06_shuffle_first_vs_sample.rb
|
162
176
|
- spec/support/analyzer/08_for_loop_vs_each.rb
|
163
177
|
- spec/support/analyzer/09_each_with_index_vs_while.rb
|
@@ -172,6 +186,8 @@ files:
|
|
172
186
|
- spec/support/analyzer/19_proc_call_vs_yield.rb
|
173
187
|
- spec/support/analyzer/24_gsub_vs_tr.rb
|
174
188
|
- spec/support/analyzer/25_select_last_vs_reverse_detect.rb
|
189
|
+
- spec/support/analyzer/26_getter_vs_attr_reader.rb
|
190
|
+
- spec/support/analyzer/27_setter_vs_attr_writer.rb
|
175
191
|
- spec/support/analyzer/98_misc.rb
|
176
192
|
- spec/support/analyzer/99_exceptional_files.rb
|
177
193
|
- spec/support/binary_call/simple_comparison.rb
|
@@ -232,7 +248,6 @@ test_files:
|
|
232
248
|
- spec/lib/fasterer/analyzer/01_parallel_assignment_spec.rb
|
233
249
|
- spec/lib/fasterer/analyzer/02_rescue_vs_respond_to_spec.rb
|
234
250
|
- spec/lib/fasterer/analyzer/03_module_eval_spec.rb
|
235
|
-
- spec/lib/fasterer/analyzer/04_find_vs_bsearch_spec.rb
|
236
251
|
- spec/lib/fasterer/analyzer/06_shuffle_first_vs_sample_spec.rb
|
237
252
|
- spec/lib/fasterer/analyzer/08_for_loop_vs_each_spec.rb
|
238
253
|
- spec/lib/fasterer/analyzer/09_each_with_index_vs_while_spec.rb
|
@@ -247,6 +262,8 @@ test_files:
|
|
247
262
|
- spec/lib/fasterer/analyzer/19_proc_call_vs_yield_spec.rb
|
248
263
|
- spec/lib/fasterer/analyzer/24_gsub_vs_tr_spec.rb
|
249
264
|
- spec/lib/fasterer/analyzer/25_select_last_vs_reverse_detect_spec.rb
|
265
|
+
- spec/lib/fasterer/analyzer/26_getter_vs_attr_reader_spec.rb
|
266
|
+
- spec/lib/fasterer/analyzer/27_setter_vs_attr_writer_spec.rb
|
250
267
|
- spec/lib/fasterer/analyzer/98_misc_spec.rb
|
251
268
|
- spec/lib/fasterer/analyzer/99_exceptional_files_spec.rb
|
252
269
|
- spec/lib/fasterer/method_call_spec.rb
|
@@ -256,7 +273,6 @@ test_files:
|
|
256
273
|
- spec/support/analyzer/01_parallel_assignment.rb
|
257
274
|
- spec/support/analyzer/02_rescue_vs_respond_to.rb
|
258
275
|
- spec/support/analyzer/03_module_eval.rb
|
259
|
-
- spec/support/analyzer/04_find_vs_bsearch.rb
|
260
276
|
- spec/support/analyzer/06_shuffle_first_vs_sample.rb
|
261
277
|
- spec/support/analyzer/08_for_loop_vs_each.rb
|
262
278
|
- spec/support/analyzer/09_each_with_index_vs_while.rb
|
@@ -271,6 +287,8 @@ test_files:
|
|
271
287
|
- spec/support/analyzer/19_proc_call_vs_yield.rb
|
272
288
|
- spec/support/analyzer/24_gsub_vs_tr.rb
|
273
289
|
- spec/support/analyzer/25_select_last_vs_reverse_detect.rb
|
290
|
+
- spec/support/analyzer/26_getter_vs_attr_reader.rb
|
291
|
+
- spec/support/analyzer/27_setter_vs_attr_writer.rb
|
274
292
|
- spec/support/analyzer/98_misc.rb
|
275
293
|
- spec/support/analyzer/99_exceptional_files.rb
|
276
294
|
- spec/support/binary_call/simple_comparison.rb
|