fasterer 0.7.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -12
- data/CHANGELOG.md +20 -0
- data/README.md +4 -0
- data/fasterer.gemspec +5 -3
- data/lib/fasterer/file_traverser.rb +3 -1
- data/lib/fasterer/method_call.rb +5 -1
- data/lib/fasterer/scanners/method_call_scanner.rb +3 -1
- data/lib/fasterer/version.rb +1 -1
- data/spec/lib/fasterer/analyzer/18_block_vs_symbol_to_proc_spec.rb +2 -2
- data/spec/lib/fasterer/file_traverser_spec.rb +2 -2
- data/spec/lib/fasterer/method_call_spec.rb +32 -0
- data/spec/support/analyzer/18_block_vs_symbol_to_proc.rb +8 -0
- metadata +18 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24d522bf41231bb1eff1b4faf51c4f48215d5c4b6fa2581efec4d75ce19feb1d
|
4
|
+
data.tar.gz: 5997ab2be30bb4bc96eca571d29d51f850ceefc722c6dfcbc407478e973d5aa4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5ad546ff9c4e897789cf2dbfec220a44005668d47e75306a55b936c8171721c6fb207e0b471875fc7ec751ca9744da0f9f129f48edfed8e1d9538598f266690
|
7
|
+
data.tar.gz: 48eba96dd7a96967e0c7639b6e0c5d1acf031b4fa39a362a8af182a1481c9d1067e14f4fcd022eebc8ab404af728f351af111ec7ab6a7c30e5c3f46f9b828374
|
data/.travis.yml
CHANGED
@@ -2,23 +2,13 @@ language: ruby
|
|
2
2
|
before_install:
|
3
3
|
- gem update bundler
|
4
4
|
rvm:
|
5
|
-
- 1.9.3
|
6
|
-
- 2.0.0
|
7
|
-
- 2.1.7
|
8
5
|
- 2.2.3
|
9
6
|
- 2.3.0
|
10
7
|
- 2.4.0
|
11
8
|
- 2.5.0
|
12
9
|
- 2.6.0
|
10
|
+
- 2.7.0
|
11
|
+
- 3.0.0
|
13
12
|
env:
|
14
13
|
global:
|
15
14
|
secure: MBTxmpWCjrsNKPlOoFwJUMHze3GPMz8YCXQFQG3zJBh3WGNQnz4z91ra/1P/DClyVCxHGSFCOswxCNe4kJ2zAnPyQLqGSinXy9uDpqZQUEdaRoQbPnh4/bguZNSJ429gtTpMdDSNOgQ+Hra2EFnWwHA+rLF6ImksMsu3XGKGxGE=
|
16
|
-
- CC_TEST_REPORTER_ID=86c5edffe4c38e16cb1467e3220a4f3dfa0a0ac8fa6ee8fddd62e200245f4b77
|
17
|
-
before_script:
|
18
|
-
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
19
|
-
- chmod +x ./cc-test-reporter
|
20
|
-
- ./cc-test-reporter before-build
|
21
|
-
script:
|
22
|
-
- bundle exec rspec
|
23
|
-
after_script:
|
24
|
-
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,25 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.9.0
|
4
|
+
|
5
|
+
- Ruby 3 support! Merged in [#85](https://github.com/DamirSvrtan/fasterer/pull/85), a PR that relaxed Ruby version constraints and added a minor change to support Ruby 3.0. Thanks to [swiknaba](https://github.com/swiknaba).
|
6
|
+
|
7
|
+
## 0.8.3
|
8
|
+
|
9
|
+
- Merged in [#79](https://github.com/DamirSvrtan/fasterer/pull/79), a PR that makes sure the output is green when there are no failures.
|
10
|
+
|
11
|
+
## 0.8.2
|
12
|
+
|
13
|
+
- Fixes [#77](https://github.com/DamirSvrtan/fasterer/issues/77). An error occurs on the symbol to proc check when somebody invokes a method with no arguments on an array or range inside of the inspected block. Seems like a bug in the inspected code, but nevertheless it is a code path we need to support.
|
14
|
+
|
15
|
+
## 0.8.1
|
16
|
+
|
17
|
+
- Ignore lambda literals when checking symbol to proc. Thanks to [kiyot](https://github.com/kiyot) for his fix in PR [#74](https://github.com/DamirSvrtan/fasterer/pull/74).
|
18
|
+
|
19
|
+
## 0.8.0
|
20
|
+
|
21
|
+
- Dropped support for ruby versions below 2.2.0 and locks ruby_parser to be above or equal to 1.14.1. The new ruby_parser version 1.14.1 explicitly [requires ruby versions above 2.2.0](https://github.com/seattlerb/ruby_parser/issues/298#issuecomment-539795933), so this affects fasterer as well.
|
22
|
+
|
3
23
|
## 0.7.1
|
4
24
|
|
5
25
|
- Fix `check_symbol_to_proc` rule from crashing when there is no receiver [#67](https://github.com/DamirSvrtan/fasterer/pull/67)
|
data/README.md
CHANGED
@@ -100,6 +100,10 @@ as part of a larger framework.
|
|
100
100
|
[danger](https://github.com/danger/danger) framework for pull requests
|
101
101
|
on Github, Gitlab, and BitBucket.
|
102
102
|
|
103
|
+
* https://github.com/vk26/action-fasterer
|
104
|
+
|
105
|
+
Github-action for running fasterer via [reviewdog](https://github.com/reviewdog/reviewdog). Reviewdog provides a way to post review comments in pull requests.
|
106
|
+
|
103
107
|
## Speedups TODO:
|
104
108
|
|
105
109
|
4. find vs bsearch
|
data/fasterer.gemspec
CHANGED
@@ -18,12 +18,14 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
+
spec.required_ruby_version = '>= 2.2'
|
22
|
+
|
21
23
|
spec.add_dependency 'colorize', '~> 0.7'
|
22
|
-
spec.add_dependency 'ruby_parser', '>= 3.
|
24
|
+
spec.add_dependency 'ruby_parser', '>= 3.14.1'
|
23
25
|
|
24
26
|
spec.add_development_dependency 'bundler', '>= 1.6'
|
25
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
-
spec.add_development_dependency 'rspec', '~> 3.2'
|
27
27
|
spec.add_development_dependency 'pry', '~> 0.10'
|
28
|
+
spec.add_development_dependency 'rake', '>= 12.3.3'
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.2'
|
28
30
|
spec.add_development_dependency 'simplecov', '~> 0.9'
|
29
31
|
end
|
@@ -155,12 +155,14 @@ module Fasterer
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def offenses_found_output
|
158
|
+
color = @offenses_found_count.zero? ? :green : :red
|
158
159
|
"#{@offenses_found_count} #{pluralize(@offenses_found_count, 'offense')} detected"
|
159
|
-
.colorize(
|
160
|
+
.colorize(color)
|
160
161
|
end
|
161
162
|
|
162
163
|
def unparsable_files_output
|
163
164
|
return if @unparsable_files_count.zero?
|
165
|
+
|
164
166
|
"#{@unparsable_files_count} unparsable #{pluralize(@unparsable_files_count, 'file')} found"
|
165
167
|
.colorize(:red)
|
166
168
|
end
|
data/lib/fasterer/method_call.rb
CHANGED
@@ -125,13 +125,15 @@ module Fasterer
|
|
125
125
|
return if method_call.block_body.nil?
|
126
126
|
return unless method_call.block_body.sexp_type == :call
|
127
127
|
return if method_call.arguments.count > 0
|
128
|
+
return if method_call.lambda_literal?
|
128
129
|
|
129
130
|
body_method_call = MethodCall.new(method_call.block_body)
|
130
131
|
|
131
132
|
return unless body_method_call.arguments.count.zero?
|
132
133
|
return if body_method_call.has_block?
|
133
134
|
return if body_method_call.receiver.nil?
|
134
|
-
return
|
135
|
+
return if body_method_call.receiver.is_a?(Fasterer::Primitive)
|
136
|
+
return if body_method_call.receiver.name != method_call.block_argument_names.first
|
135
137
|
|
136
138
|
add_offense(:block_vs_symbol_to_proc)
|
137
139
|
end
|
data/lib/fasterer/version.rb
CHANGED
@@ -3,9 +3,9 @@ require 'spec_helper'
|
|
3
3
|
describe Fasterer::Analyzer do
|
4
4
|
let(:test_file_path) { RSpec.root.join('support', 'analyzer', '18_block_vs_symbol_to_proc.rb') }
|
5
5
|
|
6
|
-
it 'should block that could be called with symbol
|
6
|
+
it 'should block that could be called with symbol 9 times' do
|
7
7
|
analyzer = Fasterer::Analyzer.new(test_file_path)
|
8
8
|
analyzer.scan
|
9
|
-
expect(analyzer.errors[:block_vs_symbol_to_proc].count).to eq(
|
9
|
+
expect(analyzer.errors[:block_vs_symbol_to_proc].count).to eq(9)
|
10
10
|
end
|
11
11
|
end
|
@@ -330,8 +330,8 @@ describe Fasterer::FileTraverser do
|
|
330
330
|
let(:file_traverser) { Fasterer::FileTraverser.new('.') }
|
331
331
|
|
332
332
|
it 'should have errors' do
|
333
|
-
expect(file_traverser.parse_error_paths)
|
334
|
-
.to
|
333
|
+
expect(file_traverser.parse_error_paths.first)
|
334
|
+
.to start_with('user.rb - RubyParser::SyntaxError - unterminated')
|
335
335
|
end
|
336
336
|
end
|
337
337
|
|
@@ -437,4 +437,36 @@ describe Fasterer::MethodCall do
|
|
437
437
|
# expect(method_call.receiver.name).to eq('hi')
|
438
438
|
end
|
439
439
|
end
|
440
|
+
|
441
|
+
describe '#lambda_literal?' do
|
442
|
+
describe 'lambda literal without arguments' do
|
443
|
+
let(:code) { '-> {}' }
|
444
|
+
|
445
|
+
let(:call_element) { ripper }
|
446
|
+
|
447
|
+
it 'should be true' do
|
448
|
+
expect(method_call).to be_lambda_literal
|
449
|
+
end
|
450
|
+
end
|
451
|
+
|
452
|
+
describe 'lambda literal with an argument' do
|
453
|
+
let(:code) { '->(_) {}' }
|
454
|
+
|
455
|
+
let(:call_element) { ripper }
|
456
|
+
|
457
|
+
it 'should be true' do
|
458
|
+
expect(method_call).to be_lambda_literal
|
459
|
+
end
|
460
|
+
end
|
461
|
+
|
462
|
+
describe 'lambda method' do
|
463
|
+
let(:code) { 'lambda {}' }
|
464
|
+
|
465
|
+
let(:call_element) { ripper }
|
466
|
+
|
467
|
+
it 'should be false' do
|
468
|
+
expect(method_call).not_to be_lambda_literal
|
469
|
+
end
|
470
|
+
end
|
471
|
+
end
|
440
472
|
end
|
@@ -11,6 +11,10 @@ route_sets.each do |route|
|
|
11
11
|
puts route.name
|
12
12
|
end
|
13
13
|
|
14
|
+
route_sets.each do |routes|
|
15
|
+
[].finalize!
|
16
|
+
end
|
17
|
+
|
14
18
|
route_sets.each(&:finalize!)
|
15
19
|
|
16
20
|
route_sets.each(:oppa) do |route|
|
@@ -37,3 +41,7 @@ numbers.find { |number| number.even? }
|
|
37
41
|
|
38
42
|
instance_eval { |_| method_call_without_receiver }
|
39
43
|
instance_eval { |object| object.to_s }
|
44
|
+
|
45
|
+
proc { |rule| rule.should_use_symbol }
|
46
|
+
lambda { |rule| rule.should_use_symbol }
|
47
|
+
->(obj) { obj.cannot_use_symbol }
|
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.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damir Svrtan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.
|
33
|
+
version: 3.14.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.
|
40
|
+
version: 3.14.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,47 +53,47 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.6'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '10
|
61
|
+
version: '0.10'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '10
|
68
|
+
version: '0.10'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 12.3.3
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 12.3.3
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '3.2'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '3.2'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: simplecov
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -240,14 +240,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
240
240
|
requirements:
|
241
241
|
- - ">="
|
242
242
|
- !ruby/object:Gem::Version
|
243
|
-
version: '
|
243
|
+
version: '2.2'
|
244
244
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
245
245
|
requirements:
|
246
246
|
- - ">="
|
247
247
|
- !ruby/object:Gem::Version
|
248
248
|
version: '0'
|
249
249
|
requirements: []
|
250
|
-
|
250
|
+
rubyforge_project:
|
251
|
+
rubygems_version: 2.7.6.2
|
251
252
|
signing_key:
|
252
253
|
specification_version: 4
|
253
254
|
summary: Run Ruby more than fast. Fasterer
|