reek 2.2.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +9 -4
  4. data/CHANGELOG +8 -0
  5. data/Gemfile +6 -4
  6. data/README.md +6 -0
  7. data/docs/API.md +51 -22
  8. data/docs/Configuration-Files.md +12 -1
  9. data/docs/Feature-Envy.md +30 -10
  10. data/docs/How-reek-works-internally.md +109 -39
  11. data/docs/RSpec-matchers.md +26 -22
  12. data/docs/Reek-Driven-Development.md +0 -8
  13. data/docs/Utility-Function.md +8 -10
  14. data/features/{ruby_api/api.feature → command_line_interface/basic_usage.feature} +2 -2
  15. data/features/programmatic_access.feature +21 -2
  16. data/features/samples.feature +3 -1
  17. data/lib/reek.rb +2 -2
  18. data/lib/reek/{core → ast}/ast_node_class_map.rb +8 -8
  19. data/lib/reek/{sexp/sexp_node.rb → ast/node.rb} +47 -6
  20. data/lib/reek/{core → ast}/object_refs.rb +2 -1
  21. data/lib/reek/{core → ast}/reference_collector.rb +2 -1
  22. data/lib/reek/{sexp → ast}/sexp_extensions.rb +10 -5
  23. data/lib/reek/{sexp → ast}/sexp_formatter.rb +7 -5
  24. data/lib/reek/cli/application.rb +1 -0
  25. data/lib/reek/cli/command.rb +1 -0
  26. data/lib/reek/cli/input.rb +4 -1
  27. data/lib/reek/cli/option_interpreter.rb +6 -4
  28. data/lib/reek/cli/options.rb +2 -1
  29. data/lib/reek/cli/reek_command.rb +3 -2
  30. data/lib/reek/cli/silencer.rb +1 -0
  31. data/lib/reek/{core → cli}/warning_collector.rb +2 -1
  32. data/lib/reek/code_comment.rb +36 -0
  33. data/lib/reek/configuration/app_configuration.rb +17 -2
  34. data/lib/reek/configuration/configuration_file_finder.rb +1 -0
  35. data/lib/reek/{core → context}/code_context.rb +7 -5
  36. data/lib/reek/{core → context}/method_context.rb +5 -3
  37. data/lib/reek/{core → context}/module_context.rb +8 -3
  38. data/lib/reek/{core/stop_context.rb → context/root_context.rb} +4 -2
  39. data/lib/reek/{core → context}/singleton_method_context.rb +2 -1
  40. data/lib/reek/examiner.rb +82 -0
  41. data/lib/reek/report/formatter.rb +70 -0
  42. data/lib/reek/report/heading_formatter.rb +45 -0
  43. data/lib/reek/report/location_formatter.rb +35 -0
  44. data/lib/reek/report/report.rb +198 -0
  45. data/lib/reek/smells.rb +24 -13
  46. data/lib/reek/smells/attribute.rb +6 -4
  47. data/lib/reek/smells/boolean_parameter.rb +3 -1
  48. data/lib/reek/smells/class_variable.rb +3 -1
  49. data/lib/reek/smells/control_parameter.rb +3 -1
  50. data/lib/reek/smells/data_clump.rb +3 -1
  51. data/lib/reek/smells/duplicate_method_call.rb +3 -1
  52. data/lib/reek/smells/feature_envy.rb +3 -1
  53. data/lib/reek/smells/irresponsible_module.rb +12 -7
  54. data/lib/reek/smells/long_parameter_list.rb +5 -3
  55. data/lib/reek/smells/long_yield_list.rb +3 -1
  56. data/lib/reek/smells/module_initialize.rb +3 -1
  57. data/lib/reek/smells/nested_iterators.rb +3 -1
  58. data/lib/reek/smells/nil_check.rb +3 -1
  59. data/lib/reek/smells/prima_donna_method.rb +3 -1
  60. data/lib/reek/smells/repeated_conditional.rb +5 -3
  61. data/lib/reek/{core → smells}/smell_configuration.rb +3 -1
  62. data/lib/reek/smells/smell_detector.rb +9 -7
  63. data/lib/reek/{core → smells}/smell_repository.rb +3 -2
  64. data/lib/reek/smells/smell_warning.rb +6 -4
  65. data/lib/reek/smells/too_many_instance_variables.rb +3 -1
  66. data/lib/reek/smells/too_many_methods.rb +3 -1
  67. data/lib/reek/smells/too_many_statements.rb +3 -1
  68. data/lib/reek/smells/uncommunicative_method_name.rb +3 -1
  69. data/lib/reek/smells/uncommunicative_module_name.rb +3 -1
  70. data/lib/reek/smells/uncommunicative_parameter_name.rb +3 -1
  71. data/lib/reek/smells/uncommunicative_variable_name.rb +3 -1
  72. data/lib/reek/smells/unused_parameters.rb +3 -1
  73. data/lib/reek/smells/utility_function.rb +5 -2
  74. data/lib/reek/source/source_code.rb +40 -9
  75. data/lib/reek/source/source_locator.rb +30 -12
  76. data/lib/reek/spec/should_reek.rb +5 -4
  77. data/lib/reek/spec/should_reek_of.rb +3 -2
  78. data/lib/reek/spec/should_reek_only_of.rb +5 -4
  79. data/lib/reek/tree_dresser.rb +32 -0
  80. data/lib/reek/tree_walker.rb +182 -0
  81. data/lib/reek/version.rb +1 -1
  82. data/reek.gemspec +3 -3
  83. data/spec/factories/factories.rb +2 -0
  84. data/spec/reek/{sexp/sexp_node_spec.rb → ast/node_spec.rb} +2 -2
  85. data/spec/reek/{core → ast}/object_refs_spec.rb +3 -3
  86. data/spec/reek/{core → ast}/reference_collector_spec.rb +2 -2
  87. data/spec/reek/{sexp → ast}/sexp_extensions_spec.rb +6 -16
  88. data/spec/reek/{sexp → ast}/sexp_formatter_spec.rb +2 -2
  89. data/spec/reek/cli/option_interpreter_spec.rb +2 -1
  90. data/spec/reek/{core → cli}/warning_collector_spec.rb +3 -3
  91. data/spec/reek/{core/code_comment_spec.rb → code_comment_spec.rb} +3 -3
  92. data/spec/reek/configuration/app_configuration_spec.rb +31 -18
  93. data/spec/reek/{core → context}/code_context_spec.rb +14 -15
  94. data/spec/reek/{core → context}/method_context_spec.rb +8 -8
  95. data/spec/reek/{core → context}/module_context_spec.rb +4 -4
  96. data/spec/reek/context/root_context_spec.rb +14 -0
  97. data/spec/reek/{core → context}/singleton_method_context_spec.rb +4 -4
  98. data/spec/reek/{core/examiner_spec.rb → examiner_spec.rb} +3 -42
  99. data/spec/reek/{cli → report}/html_report_spec.rb +5 -5
  100. data/spec/reek/report/json_report_spec.rb +20 -0
  101. data/spec/reek/{cli → report}/text_report_spec.rb +14 -14
  102. data/spec/reek/{cli → report}/xml_report_spec.rb +7 -7
  103. data/spec/reek/report/yaml_report_spec.rb +20 -0
  104. data/spec/reek/smells/attribute_spec.rb +2 -1
  105. data/spec/reek/smells/boolean_parameter_spec.rb +1 -1
  106. data/spec/reek/smells/class_variable_spec.rb +5 -5
  107. data/spec/reek/smells/control_parameter_spec.rb +1 -1
  108. data/spec/reek/smells/data_clump_spec.rb +1 -1
  109. data/spec/reek/smells/duplicate_method_call_spec.rb +3 -3
  110. data/spec/reek/smells/feature_envy_spec.rb +1 -1
  111. data/spec/reek/smells/irresponsible_module_spec.rb +24 -28
  112. data/spec/reek/smells/long_parameter_list_spec.rb +2 -2
  113. data/spec/reek/smells/long_yield_list_spec.rb +2 -2
  114. data/spec/reek/smells/nested_iterators_spec.rb +1 -1
  115. data/spec/reek/smells/nil_check_spec.rb +2 -2
  116. data/spec/reek/smells/prima_donna_method_spec.rb +3 -3
  117. data/spec/reek/smells/repeated_conditional_spec.rb +6 -6
  118. data/spec/reek/{core → smells}/smell_configuration_spec.rb +4 -4
  119. data/spec/reek/smells/smell_detector_shared.rb +2 -2
  120. data/spec/reek/{core → smells}/smell_repository_spec.rb +5 -4
  121. data/spec/reek/smells/too_many_instance_variables_spec.rb +1 -1
  122. data/spec/reek/smells/too_many_methods_spec.rb +4 -4
  123. data/spec/reek/smells/too_many_statements_spec.rb +2 -2
  124. data/spec/reek/smells/uncommunicative_method_name_spec.rb +1 -1
  125. data/spec/reek/smells/uncommunicative_module_name_spec.rb +4 -4
  126. data/spec/reek/smells/uncommunicative_parameter_name_spec.rb +2 -2
  127. data/spec/reek/smells/uncommunicative_variable_name_spec.rb +3 -3
  128. data/spec/reek/smells/utility_function_spec.rb +23 -1
  129. data/spec/reek/source/source_code_spec.rb +1 -1
  130. data/spec/reek/source/source_locator_spec.rb +30 -0
  131. data/spec/reek/spec/should_reek_of_spec.rb +0 -17
  132. data/spec/reek/spec/should_reek_spec.rb +0 -25
  133. data/spec/reek/tree_dresser_spec.rb +16 -0
  134. data/spec/reek/{core/tree_walker_spec.rb → tree_walker_spec.rb} +5 -5
  135. data/spec/samples/{simple_configuration.reek → configuration/simple_configuration.reek} +0 -0
  136. data/spec/samples/configuration/with_excluded_paths.reek +4 -0
  137. data/spec/samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb +5 -0
  138. data/spec/samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb +2 -0
  139. data/spec/samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb +6 -0
  140. data/spec/spec_helper.rb +6 -7
  141. data/tasks/develop.rake +2 -2
  142. metadata +71 -69
  143. data/lib/reek/cli/report/formatter.rb +0 -69
  144. data/lib/reek/cli/report/heading_formatter.rb +0 -45
  145. data/lib/reek/cli/report/location_formatter.rb +0 -34
  146. data/lib/reek/cli/report/report.rb +0 -191
  147. data/lib/reek/core/ast_node.rb +0 -38
  148. data/lib/reek/core/code_comment.rb +0 -37
  149. data/lib/reek/core/examiner.rb +0 -85
  150. data/lib/reek/core/tree_dresser.rb +0 -24
  151. data/lib/reek/core/tree_walker.rb +0 -180
  152. data/lib/reek/source/source_repository.rb +0 -43
  153. data/spec/reek/cli/json_report_spec.rb +0 -20
  154. data/spec/reek/cli/yaml_report_spec.rb +0 -20
  155. data/spec/reek/core/object_source_spec.rb +0 -18
  156. data/spec/reek/core/stop_context_spec.rb +0 -14
  157. data/spec/reek/core/tree_dresser_spec.rb +0 -16
@@ -1,13 +1,13 @@
1
1
  require_relative '../../spec_helper'
2
- require_relative '../../../lib/reek/core/examiner'
3
- require_relative '../../../lib/reek/cli/report/report'
4
- require_relative '../../../lib/reek/cli/report/formatter'
2
+ require_relative '../../../lib/reek/examiner'
3
+ require_relative '../../../lib/reek/report/report'
4
+ require_relative '../../../lib/reek/report/formatter'
5
5
 
6
- RSpec.describe Reek::CLI::Report::XMLReport do
7
- let(:instance) { Reek::CLI::Report::XMLReport.new }
6
+ RSpec.describe Reek::Report::XMLReport do
7
+ let(:instance) { Reek::Report::XMLReport.new }
8
8
 
9
9
  context 'empty source' do
10
- let(:examiner) { Reek::Core::Examiner.new('') }
10
+ let(:examiner) { Reek::Examiner.new('') }
11
11
 
12
12
  before do
13
13
  instance.add_examiner examiner
@@ -19,7 +19,7 @@ RSpec.describe Reek::CLI::Report::XMLReport do
19
19
  end
20
20
 
21
21
  context 'source with voliations' do
22
- let(:examiner) { Reek::Core::Examiner.new('def simple(a) a[0] end') }
22
+ let(:examiner) { Reek::Examiner.new('def simple(a) a[0] end') }
23
23
 
24
24
  before do
25
25
  allow(File).to receive(:realpath).and_return('/some/path')
@@ -0,0 +1,20 @@
1
+ require_relative '../../spec_helper'
2
+ require_relative '../../../lib/reek/examiner'
3
+ require_relative '../../../lib/reek/report/report'
4
+ require_relative '../../../lib/reek/report/formatter'
5
+
6
+ RSpec.describe Reek::Report::YAMLReport do
7
+ let(:instance) { Reek::Report::YAMLReport.new }
8
+
9
+ context 'empty source' do
10
+ let(:examiner) { Reek::Examiner.new('') }
11
+
12
+ before do
13
+ instance.add_examiner examiner
14
+ end
15
+
16
+ it 'prints empty yaml' do
17
+ expect { instance.show }.to output(/^--- \[\]\n.*$/).to_stdout
18
+ end
19
+ end
20
+ end
@@ -1,11 +1,12 @@
1
1
  require_relative '../../spec_helper'
2
2
  require_relative '../../../lib/reek/smells/attribute'
3
+ require_relative '../../../lib/reek/smells/smell_configuration'
3
4
  require_relative 'smell_detector_shared'
4
5
 
5
6
  RSpec.describe Reek::Smells::Attribute do
6
7
  let(:config) do
7
8
  {
8
- Attribute: { Reek::Core::SmellConfiguration::ENABLED_KEY => true }
9
+ Attribute: { Reek::Smells::SmellConfiguration::ENABLED_KEY => true }
9
10
  }
10
11
  end
11
12
 
@@ -75,7 +75,7 @@ RSpec.describe Reek::Smells::BooleanParameter do
75
75
 
76
76
  it 'reports the fields correctly' do
77
77
  src = 'def cc(arga = true) end'
78
- ctx = Reek::Core::MethodContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
78
+ ctx = Reek::Context::MethodContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
79
79
  @detector.examine(ctx)
80
80
  smells = @detector.smells_found.to_a
81
81
  expect(smells.length).to eq(1)
@@ -1,6 +1,6 @@
1
1
  require_relative '../../spec_helper'
2
2
  require_relative '../../../lib/reek/smells/class_variable'
3
- require_relative '../../../lib/reek/core/module_context'
3
+ require_relative '../../../lib/reek/context/module_context'
4
4
  require_relative 'smell_detector_shared'
5
5
 
6
6
  RSpec.describe Reek::Smells::ClassVariable do
@@ -15,12 +15,12 @@ RSpec.describe Reek::Smells::ClassVariable do
15
15
  context 'with no class variables' do
16
16
  it 'records nothing in the class' do
17
17
  exp = ast(:class, :Fred)
18
- expect(@detector.examine_context(Reek::Core::CodeContext.new(nil, exp))).to be_empty
18
+ expect(@detector.examine_context(Reek::Context::CodeContext.new(nil, exp))).to be_empty
19
19
  end
20
20
 
21
21
  it 'records nothing in the module' do
22
22
  exp = ast(:module, :Fred)
23
- expect(@detector.examine_context(Reek::Core::CodeContext.new(nil, exp))).to be_empty
23
+ expect(@detector.examine_context(Reek::Context::CodeContext.new(nil, exp))).to be_empty
24
24
  end
25
25
  end
26
26
 
@@ -28,7 +28,7 @@ RSpec.describe Reek::Smells::ClassVariable do
28
28
  shared_examples_for 'one variable found' do
29
29
  before :each do
30
30
  ast = Reek::Source::SourceCode.from(@src).syntax_tree
31
- @smells = @detector.examine_context(Reek::Core::CodeContext.new(nil, ast))
31
+ @smells = @detector.examine_context(Reek::Context::CodeContext.new(nil, ast))
32
32
  end
33
33
 
34
34
  it 'records only that class variable' do
@@ -99,7 +99,7 @@ RSpec.describe Reek::Smells::ClassVariable do
99
99
  #{@class_variable} = {}
100
100
  end
101
101
  EOS
102
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
102
+ ctx = Reek::Context::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
103
103
  @warning = @detector.examine_context(ctx)[0]
104
104
  expect(@warning.source).to eq(@source_name)
105
105
  expect(@warning.smell_category).to eq(described_class.smell_category)
@@ -272,7 +272,7 @@ RSpec.describe Reek::Smells::ControlParameter do
272
272
  puts "hello" if arg
273
273
  end
274
274
  EOS
275
- ctx = Reek::Core::MethodContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
275
+ ctx = Reek::Context::MethodContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
276
276
  smells = @detector.examine(ctx)
277
277
  expect(smells.length).to eq(1)
278
278
  @warning = smells[0]
@@ -25,7 +25,7 @@ RSpec.shared_examples_for 'a data clump detector' do
25
25
  def third(pa, pb) pa - pb + @fred; end
26
26
  end
27
27
  EOS
28
- ctx = Reek::Core::ModuleContext.new(nil, Reek::Source::SourceCode.from(@src).syntax_tree)
28
+ ctx = Reek::Context::ModuleContext.new(nil, Reek::Source::SourceCode.from(@src).syntax_tree)
29
29
  detector = build(:smell_detector, smell_type: :DataClump)
30
30
  @smells = detector.examine_context(ctx)
31
31
  end
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
2
  require_relative '../../../lib/reek/smells/duplicate_method_call'
3
- require_relative '../../../lib/reek/core/code_context'
4
- require_relative '../../../lib/reek/core/tree_walker'
3
+ require_relative '../../../lib/reek/context/code_context'
4
+ require_relative '../../../lib/reek/tree_walker'
5
5
  require_relative 'smell_detector_shared'
6
6
 
7
7
  RSpec.describe Reek::Smells::DuplicateMethodCall do
@@ -16,7 +16,7 @@ RSpec.describe Reek::Smells::DuplicateMethodCall do
16
16
  other[@thing]
17
17
  end
18
18
  EOS
19
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
19
+ ctx = Reek::Context::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
20
20
  smells = @detector.examine_context(ctx)
21
21
  expect(smells.length).to eq(1)
22
22
  @warning = smells[0]
@@ -231,7 +231,7 @@ RSpec.describe Reek::Smells::FeatureEnvy do
231
231
  end
232
232
  EOS
233
233
  source = Reek::Source::SourceCode.from(src)
234
- @mctx = Reek::Core::TreeWalker.new.process_def(source.syntax_tree)
234
+ @mctx = Reek::TreeWalker.new.process_def(source.syntax_tree)
235
235
  @smells = @detector.examine_context(@mctx)
236
236
  end
237
237
 
@@ -1,17 +1,9 @@
1
1
  require_relative '../../spec_helper'
2
- require_relative '../../../lib/reek/core/code_context'
2
+ require_relative '../../../lib/reek/context/code_context'
3
3
  require_relative '../../../lib/reek/smells/irresponsible_module'
4
4
  require_relative 'smell_detector_shared'
5
5
 
6
6
  RSpec.describe Reek::Smells::IrresponsibleModule do
7
- before(:each) do
8
- @bad_module_name = 'WrongUn'
9
- @source_name = 'dummy_source'
10
- @detector = build(:smell_detector, smell_type: :IrresponsibleModule, source: @source_name)
11
- end
12
-
13
- it_should_behave_like 'SmellDetector'
14
-
15
7
  it 'does not report re-opened modules' do
16
8
  src = <<-EOS
17
9
  # Abstract base class
@@ -27,19 +19,12 @@ RSpec.describe Reek::Smells::IrresponsibleModule do
27
19
  # test class
28
20
  class Responsible; end
29
21
  EOS
30
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
31
- expect(@detector.examine_context(ctx)).to be_empty
22
+ expect(src).not_to reek_of(:IrresponsibleModule)
32
23
  end
33
24
 
34
25
  it 'reports a class without a comment' do
35
- src = "class #{@bad_module_name}; end"
36
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
37
- smells = @detector.examine_context(ctx)
38
- expect(smells.length).to eq(1)
39
- expect(smells[0].smell_category).to eq(Reek::Smells::IrresponsibleModule.smell_category)
40
- expect(smells[0].smell_type).to eq(Reek::Smells::IrresponsibleModule.smell_type)
41
- expect(smells[0].lines).to eq([1])
42
- expect(smells[0].parameters[:name]).to eq(@bad_module_name)
26
+ src = 'class BadClass; end'
27
+ expect(src).to reek_of :IrresponsibleModule, name: 'BadClass'
43
28
  end
44
29
 
45
30
  it 'reports a class with an empty comment' do
@@ -47,7 +32,7 @@ RSpec.describe Reek::Smells::IrresponsibleModule do
47
32
  #
48
33
  #
49
34
  #
50
- class #{@bad_module_name}; end
35
+ class BadClass; end
51
36
  EOS
52
37
  expect(src).to reek_of :IrresponsibleModule
53
38
  end
@@ -63,14 +48,25 @@ RSpec.describe Reek::Smells::IrresponsibleModule do
63
48
  expect(src).to reek_of(:IrresponsibleModule)
64
49
  end
65
50
 
66
- it 'reports a fq module name correctly' do
51
+ it 'reports a class with a trailing comment' do
52
+ src = <<-EOS
53
+ class BadClass
54
+ end # end BadClass
55
+ EOS
56
+ expect(src).to reek_of(:IrresponsibleModule)
57
+ end
58
+
59
+ it 'reports a fully qualified class name correctly' do
67
60
  src = 'class Foo::Bar; end'
68
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
69
- smells = @detector.examine_context(ctx)
70
- expect(smells.length).to eq(1)
71
- expect(smells[0].smell_category).to eq(described_class.smell_category)
72
- expect(smells[0].smell_type).to eq(described_class.smell_type)
73
- expect(smells[0].parameters[:name]).to eq('Foo::Bar')
74
- expect(smells[0].context).to match(/#{smells[0].parameters['name']}/)
61
+ expect(src).to reek_of :IrresponsibleModule, name: 'Foo::Bar'
62
+ end
63
+
64
+ context 'when a smell is reported' do
65
+ before do
66
+ @source_name = 'dummy_source'
67
+ @detector = build(:smell_detector, smell_type: :IrresponsibleModule, source: @source_name)
68
+ end
69
+
70
+ it_should_behave_like 'SmellDetector'
75
71
  end
76
72
  end
@@ -1,5 +1,5 @@
1
1
  require_relative '../../spec_helper'
2
- require_relative '../../../lib/reek/core/code_context'
2
+ require_relative '../../../lib/reek/context/code_context'
3
3
  require_relative '../../../lib/reek/smells/long_parameter_list'
4
4
  require_relative 'smell_detector_shared'
5
5
 
@@ -89,7 +89,7 @@ RSpec.describe Reek::Smells::LongParameterList do
89
89
  true
90
90
  end
91
91
  EOS
92
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
92
+ ctx = Reek::Context::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
93
93
  @smells = @detector.examine_context(ctx)
94
94
  @warning = @smells[0]
95
95
  end
@@ -1,5 +1,5 @@
1
1
  require_relative '../../spec_helper'
2
- require_relative '../../../lib/reek/core/code_context'
2
+ require_relative '../../../lib/reek/context/code_context'
3
3
  require_relative '../../../lib/reek/smells/long_yield_list'
4
4
  require_relative 'smell_detector_shared'
5
5
 
@@ -38,7 +38,7 @@ RSpec.describe Reek::Smells::LongYieldList do
38
38
  yield(arga,argb,arga,argb)
39
39
  end
40
40
  EOS
41
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
41
+ ctx = Reek::Context::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
42
42
  @smells = @detector.examine_context(ctx)
43
43
  @warning = @smells[0]
44
44
  end
@@ -237,7 +237,7 @@ RSpec.describe Reek::Smells::NestedIterators do
237
237
  end
238
238
  end
239
239
  EOS
240
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
240
+ ctx = Reek::Context::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
241
241
  @warning = @detector.examine_context(ctx)[0]
242
242
  end
243
243
 
@@ -1,5 +1,5 @@
1
1
  require_relative '../../spec_helper'
2
- require_relative '../../../lib/reek/core/code_context'
2
+ require_relative '../../../lib/reek/context/code_context'
3
3
  require_relative '../../../lib/reek/smells/nil_check'
4
4
  require_relative 'smell_detector_shared'
5
5
 
@@ -11,7 +11,7 @@ RSpec.describe Reek::Smells::NilCheck do
11
11
  foo.nil?
12
12
  end
13
13
  EOS
14
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
14
+ ctx = Reek::Context::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
15
15
  detector = build(:smell_detector, smell_type: :NilCheck, source: 'source_name')
16
16
  smells = detector.examine_context(ctx)
17
17
  expect(smells[0].lines).to eq [2]
@@ -1,5 +1,5 @@
1
1
  require_relative '../../spec_helper'
2
- require_relative '../../../lib/reek/core/module_context'
2
+ require_relative '../../../lib/reek/context/module_context'
3
3
  require_relative 'smell_detector_shared'
4
4
 
5
5
  RSpec.describe Reek::Smells::PrimaDonnaMethod do
@@ -15,8 +15,8 @@ RSpec.describe Reek::Smells::PrimaDonnaMethod do
15
15
  let(:detector) { build(:smell_detector, smell_type: :PrimaDonnaMethod, source: 'source_name') }
16
16
  let(:src) { 'class C; def m!; end; end' }
17
17
  let(:ctx) do
18
- Reek::Core::ModuleContext.new(nil,
19
- Reek::Source::SourceCode.from(src).syntax_tree)
18
+ Reek::Context::ModuleContext.new(nil,
19
+ Reek::Source::SourceCode.from(src).syntax_tree)
20
20
  end
21
21
 
22
22
  it 'should be reported' do
@@ -1,6 +1,6 @@
1
1
  require_relative '../../spec_helper'
2
2
  require_relative '../../../lib/reek/smells/repeated_conditional'
3
- require_relative '../../../lib/reek/core/code_context'
3
+ require_relative '../../../lib/reek/context/code_context'
4
4
  require_relative 'smell_detector_shared'
5
5
  require_relative '../../../lib/reek/source/source_code'
6
6
 
@@ -15,7 +15,7 @@ RSpec.describe Reek::Smells::RepeatedConditional do
15
15
  context 'with no conditionals' do
16
16
  it 'gathers an empty hash' do
17
17
  ast = Reek::Source::SourceCode.from('module Stable; end').syntax_tree
18
- ctx = Reek::Core::CodeContext.new(nil, ast)
18
+ ctx = Reek::Context::CodeContext.new(nil, ast)
19
19
  expect(@detector.conditional_counts(ctx).length).to eq(0)
20
20
  end
21
21
  end
@@ -23,7 +23,7 @@ RSpec.describe Reek::Smells::RepeatedConditional do
23
23
  context 'with a test of block_given?' do
24
24
  it 'does not record the condition' do
25
25
  ast = Reek::Source::SourceCode.from('def fred() yield(3) if block_given?; end').syntax_tree
26
- ctx = Reek::Core::CodeContext.new(nil, ast)
26
+ ctx = Reek::Context::CodeContext.new(nil, ast)
27
27
  expect(@detector.conditional_counts(ctx).length).to eq(0)
28
28
  end
29
29
  end
@@ -31,7 +31,7 @@ RSpec.describe Reek::Smells::RepeatedConditional do
31
31
  context 'with an empty condition' do
32
32
  it 'does not record the condition' do
33
33
  ast = Reek::Source::SourceCode.from('def fred() case; when 3; end; end').syntax_tree
34
- ctx = Reek::Core::CodeContext.new(nil, ast)
34
+ ctx = Reek::Context::CodeContext.new(nil, ast)
35
35
  expect(@detector.conditional_counts(ctx).length).to eq(0)
36
36
  end
37
37
  end
@@ -58,7 +58,7 @@ RSpec.describe Reek::Smells::RepeatedConditional do
58
58
  EOS
59
59
 
60
60
  ast = Reek::Source::SourceCode.from(src).syntax_tree
61
- @ctx = Reek::Core::CodeContext.new(nil, ast)
61
+ @ctx = Reek::Context::CodeContext.new(nil, ast)
62
62
  @conds = @detector.conditional_counts(@ctx)
63
63
  end
64
64
 
@@ -94,7 +94,7 @@ RSpec.describe Reek::Smells::RepeatedConditional do
94
94
  EOS
95
95
 
96
96
  ast = Reek::Source::SourceCode.from(src).syntax_tree
97
- ctx = Reek::Core::CodeContext.new(nil, ast)
97
+ ctx = Reek::Context::CodeContext.new(nil, ast)
98
98
  @conds = @detector.conditional_counts(ctx)
99
99
  end
100
100
 
@@ -1,9 +1,9 @@
1
1
  require_relative '../../spec_helper'
2
- require_relative '../../../lib/reek/core/smell_configuration'
2
+ require_relative '../../../lib/reek/smells/smell_configuration'
3
3
 
4
- RSpec.describe Reek::Core::SmellConfiguration do
4
+ RSpec.describe Reek::Smells::SmellConfiguration do
5
5
  it 'returns the default value when key not found' do
6
- cf = Reek::Core::SmellConfiguration.new({})
6
+ cf = described_class.new({})
7
7
  expect(cf.value('fred', nil, 27)).to eq(27)
8
8
  end
9
9
 
@@ -12,7 +12,7 @@ RSpec.describe Reek::Core::SmellConfiguration do
12
12
  @base_config = { 'enabled' => true, 'exclude' => [],
13
13
  'reject' => [/^.$/, /[0-9]$/, /[A-Z]/],
14
14
  'accept' => ['_'] }
15
- @smell_config = Reek::Core::SmellConfiguration.new(@base_config)
15
+ @smell_config = described_class.new(@base_config)
16
16
  end
17
17
 
18
18
  it { expect(@smell_config.merge!({})).to eq(@base_config) }
@@ -1,5 +1,5 @@
1
1
  require_relative '../../spec_helper'
2
- require_relative '../../../lib/reek/core/smell_configuration'
2
+ require_relative '../../../lib/reek/smells/smell_configuration'
3
3
 
4
4
  RSpec.shared_examples_for 'SmellDetector' do
5
5
  context 'exception matching follows the context' do
@@ -21,7 +21,7 @@ RSpec.shared_examples_for 'SmellDetector' do
21
21
 
22
22
  context 'configuration' do
23
23
  it 'becomes disabled when disabled' do
24
- enabled_key = Reek::Core::SmellConfiguration::ENABLED_KEY
24
+ enabled_key = Reek::Smells::SmellConfiguration::ENABLED_KEY
25
25
  @detector.configure_with(enabled_key => false)
26
26
  expect(@detector).not_to be_enabled
27
27
  end
@@ -1,9 +1,10 @@
1
1
  require_relative '../../spec_helper'
2
- require_relative '../../../lib/reek/core/smell_repository'
2
+ require_relative '../../../lib/reek/smells/smell_detector'
3
+ require_relative '../../../lib/reek/smells/smell_repository'
3
4
 
4
- RSpec.describe Reek::Core::SmellRepository do
5
+ RSpec.describe Reek::Smells::SmellRepository do
5
6
  describe '.smell_types' do
6
- let(:smell_types) { Reek::Core::SmellRepository.smell_types }
7
+ let(:smell_types) { described_class.smell_types }
7
8
 
8
9
  it 'should include existing smell_types' do
9
10
  expect(smell_types).to include(Reek::Smells::IrresponsibleModule)
@@ -19,7 +20,7 @@ RSpec.describe Reek::Core::SmellRepository do
19
20
  end
20
21
 
21
22
  it "should raise an ArgumentError if smell to configure doesn't exist" do
22
- repository = Reek::Core::SmellRepository.new
23
+ repository = described_class.new
23
24
  expect { repository.configure('SomethingNonExistant', {}) }.
24
25
  to raise_error ArgumentError,
25
26
  'Unknown smell type SomethingNonExistant found in configuration'
@@ -72,7 +72,7 @@ RSpec.describe Reek::Smells::TooManyInstanceVariables do
72
72
  end
73
73
  end
74
74
  EOS
75
- ctx = Reek::Core::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
75
+ ctx = Reek::Context::CodeContext.new(nil, Reek::Source::SourceCode.from(src).syntax_tree)
76
76
  @warning = @detector.examine_context(ctx)[0]
77
77
  expect(@warning.source).to eq(@source_name)
78
78
  expect(@warning.smell_category).to eq(Reek::Smells::TooManyInstanceVariables.smell_category)