reek 2.2.1 → 3.0.0

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.
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)