reek 5.4.0 → 6.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +27 -6
- data/.rubocop_todo.yml +4 -4
- data/.simplecov +1 -0
- data/.travis.yml +13 -11
- data/CHANGELOG.md +27 -1
- data/Dockerfile +2 -1
- data/Gemfile +15 -17
- data/README.md +15 -11
- data/bin/code_climate_reek +12 -2
- data/docs/Attribute.md +1 -1
- data/docs/Control-Couple.md +1 -1
- data/docs/Nil-Check.md +4 -1
- data/features/command_line_interface/options.feature +2 -3
- data/features/reports/codeclimate.feature +2 -2
- data/features/reports/json.feature +3 -3
- data/features/reports/reports.feature +4 -4
- data/features/reports/yaml.feature +3 -3
- data/features/step_definitions/reek_steps.rb +4 -0
- data/features/support/env.rb +1 -2
- data/lib/reek/ast/sexp_extensions/arguments.rb +11 -0
- data/lib/reek/cli/command/todo_list_command.rb +7 -2
- data/lib/reek/cli/options.rb +2 -2
- data/lib/reek/code_comment.rb +45 -38
- data/lib/reek/configuration/configuration_converter.rb +2 -2
- data/lib/reek/configuration/directory_directives.rb +7 -1
- data/lib/reek/errors/legacy_comment_separator_error.rb +36 -0
- data/lib/reek/examiner.rb +3 -3
- data/lib/reek/report.rb +5 -7
- data/lib/reek/report/code_climate/code_climate_report.rb +2 -1
- data/lib/reek/report/simple_warning_formatter.rb +0 -7
- data/lib/reek/report/text_report.rb +2 -2
- data/lib/reek/smell_detectors/base_detector.rb +2 -10
- data/lib/reek/smell_detectors/data_clump.rb +23 -56
- data/lib/reek/smell_detectors/nil_check.rb +1 -12
- data/lib/reek/smell_detectors/subclassed_from_core_class.rb +3 -7
- data/lib/reek/smell_detectors/too_many_constants.rb +1 -1
- data/lib/reek/smell_warning.rb +18 -14
- data/lib/reek/source/source_code.rb +3 -2
- data/lib/reek/spec/smell_matcher.rb +2 -1
- data/lib/reek/version.rb +1 -1
- data/reek.gemspec +5 -6
- data/spec/reek/ast/sexp_extensions_spec.rb +15 -33
- data/spec/reek/cli/application_spec.rb +1 -1
- data/spec/reek/code_comment_spec.rb +41 -42
- data/spec/reek/configuration/directory_directives_spec.rb +6 -0
- data/spec/reek/context_builder_spec.rb +110 -113
- data/spec/reek/examiner_spec.rb +1 -0
- data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +1 -3
- data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +26 -26
- data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +6 -6
- data/spec/reek/report/code_climate/code_climate_report_spec.rb +1 -1
- data/spec/reek/report/json_report_spec.rb +1 -1
- data/spec/reek/report/location_formatter_spec.rb +3 -3
- data/spec/reek/report/text_report_spec.rb +1 -7
- data/spec/reek/report/yaml_report_spec.rb +1 -1
- data/spec/reek/smell_configuration_spec.rb +2 -0
- data/spec/reek/smell_detectors/base_detector_spec.rb +3 -16
- data/spec/reek/smell_detectors/data_clump_spec.rb +14 -0
- data/spec/reek/smell_detectors/missing_safe_method_spec.rb +8 -2
- data/spec/reek/smell_detectors/nil_check_spec.rb +3 -3
- data/spec/reek/smell_warning_spec.rb +17 -28
- data/spec/reek/source/source_code_spec.rb +13 -0
- data/spec/reek/spec/should_reek_of_spec.rb +0 -1
- data/spec/reek/spec/should_reek_only_of_spec.rb +6 -13
- data/spec/reek/spec/smell_matcher_spec.rb +1 -2
- data/spec/spec_helper.rb +20 -6
- metadata +11 -26
- data/spec/factories/factories.rb +0 -48
@@ -5,15 +5,13 @@ require_lib 'reek/smell_detectors/duplicate_method_call'
|
|
5
5
|
RSpec.describe Reek::SmellDetectors::BaseDetector do
|
6
6
|
describe '.todo_configuration_for' do
|
7
7
|
it 'returns exclusion configuration for the given smells' do
|
8
|
-
|
9
|
-
smell = create(:smell_warning, smell_detector: detector, context: 'Foo#bar')
|
8
|
+
smell = build_smell_warning(smell_type: 'Foo', context: 'Foo#bar')
|
10
9
|
result = described_class.todo_configuration_for([smell])
|
11
10
|
expect(result).to eq('BaseDetector' => { 'exclude' => ['Foo#bar'] })
|
12
11
|
end
|
13
12
|
|
14
13
|
it 'merges identical contexts' do
|
15
|
-
|
16
|
-
smell = create(:smell_warning, smell_detector: detector, context: 'Foo#bar')
|
14
|
+
smell = build_smell_warning(smell_type: 'Foo', context: 'Foo#bar')
|
17
15
|
result = described_class.todo_configuration_for([smell, smell])
|
18
16
|
expect(result).to eq('BaseDetector' => { 'exclude' => ['Foo#bar'] })
|
19
17
|
end
|
@@ -22,8 +20,7 @@ RSpec.describe Reek::SmellDetectors::BaseDetector do
|
|
22
20
|
let(:subclass) { Reek::SmellDetectors::TooManyStatements }
|
23
21
|
|
24
22
|
it 'includes default exclusions' do
|
25
|
-
|
26
|
-
smell = create(:smell_warning, smell_detector: detector, context: 'Foo#bar')
|
23
|
+
smell = build_smell_warning(smell_type: 'TooManyStatements', context: 'Foo#bar')
|
27
24
|
result = subclass.todo_configuration_for([smell])
|
28
25
|
|
29
26
|
aggregate_failures do
|
@@ -34,16 +31,6 @@ RSpec.describe Reek::SmellDetectors::BaseDetector do
|
|
34
31
|
end
|
35
32
|
end
|
36
33
|
|
37
|
-
describe '.valid_detector?' do
|
38
|
-
it 'returns true for a valid detector' do
|
39
|
-
expect(described_class.valid_detector?('DuplicateMethodCall')).to be true
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'returns false for an invalid detector' do
|
43
|
-
expect(described_class.valid_detector?('Unknown')).to be false
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
34
|
describe '.to_detector' do
|
48
35
|
it 'returns the right detector' do
|
49
36
|
expect(described_class.to_detector('DuplicateMethodCall')).to eq(Reek::SmellDetectors::DuplicateMethodCall)
|
@@ -76,6 +76,20 @@ RSpec.describe Reek::SmellDetectors::DataClump do
|
|
76
76
|
parameters: ['echo', 'foxtrot'])
|
77
77
|
end
|
78
78
|
|
79
|
+
it 'reports arguments in alphabetical order even if they are never used that way' do
|
80
|
+
src = <<-RUBY
|
81
|
+
#{scope} Alfa
|
82
|
+
def bravo (foxtrot, echo); end
|
83
|
+
def charlie(foxtrot, echo); end
|
84
|
+
def delta (foxtrot, echo); end
|
85
|
+
end
|
86
|
+
RUBY
|
87
|
+
|
88
|
+
expect(src).to reek_of(:DataClump,
|
89
|
+
count: 3,
|
90
|
+
parameters: ['echo', 'foxtrot'])
|
91
|
+
end
|
92
|
+
|
79
93
|
it 'reports parameter sets that are > 2' do
|
80
94
|
src = <<-RUBY
|
81
95
|
#{scope} Alfa
|
@@ -50,13 +50,19 @@ RSpec.describe Reek::SmellDetectors::MissingSafeMethod do
|
|
50
50
|
|
51
51
|
it 'does not report methods we excluded via comment' do
|
52
52
|
source = <<-RUBY
|
53
|
-
# :reek:MissingSafeMethod
|
53
|
+
# :reek:MissingSafeMethod { exclude: [ bravo! ] }
|
54
54
|
class Alfa
|
55
55
|
def bravo!
|
56
56
|
end
|
57
|
+
|
58
|
+
def charlie!
|
59
|
+
end
|
57
60
|
end
|
58
61
|
RUBY
|
59
62
|
|
60
|
-
|
63
|
+
aggregate_failures do
|
64
|
+
expect(source).not_to reek_of(:MissingSafeMethod, name: 'bravo!')
|
65
|
+
expect(source).to reek_of(:MissingSafeMethod, name: 'charlie!')
|
66
|
+
end
|
61
67
|
end
|
62
68
|
end
|
@@ -76,14 +76,14 @@ RSpec.describe Reek::SmellDetectors::NilCheck do
|
|
76
76
|
expect(src).to reek_of(:NilCheck)
|
77
77
|
end
|
78
78
|
|
79
|
-
it '
|
79
|
+
it 'does not report when scope uses &.' do
|
80
80
|
src = <<-RUBY
|
81
81
|
def alfa(bravo)
|
82
82
|
bravo&.charlie
|
83
83
|
end
|
84
84
|
RUBY
|
85
85
|
|
86
|
-
expect(src).
|
86
|
+
expect(src).not_to reek_of(:NilCheck)
|
87
87
|
end
|
88
88
|
|
89
89
|
it 'reports all lines when scope uses multiple nilchecks' do
|
@@ -95,6 +95,6 @@ RSpec.describe Reek::SmellDetectors::NilCheck do
|
|
95
95
|
end
|
96
96
|
RUBY
|
97
97
|
|
98
|
-
expect(src).to reek_of(:NilCheck, lines: [2, 3
|
98
|
+
expect(src).to reek_of(:NilCheck, lines: [2, 3])
|
99
99
|
end
|
100
100
|
end
|
@@ -2,9 +2,6 @@ require_relative '../spec_helper'
|
|
2
2
|
require_lib 'reek/smell_warning'
|
3
3
|
|
4
4
|
RSpec.describe Reek::SmellWarning do
|
5
|
-
let(:duplication_detector) { build(:smell_detector, smell_type: 'DuplicateMethodCall') }
|
6
|
-
let(:feature_envy_detector) { build(:smell_detector, smell_type: 'FeatureEnvy') }
|
7
|
-
let(:utility_function_detector) { build(:smell_detector, smell_type: 'UtilityFunction') }
|
8
5
|
let(:uncommunicative_name_detector) { build(:smell_detector, smell_type: 'UncommunicativeVariableName') }
|
9
6
|
|
10
7
|
describe 'sort order' do
|
@@ -27,23 +24,23 @@ RSpec.describe Reek::SmellWarning do
|
|
27
24
|
end
|
28
25
|
|
29
26
|
context 'when smells differ only by detector' do
|
30
|
-
let(:first) {
|
31
|
-
let(:second) {
|
27
|
+
let(:first) { build_smell_warning(smell_type: 'DuplicateMethodCall') }
|
28
|
+
let(:second) { build_smell_warning(smell_type: 'FeatureEnvy') }
|
32
29
|
|
33
30
|
it_behaves_like 'first sorts ahead of second'
|
34
31
|
end
|
35
32
|
|
36
33
|
context 'when smells differ only by lines' do
|
37
|
-
let(:first) {
|
38
|
-
let(:second) {
|
34
|
+
let(:first) { build_smell_warning(smell_type: 'FeatureEnvy', lines: [2]) }
|
35
|
+
let(:second) { build_smell_warning(smell_type: 'FeatureEnvy', lines: [3]) }
|
39
36
|
|
40
37
|
it_behaves_like 'first sorts ahead of second'
|
41
38
|
end
|
42
39
|
|
43
40
|
context 'when smells differ only by context' do
|
44
|
-
let(:first) {
|
41
|
+
let(:first) { build_smell_warning(smell_type: 'DuplicateMethodCall', context: 'first') }
|
45
42
|
let(:second) do
|
46
|
-
|
43
|
+
build_smell_warning(smell_type: 'DuplicateMethodCall', context: 'second')
|
47
44
|
end
|
48
45
|
|
49
46
|
it_behaves_like 'first sorts ahead of second'
|
@@ -51,11 +48,11 @@ RSpec.describe Reek::SmellWarning do
|
|
51
48
|
|
52
49
|
context 'when smells differ only by message' do
|
53
50
|
let(:first) do
|
54
|
-
|
51
|
+
build_smell_warning(smell_type: 'DuplicateMethodCall',
|
55
52
|
context: 'ctx', message: 'first message')
|
56
53
|
end
|
57
54
|
let(:second) do
|
58
|
-
|
55
|
+
build_smell_warning(smell_type: 'DuplicateMethodCall',
|
59
56
|
context: 'ctx', message: 'second message')
|
60
57
|
end
|
61
58
|
|
@@ -64,10 +61,10 @@ RSpec.describe Reek::SmellWarning do
|
|
64
61
|
|
65
62
|
context 'when smells differ by name and message' do
|
66
63
|
let(:first) do
|
67
|
-
|
64
|
+
build_smell_warning(smell_type: 'FeatureEnvy', message: 'second message')
|
68
65
|
end
|
69
66
|
let(:second) do
|
70
|
-
|
67
|
+
build_smell_warning(smell_type: 'UtilityFunction', message: 'first message')
|
71
68
|
end
|
72
69
|
|
73
70
|
it_behaves_like 'first sorts ahead of second'
|
@@ -75,13 +72,13 @@ RSpec.describe Reek::SmellWarning do
|
|
75
72
|
|
76
73
|
context 'when smells differ everywhere' do
|
77
74
|
let(:first) do
|
78
|
-
|
75
|
+
build_smell_warning(smell_type: 'DuplicateMethodCall',
|
79
76
|
context: 'Dirty#a',
|
80
77
|
message: 'calls @s.title twice')
|
81
78
|
end
|
82
79
|
|
83
80
|
let(:second) do
|
84
|
-
|
81
|
+
build_smell_warning(smell_type: 'UncommunicativeVariableName',
|
85
82
|
context: 'Dirty',
|
86
83
|
message: "has the variable name '@s'")
|
87
84
|
end
|
@@ -90,28 +87,20 @@ RSpec.describe Reek::SmellWarning do
|
|
90
87
|
end
|
91
88
|
end
|
92
89
|
|
93
|
-
describe '#smell_class' do
|
94
|
-
it "returns the dectector's class" do
|
95
|
-
warning = build(:smell_warning, smell_detector: duplication_detector)
|
96
|
-
expect(warning.smell_class).to eq duplication_detector.class
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
90
|
describe '#yaml_hash' do
|
101
91
|
let(:context_name) { 'Module::Class#method/block' }
|
102
92
|
let(:lines) { [24, 513] }
|
103
93
|
let(:message) { 'test message' }
|
104
|
-
let(:detector) { Reek::SmellDetectors::FeatureEnvy.new }
|
105
94
|
let(:parameters) { { 'one' => 34, 'two' => 'second' } }
|
106
95
|
let(:smell_type) { 'FeatureEnvy' }
|
107
96
|
let(:source) { 'a/ruby/source/file.rb' }
|
108
97
|
|
109
98
|
let(:yaml) do
|
110
|
-
warning = described_class.new(
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
99
|
+
warning = described_class.new(smell_type, source: source,
|
100
|
+
context: context_name,
|
101
|
+
lines: lines,
|
102
|
+
message: message,
|
103
|
+
parameters: parameters)
|
115
104
|
warning.yaml_hash
|
116
105
|
end
|
117
106
|
|
@@ -62,5 +62,18 @@ RSpec.describe Reek::Source::SourceCode do
|
|
62
62
|
expect { src.syntax_tree }.to raise_error error_class, error_message
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
66
|
+
if RUBY_VERSION >= '2.7'
|
67
|
+
context 'with ruby 2.7 syntax' do
|
68
|
+
context 'with forward_args (`...`)' do
|
69
|
+
let(:source_code) { described_class.new(source: 'def alpha(...) bravo(...); end') }
|
70
|
+
|
71
|
+
it 'returns a :forward_args node' do
|
72
|
+
result = source_code.syntax_tree
|
73
|
+
expect(result.children[1].type).to eq(:forward_args)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
65
78
|
end
|
66
79
|
end
|
@@ -40,19 +40,16 @@ RSpec.describe Reek::Spec::ShouldReekOnlyOf do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
context 'with 1 non-matching smell' do
|
43
|
-
let(:
|
44
|
-
let(:smells) { [build(:smell_warning, smell_detector: control_couple_detector)] }
|
43
|
+
let(:smells) { [build_smell_warning(smell_type: 'ControlParameter')] }
|
45
44
|
|
46
45
|
it_behaves_like 'no match'
|
47
46
|
end
|
48
47
|
|
49
48
|
context 'with 2 non-matching smells' do
|
50
|
-
let(:control_couple_detector) { build(:smell_detector, smell_type: 'ControlParameter') }
|
51
|
-
let(:feature_envy_detector) { build(:smell_detector, smell_type: 'FeatureEnvy') }
|
52
49
|
let(:smells) do
|
53
50
|
[
|
54
|
-
|
55
|
-
|
51
|
+
build_smell_warning(smell_type: 'ControlParameter'),
|
52
|
+
build_smell_warning(smell_type: 'FeatureEnvy')
|
56
53
|
]
|
57
54
|
end
|
58
55
|
|
@@ -60,12 +57,10 @@ RSpec.describe Reek::Spec::ShouldReekOnlyOf do
|
|
60
57
|
end
|
61
58
|
|
62
59
|
context 'with 1 non-matching and 1 matching smell' do
|
63
|
-
let(:control_couple_detector) { build(:smell_detector, smell_type: 'ControlParameter') }
|
64
60
|
let(:smells) do
|
65
|
-
detector = build(:smell_detector, smell_type: expected_smell_type.to_s)
|
66
61
|
[
|
67
|
-
|
68
|
-
|
62
|
+
build_smell_warning(smell_type: 'ControlParameter'),
|
63
|
+
build_smell_warning(smell_type: expected_smell_type.to_s,
|
69
64
|
message: "message mentioning #{expected_context_name}")
|
70
65
|
]
|
71
66
|
end
|
@@ -75,9 +70,7 @@ RSpec.describe Reek::Spec::ShouldReekOnlyOf do
|
|
75
70
|
|
76
71
|
context 'with 1 matching smell' do
|
77
72
|
let(:smells) do
|
78
|
-
|
79
|
-
|
80
|
-
[build(:smell_warning, smell_detector: detector,
|
73
|
+
[build_smell_warning(smell_type: expected_smell_type.to_s,
|
81
74
|
message: "message mentioning #{expected_context_name}")]
|
82
75
|
end
|
83
76
|
|
@@ -2,9 +2,8 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_lib 'reek/spec/smell_matcher'
|
3
3
|
|
4
4
|
RSpec.describe Reek::Spec::SmellMatcher do
|
5
|
-
let(:detector) { build(:smell_detector, smell_type: 'UncommunicativeVariableName') }
|
6
5
|
let(:smell_warning) do
|
7
|
-
|
6
|
+
build_smell_warning(smell_type: 'UncommunicativeVariableName',
|
8
7
|
message: "has the variable name '@s'",
|
9
8
|
parameters: { test: 'something' })
|
10
9
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
require 'timeout'
|
3
|
-
require 'active_support/core_ext/string/strip'
|
4
3
|
require 'rspec-benchmark'
|
5
4
|
require_relative '../lib/reek'
|
6
5
|
require_relative '../lib/reek/spec'
|
@@ -11,12 +10,9 @@ require_relative '../samples/paths'
|
|
11
10
|
|
12
11
|
begin
|
13
12
|
Reek::CLI::Silencer.without_warnings { require 'pry-byebug' }
|
14
|
-
rescue LoadError # rubocop:disable Lint/
|
13
|
+
rescue LoadError # rubocop:disable Lint/SuppressedException
|
15
14
|
end
|
16
15
|
|
17
|
-
require 'factory_bot'
|
18
|
-
FactoryBot.find_definitions
|
19
|
-
|
20
16
|
# Simple helpers for our specs.
|
21
17
|
module Helpers
|
22
18
|
def test_configuration_for(config)
|
@@ -70,14 +66,32 @@ module Helpers
|
|
70
66
|
@klass_map ||= Reek::AST::ASTNodeClassMap.new
|
71
67
|
@klass_map.klass_for(type).new(type, children)
|
72
68
|
end
|
69
|
+
|
70
|
+
def build_smell_warning(smell_type: 'FeatureEnvy',
|
71
|
+
context: 'self',
|
72
|
+
lines: [42],
|
73
|
+
message: 'smell warning message',
|
74
|
+
source: 'dummy_file',
|
75
|
+
parameters: {})
|
76
|
+
Reek::SmellWarning.new(smell_type,
|
77
|
+
context: context,
|
78
|
+
lines: lines,
|
79
|
+
message: message,
|
80
|
+
source: source,
|
81
|
+
parameters: parameters)
|
82
|
+
end
|
83
|
+
|
84
|
+
def build_code_comment(comment: '', line: 1, source: 'string')
|
85
|
+
Reek::CodeComment.new(comment: comment, line: line, source: source)
|
86
|
+
end
|
73
87
|
end
|
74
88
|
|
75
89
|
RSpec.configure do |config|
|
76
90
|
config.filter_run :focus
|
77
91
|
config.run_all_when_everything_filtered = true
|
78
|
-
config.include FactoryBot::Syntax::Methods
|
79
92
|
config.include Helpers
|
80
93
|
config.include RSpec::Benchmark::Matchers
|
94
|
+
config.example_status_persistence_file_path = 'spec/examples.txt'
|
81
95
|
|
82
96
|
config.disable_monkey_patching!
|
83
97
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reek
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Rutherford
|
@@ -11,22 +11,8 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2020-05-26 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
17
|
-
name: codeclimate-engine-rb
|
18
|
-
requirement: !ruby/object:Gem::Requirement
|
19
|
-
requirements:
|
20
|
-
- - "~>"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 0.4.0
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 0.4.0
|
30
16
|
- !ruby/object:Gem::Dependency
|
31
17
|
name: kwalify
|
32
18
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,28 +31,28 @@ dependencies:
|
|
45
31
|
name: parser
|
46
32
|
requirement: !ruby/object:Gem::Requirement
|
47
33
|
requirements:
|
48
|
-
- - "<"
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: '2.7'
|
51
34
|
- - ">="
|
52
35
|
- !ruby/object:Gem::Version
|
53
36
|
version: 2.5.0.0
|
54
37
|
- - "!="
|
55
38
|
- !ruby/object:Gem::Version
|
56
39
|
version: 2.5.1.1
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '2.8'
|
57
43
|
type: :runtime
|
58
44
|
prerelease: false
|
59
45
|
version_requirements: !ruby/object:Gem::Requirement
|
60
46
|
requirements:
|
61
|
-
- - "<"
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '2.7'
|
64
47
|
- - ">="
|
65
48
|
- !ruby/object:Gem::Version
|
66
49
|
version: 2.5.0.0
|
67
50
|
- - "!="
|
68
51
|
- !ruby/object:Gem::Version
|
69
52
|
version: 2.5.1.1
|
53
|
+
- - "<"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '2.8'
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: psych
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -281,6 +267,7 @@ files:
|
|
281
267
|
- lib/reek/errors/encoding_error.rb
|
282
268
|
- lib/reek/errors/garbage_detector_configuration_in_comment_error.rb
|
283
269
|
- lib/reek/errors/incomprehensible_source_error.rb
|
270
|
+
- lib/reek/errors/legacy_comment_separator_error.rb
|
284
271
|
- lib/reek/errors/syntax_error.rb
|
285
272
|
- lib/reek/examiner.rb
|
286
273
|
- lib/reek/logging_error_handler.rb
|
@@ -385,7 +372,6 @@ files:
|
|
385
372
|
- samples/source_with_non_ruby_files/gibberish
|
386
373
|
- samples/source_with_non_ruby_files/python_source.py
|
387
374
|
- samples/source_with_non_ruby_files/ruby.rb
|
388
|
-
- spec/factories/factories.rb
|
389
375
|
- spec/performance/reek/smell_detectors/runtime_speed_spec.rb
|
390
376
|
- spec/quality/documentation_spec.rb
|
391
377
|
- spec/quality/reek_source_spec.rb
|
@@ -492,15 +478,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
492
478
|
requirements:
|
493
479
|
- - ">="
|
494
480
|
- !ruby/object:Gem::Version
|
495
|
-
version: 2.
|
481
|
+
version: 2.4.0
|
496
482
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
497
483
|
requirements:
|
498
484
|
- - ">="
|
499
485
|
- !ruby/object:Gem::Version
|
500
486
|
version: '0'
|
501
487
|
requirements: []
|
502
|
-
|
503
|
-
rubygems_version: 2.7.7
|
488
|
+
rubygems_version: 3.0.3
|
504
489
|
signing_key:
|
505
490
|
specification_version: 4
|
506
491
|
summary: Code smell detector for Ruby
|