reek 4.4.2 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +10 -1
  3. data/CHANGELOG.md +16 -0
  4. data/CONTRIBUTING.md +52 -23
  5. data/README.md +16 -3
  6. data/ataru_setup.rb +1 -1
  7. data/docs/API.md +1 -4
  8. data/docs/How-reek-works-internally.md +5 -5
  9. data/docs/Style-Guide.md +7 -0
  10. data/features/command_line_interface/options.feature +1 -0
  11. data/features/command_line_interface/show_progress.feature +33 -0
  12. data/features/configuration_files/masking_smells.feature +0 -1
  13. data/features/configuration_via_source_comments/erroneous_source_comments.feature +18 -4
  14. data/features/configuration_via_source_comments/well_formed_source_comments.feature +116 -0
  15. data/features/step_definitions/sample_file_steps.rb +5 -0
  16. data/features/todo_list.feature +42 -14
  17. data/lib/reek.rb +1 -1
  18. data/lib/reek/cli/application.rb +5 -0
  19. data/lib/reek/cli/command/report_command.rb +6 -1
  20. data/lib/reek/cli/command/todo_list_command.rb +1 -2
  21. data/lib/reek/cli/options.rb +19 -3
  22. data/lib/reek/code_comment.rb +83 -11
  23. data/lib/reek/configuration/configuration_validator.rb +2 -2
  24. data/lib/reek/errors/bad_detector_in_comment_error.rb +35 -0
  25. data/lib/reek/errors/garbage_detector_configuration_in_comment_error.rb +34 -0
  26. data/lib/reek/examiner.rb +36 -14
  27. data/lib/reek/report.rb +28 -9
  28. data/lib/reek/report/base_report.rb +77 -0
  29. data/lib/reek/report/code_climate.rb +4 -0
  30. data/lib/reek/report/code_climate/code_climate_fingerprint.rb +48 -0
  31. data/lib/reek/report/code_climate/code_climate_formatter.rb +5 -0
  32. data/lib/reek/report/code_climate/code_climate_report.rb +19 -0
  33. data/lib/reek/report/formatter.rb +5 -56
  34. data/lib/reek/report/{heading_formatter.rb → formatter/heading_formatter.rb} +4 -4
  35. data/lib/reek/report/formatter/location_formatter.rb +41 -0
  36. data/lib/reek/report/formatter/progress_formatter.rb +80 -0
  37. data/lib/reek/report/formatter/simple_warning_formatter.rb +35 -0
  38. data/lib/reek/report/formatter/wiki_link_warning_formatter.rb +35 -0
  39. data/lib/reek/report/html_report.rb +21 -0
  40. data/lib/reek/report/{html_report.html.erb → html_report/html_report.html.erb} +0 -0
  41. data/lib/reek/report/json_report.rb +18 -0
  42. data/lib/reek/report/text_report.rb +68 -0
  43. data/lib/reek/report/xml_report.rb +61 -0
  44. data/lib/reek/report/yaml_report.rb +18 -0
  45. data/lib/reek/smell_detectors.rb +30 -0
  46. data/lib/reek/{smells → smell_detectors}/attribute.rb +3 -3
  47. data/lib/reek/{smells/smell_detector.rb → smell_detectors/base_detector.rb} +3 -3
  48. data/lib/reek/{smells → smell_detectors}/boolean_parameter.rb +3 -3
  49. data/lib/reek/{smells → smell_detectors}/class_variable.rb +3 -3
  50. data/lib/reek/{smells → smell_detectors}/control_parameter.rb +3 -3
  51. data/lib/reek/{smells → smell_detectors}/data_clump.rb +3 -3
  52. data/lib/reek/{smells/smell_repository.rb → smell_detectors/detector_repository.rb} +9 -9
  53. data/lib/reek/{smells → smell_detectors}/duplicate_method_call.rb +3 -3
  54. data/lib/reek/{smells → smell_detectors}/feature_envy.rb +3 -3
  55. data/lib/reek/{smells → smell_detectors}/instance_variable_assumption.rb +3 -3
  56. data/lib/reek/{smells → smell_detectors}/irresponsible_module.rb +3 -3
  57. data/lib/reek/{smells → smell_detectors}/long_parameter_list.rb +3 -3
  58. data/lib/reek/{smells → smell_detectors}/long_yield_list.rb +3 -3
  59. data/lib/reek/{smells → smell_detectors}/manual_dispatch.rb +3 -3
  60. data/lib/reek/{smells → smell_detectors}/module_initialize.rb +3 -3
  61. data/lib/reek/{smells → smell_detectors}/nested_iterators.rb +3 -3
  62. data/lib/reek/{smells → smell_detectors}/nil_check.rb +3 -3
  63. data/lib/reek/{smells → smell_detectors}/prima_donna_method.rb +3 -3
  64. data/lib/reek/{smells → smell_detectors}/repeated_conditional.rb +3 -3
  65. data/lib/reek/{smells → smell_detectors}/smell_configuration.rb +1 -1
  66. data/lib/reek/{smells → smell_detectors}/smell_warning.rb +1 -1
  67. data/lib/reek/{smells → smell_detectors}/subclassed_from_core_class.rb +3 -3
  68. data/lib/reek/{smells → smell_detectors}/too_many_constants.rb +3 -3
  69. data/lib/reek/{smells → smell_detectors}/too_many_instance_variables.rb +3 -3
  70. data/lib/reek/{smells → smell_detectors}/too_many_methods.rb +3 -3
  71. data/lib/reek/{smells → smell_detectors}/too_many_statements.rb +3 -3
  72. data/lib/reek/{smells → smell_detectors}/uncommunicative_method_name.rb +3 -3
  73. data/lib/reek/{smells → smell_detectors}/uncommunicative_module_name.rb +3 -3
  74. data/lib/reek/{smells → smell_detectors}/uncommunicative_parameter_name.rb +3 -3
  75. data/lib/reek/{smells → smell_detectors}/uncommunicative_variable_name.rb +3 -3
  76. data/lib/reek/{smells → smell_detectors}/unused_parameters.rb +3 -3
  77. data/lib/reek/{smells → smell_detectors}/unused_private_method.rb +3 -3
  78. data/lib/reek/{smells → smell_detectors}/utility_function.rb +3 -3
  79. data/lib/reek/spec/should_reek_of.rb +1 -1
  80. data/lib/reek/version.rb +1 -1
  81. data/reek.gemspec +1 -1
  82. data/spec/factories/factories.rb +6 -6
  83. data/spec/reek/cli/command/report_command_spec.rb +3 -1
  84. data/spec/reek/cli/options_spec.rb +12 -2
  85. data/spec/reek/code_comment_spec.rb +18 -6
  86. data/spec/reek/configuration/app_configuration_spec.rb +12 -12
  87. data/spec/reek/configuration/default_directive_spec.rb +1 -1
  88. data/spec/reek/configuration/directory_directives_spec.rb +2 -2
  89. data/spec/reek/examiner_spec.rb +56 -28
  90. data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +122 -0
  91. data/spec/reek/report/{code_climate_formatter_spec.rb → code_climate/code_climate_formatter_spec.rb} +6 -2
  92. data/spec/reek/report/{code_climate_report_spec.rb → code_climate/code_climate_report_spec.rb} +7 -5
  93. data/spec/reek/report/{location_formatter_spec.rb → formatter/location_formatter_spec.rb} +4 -4
  94. data/spec/reek/report/formatter/progress_formatter_spec.rb +68 -0
  95. data/spec/reek/report/html_report_spec.rb +1 -1
  96. data/spec/reek/report/json_report_spec.rb +2 -2
  97. data/spec/reek/report/text_report_spec.rb +3 -4
  98. data/spec/reek/report/xml_report_spec.rb +1 -1
  99. data/spec/reek/report/yaml_report_spec.rb +2 -2
  100. data/spec/reek/report_spec.rb +3 -3
  101. data/spec/reek/{smells → smell_detectors}/attribute_spec.rb +2 -2
  102. data/spec/reek/{smells/smell_detector_spec.rb → smell_detectors/base_detector_spec.rb} +5 -5
  103. data/spec/reek/{smells → smell_detectors}/boolean_parameter_spec.rb +2 -2
  104. data/spec/reek/{smells → smell_detectors}/class_variable_spec.rb +2 -2
  105. data/spec/reek/{smells → smell_detectors}/control_parameter_spec.rb +2 -2
  106. data/spec/reek/{smells → smell_detectors}/data_clump_spec.rb +2 -2
  107. data/spec/reek/smell_detectors/detector_repository_spec.rb +22 -0
  108. data/spec/reek/{smells → smell_detectors}/duplicate_method_call_spec.rb +6 -6
  109. data/spec/reek/{smells → smell_detectors}/feature_envy_spec.rb +2 -2
  110. data/spec/reek/{smells → smell_detectors}/instance_variable_assumption_spec.rb +2 -2
  111. data/spec/reek/{smells → smell_detectors}/irresponsible_module_spec.rb +2 -2
  112. data/spec/reek/{smells → smell_detectors}/long_parameter_list_spec.rb +2 -2
  113. data/spec/reek/{smells → smell_detectors}/long_yield_list_spec.rb +2 -2
  114. data/spec/reek/{smells → smell_detectors}/manual_dispatch_spec.rb +2 -2
  115. data/spec/reek/{smells → smell_detectors}/module_initialize_spec.rb +2 -2
  116. data/spec/reek/{smells → smell_detectors}/nested_iterators_spec.rb +4 -4
  117. data/spec/reek/{smells → smell_detectors}/nil_check_spec.rb +2 -2
  118. data/spec/reek/{smells → smell_detectors}/prima_donna_method_spec.rb +2 -2
  119. data/spec/reek/{smells → smell_detectors}/repeated_conditional_spec.rb +2 -2
  120. data/spec/reek/{smells → smell_detectors}/smell_configuration_spec.rb +2 -2
  121. data/spec/reek/{smells → smell_detectors}/smell_warning_spec.rb +3 -3
  122. data/spec/reek/{smells → smell_detectors}/subclassed_from_core_class_spec.rb +2 -2
  123. data/spec/reek/{smells → smell_detectors}/too_many_constants_spec.rb +3 -3
  124. data/spec/reek/{smells → smell_detectors}/too_many_instance_variables_spec.rb +3 -3
  125. data/spec/reek/{smells → smell_detectors}/too_many_methods_spec.rb +3 -3
  126. data/spec/reek/{smells → smell_detectors}/too_many_statements_spec.rb +3 -3
  127. data/spec/reek/{smells → smell_detectors}/uncommunicative_method_name_spec.rb +2 -2
  128. data/spec/reek/{smells → smell_detectors}/uncommunicative_module_name_spec.rb +2 -2
  129. data/spec/reek/{smells → smell_detectors}/uncommunicative_parameter_name_spec.rb +2 -2
  130. data/spec/reek/{smells → smell_detectors}/uncommunicative_variable_name_spec.rb +2 -2
  131. data/spec/reek/{smells → smell_detectors}/unused_parameters_spec.rb +2 -2
  132. data/spec/reek/{smells → smell_detectors}/unused_private_method_spec.rb +4 -4
  133. data/spec/reek/{smells → smell_detectors}/utility_function_spec.rb +3 -3
  134. data/spec/reek/spec/should_reek_of_spec.rb +3 -3
  135. data/tasks/configuration.rake +2 -2
  136. metadata +95 -81
  137. data/features/smells/subclassed_from_core_class.feature +0 -14
  138. data/features/smells/too_many_constants.feature +0 -19
  139. data/lib/reek/errors.rb +0 -32
  140. data/lib/reek/report/location_formatter.rb +0 -39
  141. data/lib/reek/report/report.rb +0 -229
  142. data/lib/reek/smells.rb +0 -30
  143. data/spec/reek/smells/smell_repository_spec.rb +0 -22
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/too_many_constants'
2
+ require_lib 'reek/smell_detectors/too_many_constants'
3
3
 
4
- RSpec.describe Reek::Smells::ManualDispatch do
4
+ RSpec.describe Reek::SmellDetectors::ManualDispatch do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  class Alfa
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/module_initialize'
2
+ require_lib 'reek/smell_detectors/module_initialize'
3
3
 
4
- RSpec.describe Reek::Smells::ModuleInitialize do
4
+ RSpec.describe Reek::SmellDetectors::ModuleInitialize do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  module Alfa
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/nested_iterators'
2
+ require_lib 'reek/smell_detectors/nested_iterators'
3
3
 
4
- RSpec.describe Reek::Smells::NestedIterators do
4
+ RSpec.describe Reek::SmellDetectors::NestedIterators do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  def alfa(bravo)
@@ -225,7 +225,7 @@ RSpec.describe Reek::Smells::NestedIterators do
225
225
 
226
226
  context 'setting the allowed nesting depth to 3' do
227
227
  let(:config) do
228
- { Reek::Smells::NestedIterators::MAX_ALLOWED_NESTING_KEY => 3 }
228
+ { Reek::SmellDetectors::NestedIterators::MAX_ALLOWED_NESTING_KEY => 3 }
229
229
  end
230
230
 
231
231
  it 'does not report nested iterators 3 levels deep' do
@@ -261,7 +261,7 @@ RSpec.describe Reek::Smells::NestedIterators do
261
261
 
262
262
  context 'when ignoring iterators' do
263
263
  let(:config) do
264
- { Reek::Smells::NestedIterators::IGNORE_ITERATORS_KEY => ['ignore_me'] }
264
+ { Reek::SmellDetectors::NestedIterators::IGNORE_ITERATORS_KEY => ['ignore_me'] }
265
265
  end
266
266
 
267
267
  it 'does not report when nesting the ignored iterator inside another' do
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/nil_check'
2
+ require_lib 'reek/smell_detectors/nil_check'
3
3
 
4
- RSpec.describe Reek::Smells::NilCheck do
4
+ RSpec.describe Reek::SmellDetectors::NilCheck do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  def alfa(bravo)
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/prima_donna_method'
2
+ require_lib 'reek/smell_detectors/prima_donna_method'
3
3
 
4
- RSpec.describe Reek::Smells::PrimaDonnaMethod do
4
+ RSpec.describe Reek::SmellDetectors::PrimaDonnaMethod do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  class Alfa
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/repeated_conditional'
2
+ require_lib 'reek/smell_detectors/repeated_conditional'
3
3
 
4
- RSpec.describe Reek::Smells::RepeatedConditional do
4
+ RSpec.describe Reek::SmellDetectors::RepeatedConditional do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  class Alfa
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/smell_configuration'
2
+ require_lib 'reek/smell_detectors/smell_configuration'
3
3
 
4
- RSpec.describe Reek::Smells::SmellConfiguration do
4
+ RSpec.describe Reek::SmellDetectors::SmellConfiguration do
5
5
  context 'when overriding default configs' do
6
6
  let(:base_config) do
7
7
  {
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/smell_warning'
2
+ require_lib 'reek/smell_detectors/smell_warning'
3
3
 
4
- RSpec.describe Reek::Smells::SmellWarning do
4
+ RSpec.describe Reek::SmellDetectors::SmellWarning do
5
5
  let(:duplication_detector) { build(:smell_detector, smell_type: 'DuplicateMethodCall') }
6
6
  let(:feature_envy_detector) { build(:smell_detector, smell_type: 'FeatureEnvy') }
7
7
  let(:utility_function_detector) { build(:smell_detector, smell_type: 'UtilityFunction') }
@@ -101,7 +101,7 @@ RSpec.describe Reek::Smells::SmellWarning do
101
101
  let(:context_name) { 'Module::Class#method/block' }
102
102
  let(:lines) { [24, 513] }
103
103
  let(:message) { 'test message' }
104
- let(:detector) { Reek::Smells::FeatureEnvy.new }
104
+ let(:detector) { Reek::SmellDetectors::FeatureEnvy.new }
105
105
  let(:parameters) { { 'one' => 34, 'two' => 'second' } }
106
106
  let(:smell_type) { 'FeatureEnvy' }
107
107
  let(:source) { 'a/ruby/source/file.rb' }
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/subclassed_from_core_class'
2
+ require_lib 'reek/smell_detectors/subclassed_from_core_class'
3
3
 
4
- RSpec.describe Reek::Smells::SubclassedFromCoreClass do
4
+ RSpec.describe Reek::SmellDetectors::SubclassedFromCoreClass do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  class Alfa < Hash
@@ -1,9 +1,9 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/too_many_constants'
2
+ require_lib 'reek/smell_detectors/too_many_constants'
3
3
 
4
- RSpec.describe Reek::Smells::TooManyConstants do
4
+ RSpec.describe Reek::SmellDetectors::TooManyConstants do
5
5
  let(:config) do
6
- { Reek::Smells::TooManyConstants::MAX_ALLOWED_CONSTANTS_KEY => 2 }
6
+ { Reek::SmellDetectors::TooManyConstants::MAX_ALLOWED_CONSTANTS_KEY => 2 }
7
7
  end
8
8
 
9
9
  it 'reports the right values' do
@@ -1,9 +1,9 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/too_many_instance_variables'
2
+ require_lib 'reek/smell_detectors/too_many_instance_variables'
3
3
 
4
- RSpec.describe Reek::Smells::TooManyInstanceVariables do
4
+ RSpec.describe Reek::SmellDetectors::TooManyInstanceVariables do
5
5
  let(:config) do
6
- { Reek::Smells::TooManyInstanceVariables::MAX_ALLOWED_IVARS_KEY => 2 }
6
+ { Reek::SmellDetectors::TooManyInstanceVariables::MAX_ALLOWED_IVARS_KEY => 2 }
7
7
  end
8
8
 
9
9
  it 'reports the right values' do
@@ -1,9 +1,9 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/too_many_methods'
2
+ require_lib 'reek/smell_detectors/too_many_methods'
3
3
 
4
- RSpec.describe Reek::Smells::TooManyMethods do
4
+ RSpec.describe Reek::SmellDetectors::TooManyMethods do
5
5
  let(:config) do
6
- { Reek::Smells::TooManyMethods::MAX_ALLOWED_METHODS_KEY => 3 }
6
+ { Reek::SmellDetectors::TooManyMethods::MAX_ALLOWED_METHODS_KEY => 3 }
7
7
  end
8
8
 
9
9
  it 'reports the right values' do
@@ -1,9 +1,9 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/too_many_statements'
2
+ require_lib 'reek/smell_detectors/too_many_statements'
3
3
 
4
- RSpec.describe Reek::Smells::TooManyStatements do
4
+ RSpec.describe Reek::SmellDetectors::TooManyStatements do
5
5
  let(:config) do
6
- { Reek::Smells::TooManyStatements::MAX_ALLOWED_STATEMENTS_KEY => 2 }
6
+ { Reek::SmellDetectors::TooManyStatements::MAX_ALLOWED_STATEMENTS_KEY => 2 }
7
7
  end
8
8
 
9
9
  it 'reports the right values' do
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/uncommunicative_method_name'
2
+ require_lib 'reek/smell_detectors/uncommunicative_method_name'
3
3
 
4
- RSpec.describe Reek::Smells::UncommunicativeMethodName do
4
+ RSpec.describe Reek::SmellDetectors::UncommunicativeMethodName do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  def m; end
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/uncommunicative_module_name'
2
+ require_lib 'reek/smell_detectors/uncommunicative_module_name'
3
3
 
4
- RSpec.describe Reek::Smells::UncommunicativeModuleName do
4
+ RSpec.describe Reek::SmellDetectors::UncommunicativeModuleName do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  class K
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/uncommunicative_parameter_name'
2
+ require_lib 'reek/smell_detectors/uncommunicative_parameter_name'
3
3
 
4
- RSpec.describe Reek::Smells::UncommunicativeParameterName do
4
+ RSpec.describe Reek::SmellDetectors::UncommunicativeParameterName do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  def alfa(x)
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/uncommunicative_variable_name'
2
+ require_lib 'reek/smell_detectors/uncommunicative_variable_name'
3
3
 
4
- RSpec.describe Reek::Smells::UncommunicativeVariableName do
4
+ RSpec.describe Reek::SmellDetectors::UncommunicativeVariableName do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  def alfa
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/unused_parameters'
2
+ require_lib 'reek/smell_detectors/unused_parameters'
3
3
 
4
- RSpec.describe Reek::Smells::UnusedParameters do
4
+ RSpec.describe Reek::SmellDetectors::UnusedParameters do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  def alfa(bravo)
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/unused_private_method'
2
+ require_lib 'reek/smell_detectors/unused_private_method'
3
3
 
4
- RSpec.describe Reek::Smells::UnusedPrivateMethod do
4
+ RSpec.describe Reek::SmellDetectors::UnusedPrivateMethod do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  class Alfa
@@ -176,7 +176,7 @@ RSpec.describe Reek::Smells::UnusedPrivateMethod do
176
176
  end
177
177
 
178
178
  it 'excludes them via direct match in the app configuration' do
179
- config = { Reek::Smells::SmellDetector::EXCLUDE_KEY => ['Alfa#charlie'] }
179
+ config = { Reek::SmellDetectors::BaseDetector::EXCLUDE_KEY => ['Alfa#charlie'] }
180
180
 
181
181
  expect(source).
182
182
  to reek_of(:UnusedPrivateMethod, name: 'bravo').with_config(config).
@@ -184,7 +184,7 @@ RSpec.describe Reek::Smells::UnusedPrivateMethod do
184
184
  end
185
185
 
186
186
  it 'excludes them via regex in the app configuration' do
187
- config = { Reek::Smells::SmellDetector::EXCLUDE_KEY => [/charlie/] }
187
+ config = { Reek::SmellDetectors::BaseDetector::EXCLUDE_KEY => [/charlie/] }
188
188
 
189
189
  expect(source).
190
190
  to reek_of(:UnusedPrivateMethod, name: 'bravo').with_config(config).
@@ -1,7 +1,7 @@
1
1
  require_relative '../../spec_helper'
2
- require_lib 'reek/smells/utility_function'
2
+ require_lib 'reek/smell_detectors/utility_function'
3
3
 
4
- RSpec.describe Reek::Smells::UtilityFunction do
4
+ RSpec.describe Reek::SmellDetectors::UtilityFunction do
5
5
  it 'reports the right values' do
6
6
  src = <<-EOS
7
7
  def alfa(bravo)
@@ -191,7 +191,7 @@ RSpec.describe Reek::Smells::UtilityFunction do
191
191
 
192
192
  describe 'disabling UtilityFunction via configuration for non-public methods' do
193
193
  let(:config) do
194
- { Reek::Smells::UtilityFunction::PUBLIC_METHODS_ONLY_KEY => true }
194
+ { Reek::SmellDetectors::UtilityFunction::PUBLIC_METHODS_ONLY_KEY => true }
195
195
  end
196
196
 
197
197
  context 'public methods' do
@@ -13,7 +13,7 @@ RSpec.describe Reek::Spec::ShouldReekOf do
13
13
  end
14
14
 
15
15
  it 'reports duplicate calls by smell detector class' do
16
- expect(ruby).to reek_of(Reek::Smells::DuplicateMethodCall)
16
+ expect(ruby).to reek_of(Reek::SmellDetectors::DuplicateMethodCall)
17
17
  end
18
18
 
19
19
  it 'does not report any feature envy' do
@@ -132,8 +132,8 @@ RSpec.describe Reek::Spec::ShouldReekOf do
132
132
 
133
133
  context 'for a smell that is disabled by default' do
134
134
  before do
135
- default_config = Reek::Smells::UnusedPrivateMethod.default_config
136
- expect(default_config[Reek::Smells::SmellConfiguration::ENABLED_KEY]).to be_falsy
135
+ default_config = Reek::SmellDetectors::UnusedPrivateMethod.default_config
136
+ expect(default_config[Reek::SmellDetectors::SmellConfiguration::ENABLED_KEY]).to be_falsy
137
137
  end
138
138
 
139
139
  it 'enables the smell detector to match automatically' do
@@ -1,11 +1,11 @@
1
- require_relative '../lib/reek/smells/smell_repository'
1
+ require_relative '../lib/reek/smell_detectors/detector_repository'
2
2
  require 'yaml'
3
3
 
4
4
  namespace :configuration do
5
5
  desc 'Updates the default configuration file when smell defaults change'
6
6
  task :update_default_configuration do
7
7
  DEFAULT_SMELL_CONFIGURATION = 'defaults.reek'.freeze
8
- content = Reek::Smells::SmellRepository.smell_types.each_with_object({}) do |klass, hash|
8
+ content = Reek::SmellDetectors::DetectorRepository.smell_types.each_with_object({}) do |klass, hash|
9
9
  hash[klass.smell_type] = klass.default_config
10
10
  end
11
11
  File.open(DEFAULT_SMELL_CONFIGURATION, 'w') { |file| YAML.dump(content, file) }
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.4.2
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Rutherford
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-09-21 00:00:00.000000000 Z
14
+ date: 2016-10-13 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: codeclimate-engine-rb
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: 0.3.1
22
+ version: 0.4.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 0.3.1
29
+ version: 0.4.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: parser
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -144,6 +144,7 @@ files:
144
144
  - engine.json
145
145
  - features/command_line_interface/basic_usage.feature
146
146
  - features/command_line_interface/options.feature
147
+ - features/command_line_interface/show_progress.feature
147
148
  - features/command_line_interface/smell_selection.feature
148
149
  - features/command_line_interface/smells_count.feature
149
150
  - features/command_line_interface/stdin.feature
@@ -156,14 +157,13 @@ files:
156
157
  - features/configuration_files/unused_private_method.feature
157
158
  - features/configuration_loading.feature
158
159
  - features/configuration_via_source_comments/erroneous_source_comments.feature
160
+ - features/configuration_via_source_comments/well_formed_source_comments.feature
159
161
  - features/programmatic_access.feature
160
162
  - features/rake_task/rake_task.feature
161
163
  - features/reports/json.feature
162
164
  - features/reports/reports.feature
163
165
  - features/reports/yaml.feature
164
166
  - features/samples.feature
165
- - features/smells/subclassed_from_core_class.feature
166
- - features/smells/too_many_constants.feature
167
167
  - features/step_definitions/.rubocop.yml
168
168
  - features/step_definitions/reek_steps.rb
169
169
  - features/step_definitions/sample_file_steps.rb
@@ -220,51 +220,63 @@ files:
220
220
  - lib/reek/context/statement_counter.rb
221
221
  - lib/reek/context/visibility_tracker.rb
222
222
  - lib/reek/context_builder.rb
223
- - lib/reek/errors.rb
223
+ - lib/reek/errors/bad_detector_in_comment_error.rb
224
+ - lib/reek/errors/garbage_detector_configuration_in_comment_error.rb
224
225
  - lib/reek/examiner.rb
225
226
  - lib/reek/rake/task.rb
226
227
  - lib/reek/report.rb
228
+ - lib/reek/report/base_report.rb
229
+ - lib/reek/report/code_climate.rb
227
230
  - lib/reek/report/code_climate/code_climate_configuration.yml
231
+ - lib/reek/report/code_climate/code_climate_fingerprint.rb
228
232
  - lib/reek/report/code_climate/code_climate_formatter.rb
233
+ - lib/reek/report/code_climate/code_climate_report.rb
229
234
  - lib/reek/report/formatter.rb
230
- - lib/reek/report/heading_formatter.rb
231
- - lib/reek/report/html_report.html.erb
232
- - lib/reek/report/location_formatter.rb
233
- - lib/reek/report/report.rb
234
- - lib/reek/smells.rb
235
- - lib/reek/smells/attribute.rb
236
- - lib/reek/smells/boolean_parameter.rb
237
- - lib/reek/smells/class_variable.rb
238
- - lib/reek/smells/control_parameter.rb
239
- - lib/reek/smells/data_clump.rb
240
- - lib/reek/smells/duplicate_method_call.rb
241
- - lib/reek/smells/feature_envy.rb
242
- - lib/reek/smells/instance_variable_assumption.rb
243
- - lib/reek/smells/irresponsible_module.rb
244
- - lib/reek/smells/long_parameter_list.rb
245
- - lib/reek/smells/long_yield_list.rb
246
- - lib/reek/smells/manual_dispatch.rb
247
- - lib/reek/smells/module_initialize.rb
248
- - lib/reek/smells/nested_iterators.rb
249
- - lib/reek/smells/nil_check.rb
250
- - lib/reek/smells/prima_donna_method.rb
251
- - lib/reek/smells/repeated_conditional.rb
252
- - lib/reek/smells/smell_configuration.rb
253
- - lib/reek/smells/smell_detector.rb
254
- - lib/reek/smells/smell_repository.rb
255
- - lib/reek/smells/smell_warning.rb
256
- - lib/reek/smells/subclassed_from_core_class.rb
257
- - lib/reek/smells/too_many_constants.rb
258
- - lib/reek/smells/too_many_instance_variables.rb
259
- - lib/reek/smells/too_many_methods.rb
260
- - lib/reek/smells/too_many_statements.rb
261
- - lib/reek/smells/uncommunicative_method_name.rb
262
- - lib/reek/smells/uncommunicative_module_name.rb
263
- - lib/reek/smells/uncommunicative_parameter_name.rb
264
- - lib/reek/smells/uncommunicative_variable_name.rb
265
- - lib/reek/smells/unused_parameters.rb
266
- - lib/reek/smells/unused_private_method.rb
267
- - lib/reek/smells/utility_function.rb
235
+ - lib/reek/report/formatter/heading_formatter.rb
236
+ - lib/reek/report/formatter/location_formatter.rb
237
+ - lib/reek/report/formatter/progress_formatter.rb
238
+ - lib/reek/report/formatter/simple_warning_formatter.rb
239
+ - lib/reek/report/formatter/wiki_link_warning_formatter.rb
240
+ - lib/reek/report/html_report.rb
241
+ - lib/reek/report/html_report/html_report.html.erb
242
+ - lib/reek/report/json_report.rb
243
+ - lib/reek/report/text_report.rb
244
+ - lib/reek/report/xml_report.rb
245
+ - lib/reek/report/yaml_report.rb
246
+ - lib/reek/smell_detectors.rb
247
+ - lib/reek/smell_detectors/attribute.rb
248
+ - lib/reek/smell_detectors/base_detector.rb
249
+ - lib/reek/smell_detectors/boolean_parameter.rb
250
+ - lib/reek/smell_detectors/class_variable.rb
251
+ - lib/reek/smell_detectors/control_parameter.rb
252
+ - lib/reek/smell_detectors/data_clump.rb
253
+ - lib/reek/smell_detectors/detector_repository.rb
254
+ - lib/reek/smell_detectors/duplicate_method_call.rb
255
+ - lib/reek/smell_detectors/feature_envy.rb
256
+ - lib/reek/smell_detectors/instance_variable_assumption.rb
257
+ - lib/reek/smell_detectors/irresponsible_module.rb
258
+ - lib/reek/smell_detectors/long_parameter_list.rb
259
+ - lib/reek/smell_detectors/long_yield_list.rb
260
+ - lib/reek/smell_detectors/manual_dispatch.rb
261
+ - lib/reek/smell_detectors/module_initialize.rb
262
+ - lib/reek/smell_detectors/nested_iterators.rb
263
+ - lib/reek/smell_detectors/nil_check.rb
264
+ - lib/reek/smell_detectors/prima_donna_method.rb
265
+ - lib/reek/smell_detectors/repeated_conditional.rb
266
+ - lib/reek/smell_detectors/smell_configuration.rb
267
+ - lib/reek/smell_detectors/smell_warning.rb
268
+ - lib/reek/smell_detectors/subclassed_from_core_class.rb
269
+ - lib/reek/smell_detectors/too_many_constants.rb
270
+ - lib/reek/smell_detectors/too_many_instance_variables.rb
271
+ - lib/reek/smell_detectors/too_many_methods.rb
272
+ - lib/reek/smell_detectors/too_many_statements.rb
273
+ - lib/reek/smell_detectors/uncommunicative_method_name.rb
274
+ - lib/reek/smell_detectors/uncommunicative_module_name.rb
275
+ - lib/reek/smell_detectors/uncommunicative_parameter_name.rb
276
+ - lib/reek/smell_detectors/uncommunicative_variable_name.rb
277
+ - lib/reek/smell_detectors/unused_parameters.rb
278
+ - lib/reek/smell_detectors/unused_private_method.rb
279
+ - lib/reek/smell_detectors/utility_function.rb
268
280
  - lib/reek/source/source_code.rb
269
281
  - lib/reek/source/source_locator.rb
270
282
  - lib/reek/spec.rb
@@ -332,48 +344,50 @@ files:
332
344
  - spec/reek/context_builder_spec.rb
333
345
  - spec/reek/examiner_spec.rb
334
346
  - spec/reek/rake/task_spec.rb
335
- - spec/reek/report/code_climate_formatter_spec.rb
336
- - spec/reek/report/code_climate_report_spec.rb
347
+ - spec/reek/report/code_climate/code_climate_fingerprint_spec.rb
348
+ - spec/reek/report/code_climate/code_climate_formatter_spec.rb
349
+ - spec/reek/report/code_climate/code_climate_report_spec.rb
350
+ - spec/reek/report/formatter/location_formatter_spec.rb
351
+ - spec/reek/report/formatter/progress_formatter_spec.rb
337
352
  - spec/reek/report/html_report_spec.rb
338
353
  - spec/reek/report/json_report_spec.rb
339
- - spec/reek/report/location_formatter_spec.rb
340
354
  - spec/reek/report/text_report_spec.rb
341
355
  - spec/reek/report/xml_report_spec.rb
342
356
  - spec/reek/report/yaml_report_spec.rb
343
357
  - spec/reek/report_spec.rb
344
- - spec/reek/smells/attribute_spec.rb
345
- - spec/reek/smells/boolean_parameter_spec.rb
346
- - spec/reek/smells/class_variable_spec.rb
347
- - spec/reek/smells/control_parameter_spec.rb
348
- - spec/reek/smells/data_clump_spec.rb
349
- - spec/reek/smells/duplicate_method_call_spec.rb
350
- - spec/reek/smells/feature_envy_spec.rb
351
- - spec/reek/smells/instance_variable_assumption_spec.rb
352
- - spec/reek/smells/irresponsible_module_spec.rb
353
- - spec/reek/smells/long_parameter_list_spec.rb
354
- - spec/reek/smells/long_yield_list_spec.rb
355
- - spec/reek/smells/manual_dispatch_spec.rb
356
- - spec/reek/smells/module_initialize_spec.rb
357
- - spec/reek/smells/nested_iterators_spec.rb
358
- - spec/reek/smells/nil_check_spec.rb
359
- - spec/reek/smells/prima_donna_method_spec.rb
360
- - spec/reek/smells/repeated_conditional_spec.rb
361
- - spec/reek/smells/smell_configuration_spec.rb
362
- - spec/reek/smells/smell_detector_spec.rb
363
- - spec/reek/smells/smell_repository_spec.rb
364
- - spec/reek/smells/smell_warning_spec.rb
365
- - spec/reek/smells/subclassed_from_core_class_spec.rb
366
- - spec/reek/smells/too_many_constants_spec.rb
367
- - spec/reek/smells/too_many_instance_variables_spec.rb
368
- - spec/reek/smells/too_many_methods_spec.rb
369
- - spec/reek/smells/too_many_statements_spec.rb
370
- - spec/reek/smells/uncommunicative_method_name_spec.rb
371
- - spec/reek/smells/uncommunicative_module_name_spec.rb
372
- - spec/reek/smells/uncommunicative_parameter_name_spec.rb
373
- - spec/reek/smells/uncommunicative_variable_name_spec.rb
374
- - spec/reek/smells/unused_parameters_spec.rb
375
- - spec/reek/smells/unused_private_method_spec.rb
376
- - spec/reek/smells/utility_function_spec.rb
358
+ - spec/reek/smell_detectors/attribute_spec.rb
359
+ - spec/reek/smell_detectors/base_detector_spec.rb
360
+ - spec/reek/smell_detectors/boolean_parameter_spec.rb
361
+ - spec/reek/smell_detectors/class_variable_spec.rb
362
+ - spec/reek/smell_detectors/control_parameter_spec.rb
363
+ - spec/reek/smell_detectors/data_clump_spec.rb
364
+ - spec/reek/smell_detectors/detector_repository_spec.rb
365
+ - spec/reek/smell_detectors/duplicate_method_call_spec.rb
366
+ - spec/reek/smell_detectors/feature_envy_spec.rb
367
+ - spec/reek/smell_detectors/instance_variable_assumption_spec.rb
368
+ - spec/reek/smell_detectors/irresponsible_module_spec.rb
369
+ - spec/reek/smell_detectors/long_parameter_list_spec.rb
370
+ - spec/reek/smell_detectors/long_yield_list_spec.rb
371
+ - spec/reek/smell_detectors/manual_dispatch_spec.rb
372
+ - spec/reek/smell_detectors/module_initialize_spec.rb
373
+ - spec/reek/smell_detectors/nested_iterators_spec.rb
374
+ - spec/reek/smell_detectors/nil_check_spec.rb
375
+ - spec/reek/smell_detectors/prima_donna_method_spec.rb
376
+ - spec/reek/smell_detectors/repeated_conditional_spec.rb
377
+ - spec/reek/smell_detectors/smell_configuration_spec.rb
378
+ - spec/reek/smell_detectors/smell_warning_spec.rb
379
+ - spec/reek/smell_detectors/subclassed_from_core_class_spec.rb
380
+ - spec/reek/smell_detectors/too_many_constants_spec.rb
381
+ - spec/reek/smell_detectors/too_many_instance_variables_spec.rb
382
+ - spec/reek/smell_detectors/too_many_methods_spec.rb
383
+ - spec/reek/smell_detectors/too_many_statements_spec.rb
384
+ - spec/reek/smell_detectors/uncommunicative_method_name_spec.rb
385
+ - spec/reek/smell_detectors/uncommunicative_module_name_spec.rb
386
+ - spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb
387
+ - spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb
388
+ - spec/reek/smell_detectors/unused_parameters_spec.rb
389
+ - spec/reek/smell_detectors/unused_private_method_spec.rb
390
+ - spec/reek/smell_detectors/utility_function_spec.rb
377
391
  - spec/reek/source/source_code_spec.rb
378
392
  - spec/reek/source/source_locator_spec.rb
379
393
  - spec/reek/spec/should_reek_of_spec.rb