reek 5.4.0 → 6.0.1
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/.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
|