reek 6.0.2 → 6.1.4

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 (247) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ruby.yml +57 -0
  4. data/.rubocop.yml +6 -4
  5. data/.rubocop_todo.yml +6 -4
  6. data/CHANGELOG.md +42 -0
  7. data/CONTRIBUTING.md +4 -1
  8. data/Dockerfile +1 -1
  9. data/Gemfile +7 -7
  10. data/README.md +2 -2
  11. data/bin/code_climate_reek +2 -3
  12. data/lib/reek/ast/ast_node_class_map.rb +1 -1
  13. data/lib/reek/ast/node.rb +1 -1
  14. data/lib/reek/ast/sexp_extensions/arguments.rb +20 -0
  15. data/lib/reek/ast/sexp_extensions/case.rb +1 -1
  16. data/lib/reek/ast/sexp_extensions/if.rb +1 -1
  17. data/lib/reek/ast/sexp_extensions/send.rb +1 -1
  18. data/lib/reek/cli/command/todo_list_command.rb +2 -2
  19. data/lib/reek/cli/options.rb +6 -6
  20. data/lib/reek/code_comment.rb +22 -17
  21. data/lib/reek/configuration/configuration_file_finder.rb +2 -1
  22. data/lib/reek/configuration/excluded_paths.rb +2 -1
  23. data/lib/reek/context/code_context.rb +1 -1
  24. data/lib/reek/context/module_context.rb +4 -0
  25. data/lib/reek/context/refinement_context.rb +16 -0
  26. data/lib/reek/context/send_context.rb +6 -0
  27. data/lib/reek/context_builder.rb +17 -3
  28. data/lib/reek/rake/task.rb +5 -5
  29. data/lib/reek/report/code_climate/code_climate_configuration.yml +3 -3
  30. data/lib/reek/report/code_climate/code_climate_formatter.rb +1 -3
  31. data/lib/reek/smell_detectors/base_detector.rb +1 -1
  32. data/lib/reek/smell_detectors/class_variable.rb +2 -2
  33. data/lib/reek/smell_detectors/control_parameter_helpers/candidate.rb +6 -6
  34. data/lib/reek/smell_detectors/duplicate_method_call.rb +5 -5
  35. data/lib/reek/smell_detectors/unused_private_method.rb +1 -0
  36. data/lib/reek/smell_warning.rb +1 -1
  37. data/lib/reek/source/source_locator.rb +1 -3
  38. data/lib/reek/spec/should_reek_of.rb +11 -9
  39. data/lib/reek/spec.rb +1 -1
  40. data/lib/reek/version.rb +2 -2
  41. data/reek.gemspec +28 -25
  42. metadata +13 -240
  43. data/.travis.yml +0 -40
  44. data/docs/API.md +0 -174
  45. data/docs/Attribute.md +0 -39
  46. data/docs/Basic-Smell-Options.md +0 -85
  47. data/docs/Boolean-Parameter.md +0 -54
  48. data/docs/Class-Variable.md +0 -40
  49. data/docs/Code-Smells.md +0 -39
  50. data/docs/Command-Line-Options.md +0 -119
  51. data/docs/Control-Couple.md +0 -26
  52. data/docs/Control-Parameter.md +0 -32
  53. data/docs/Data-Clump.md +0 -46
  54. data/docs/Duplicate-Method-Call.md +0 -264
  55. data/docs/Feature-Envy.md +0 -93
  56. data/docs/How-To-Write-New-Detectors.md +0 -132
  57. data/docs/How-reek-works-internally.md +0 -114
  58. data/docs/Instance-Variable-Assumption.md +0 -163
  59. data/docs/Irresponsible-Module.md +0 -47
  60. data/docs/Large-Class.md +0 -16
  61. data/docs/Long-Parameter-List.md +0 -39
  62. data/docs/Long-Yield-List.md +0 -37
  63. data/docs/Manual-Dispatch.md +0 -30
  64. data/docs/Missing-Safe-Method.md +0 -92
  65. data/docs/Module-Initialize.md +0 -62
  66. data/docs/Nested-Iterators.md +0 -59
  67. data/docs/Nil-Check.md +0 -47
  68. data/docs/RSpec-matchers.md +0 -129
  69. data/docs/Rake-Task.md +0 -66
  70. data/docs/Reek-4-to-Reek-5-migration.md +0 -188
  71. data/docs/Reek-Driven-Development.md +0 -46
  72. data/docs/Repeated-Conditional.md +0 -47
  73. data/docs/Simulated-Polymorphism.md +0 -16
  74. data/docs/Smell-Suppression.md +0 -96
  75. data/docs/Style-Guide.md +0 -19
  76. data/docs/Subclassed-From-Core-Class.md +0 -79
  77. data/docs/Too-Many-Constants.md +0 -37
  78. data/docs/Too-Many-Instance-Variables.md +0 -43
  79. data/docs/Too-Many-Methods.md +0 -56
  80. data/docs/Too-Many-Statements.md +0 -54
  81. data/docs/Uncommunicative-Method-Name.md +0 -94
  82. data/docs/Uncommunicative-Module-Name.md +0 -92
  83. data/docs/Uncommunicative-Name.md +0 -18
  84. data/docs/Uncommunicative-Parameter-Name.md +0 -90
  85. data/docs/Uncommunicative-Variable-Name.md +0 -96
  86. data/docs/Unused-Parameters.md +0 -28
  87. data/docs/Unused-Private-Method.md +0 -101
  88. data/docs/Utility-Function.md +0 -56
  89. data/docs/Versioning-Policy.md +0 -7
  90. data/docs/YAML-Reports.md +0 -93
  91. data/docs/defaults.reek.yml +0 -129
  92. data/docs/templates/default/docstring/html/public_api_marker.erb +0 -3
  93. data/docs/templates/default/docstring/setup.rb +0 -37
  94. data/docs/templates/default/fulldoc/html/css/common.css +0 -1
  95. data/docs/yard_plugin.rb +0 -17
  96. data/features/command_line_interface/basic_usage.feature +0 -15
  97. data/features/command_line_interface/options.feature +0 -123
  98. data/features/command_line_interface/show_progress.feature +0 -33
  99. data/features/command_line_interface/smell_selection.feature +0 -15
  100. data/features/command_line_interface/smells_count.feature +0 -38
  101. data/features/command_line_interface/stdin.feature +0 -65
  102. data/features/configuration_files/accept_setting.feature +0 -87
  103. data/features/configuration_files/directory_specific_directives.feature +0 -274
  104. data/features/configuration_files/exclude_directives.feature +0 -35
  105. data/features/configuration_files/exclude_paths_directives.feature +0 -42
  106. data/features/configuration_files/masking_smells.feature +0 -94
  107. data/features/configuration_files/mix_accept_reject_setting.feature +0 -84
  108. data/features/configuration_files/reject_setting.feature +0 -89
  109. data/features/configuration_files/schema_validation.feature +0 -59
  110. data/features/configuration_files/show_configuration_file.feature +0 -44
  111. data/features/configuration_files/unused_private_method.feature +0 -68
  112. data/features/configuration_loading.feature +0 -91
  113. data/features/configuration_via_source_comments/erroneous_source_comments.feature +0 -68
  114. data/features/configuration_via_source_comments/well_formed_source_comments.feature +0 -116
  115. data/features/locales.feature +0 -32
  116. data/features/programmatic_access.feature +0 -41
  117. data/features/rake_task/rake_task.feature +0 -138
  118. data/features/reports/codeclimate.feature +0 -59
  119. data/features/reports/json.feature +0 -59
  120. data/features/reports/reports.feature +0 -219
  121. data/features/reports/yaml.feature +0 -52
  122. data/features/rspec_matcher.feature +0 -41
  123. data/features/samples.feature +0 -305
  124. data/features/step_definitions/.rubocop.yml +0 -5
  125. data/features/step_definitions/reek_steps.rb +0 -102
  126. data/features/step_definitions/sample_file_steps.rb +0 -63
  127. data/features/support/env.rb +0 -33
  128. data/features/todo_list.feature +0 -108
  129. data/samples/checkstyle.xml +0 -7
  130. data/samples/clean_source/clean.rb +0 -6
  131. data/samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml +0 -29
  132. data/samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml +0 -30
  133. data/samples/configuration/corrupt.reek +0 -1
  134. data/samples/configuration/empty.reek +0 -0
  135. data/samples/configuration/full_configuration.reek +0 -13
  136. data/samples/configuration/full_mask.reek +0 -6
  137. data/samples/configuration/home/home.reek.yml +0 -4
  138. data/samples/configuration/partial_mask.reek +0 -4
  139. data/samples/configuration/regular_configuration/.reek.yml +0 -4
  140. data/samples/configuration/regular_configuration/empty_sub_directory/.gitignore +0 -0
  141. data/samples/configuration/with_excluded_paths.reek +0 -5
  142. data/samples/no_config_file/.keep +0 -0
  143. data/samples/paths.rb +0 -5
  144. data/samples/smelly_source/inline.rb +0 -704
  145. data/samples/smelly_source/optparse.rb +0 -1788
  146. data/samples/smelly_source/redcloth.rb +0 -1130
  147. data/samples/smelly_source/ruby.rb +0 -368
  148. data/samples/smelly_source/smelly.rb +0 -7
  149. data/samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb +0 -5
  150. data/samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb +0 -2
  151. data/samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb +0 -6
  152. data/samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb +0 -6
  153. data/samples/source_with_hidden_directories/.hidden/hidden.rb +0 -1
  154. data/samples/source_with_hidden_directories/not_hidden.rb +0 -1
  155. data/samples/source_with_non_ruby_files/gibberish +0 -1
  156. data/samples/source_with_non_ruby_files/python_source.py +0 -1
  157. data/samples/source_with_non_ruby_files/ruby.rb +0 -6
  158. data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +0 -15
  159. data/spec/quality/documentation_spec.rb +0 -41
  160. data/spec/quality/reek_source_spec.rb +0 -11
  161. data/spec/reek/ast/node_spec.rb +0 -211
  162. data/spec/reek/ast/object_refs_spec.rb +0 -83
  163. data/spec/reek/ast/reference_collector_spec.rb +0 -47
  164. data/spec/reek/ast/sexp_extensions_spec.rb +0 -498
  165. data/spec/reek/cli/application_spec.rb +0 -168
  166. data/spec/reek/cli/command/report_command_spec.rb +0 -44
  167. data/spec/reek/cli/command/todo_list_command_spec.rb +0 -86
  168. data/spec/reek/cli/options_spec.rb +0 -51
  169. data/spec/reek/cli/silencer_spec.rb +0 -28
  170. data/spec/reek/code_comment_spec.rb +0 -184
  171. data/spec/reek/configuration/app_configuration_spec.rb +0 -195
  172. data/spec/reek/configuration/configuration_file_finder_spec.rb +0 -230
  173. data/spec/reek/configuration/default_directive_spec.rb +0 -13
  174. data/spec/reek/configuration/directory_directives_spec.rb +0 -122
  175. data/spec/reek/configuration/excluded_paths_spec.rb +0 -16
  176. data/spec/reek/configuration/rake_task_converter_spec.rb +0 -33
  177. data/spec/reek/configuration/schema_validator_spec.rb +0 -165
  178. data/spec/reek/context/code_context_spec.rb +0 -192
  179. data/spec/reek/context/ghost_context_spec.rb +0 -60
  180. data/spec/reek/context/method_context_spec.rb +0 -72
  181. data/spec/reek/context/module_context_spec.rb +0 -55
  182. data/spec/reek/context/root_context_spec.rb +0 -12
  183. data/spec/reek/context/statement_counter_spec.rb +0 -24
  184. data/spec/reek/context_builder_spec.rb +0 -457
  185. data/spec/reek/detector_repository_spec.rb +0 -22
  186. data/spec/reek/documentation_link_spec.rb +0 -20
  187. data/spec/reek/errors/base_error_spec.rb +0 -13
  188. data/spec/reek/examiner_spec.rb +0 -309
  189. data/spec/reek/logging_error_handler_spec.rb +0 -24
  190. data/spec/reek/rake/task_spec.rb +0 -56
  191. data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +0 -22
  192. data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +0 -126
  193. data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +0 -51
  194. data/spec/reek/report/code_climate/code_climate_report_spec.rb +0 -56
  195. data/spec/reek/report/html_report_spec.rb +0 -19
  196. data/spec/reek/report/json_report_spec.rb +0 -58
  197. data/spec/reek/report/location_formatter_spec.rb +0 -32
  198. data/spec/reek/report/progress_formatter_spec.rb +0 -68
  199. data/spec/reek/report/text_report_spec.rb +0 -89
  200. data/spec/reek/report/xml_report_spec.rb +0 -24
  201. data/spec/reek/report/yaml_report_spec.rb +0 -55
  202. data/spec/reek/report_spec.rb +0 -28
  203. data/spec/reek/smell_configuration_spec.rb +0 -56
  204. data/spec/reek/smell_detectors/attribute_spec.rb +0 -197
  205. data/spec/reek/smell_detectors/base_detector_spec.rb +0 -50
  206. data/spec/reek/smell_detectors/boolean_parameter_spec.rb +0 -93
  207. data/spec/reek/smell_detectors/class_variable_spec.rb +0 -106
  208. data/spec/reek/smell_detectors/control_parameter_spec.rb +0 -300
  209. data/spec/reek/smell_detectors/data_clump_spec.rb +0 -134
  210. data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +0 -211
  211. data/spec/reek/smell_detectors/feature_envy_spec.rb +0 -295
  212. data/spec/reek/smell_detectors/instance_variable_assumption_spec.rb +0 -96
  213. data/spec/reek/smell_detectors/irresponsible_module_spec.rb +0 -226
  214. data/spec/reek/smell_detectors/long_parameter_list_spec.rb +0 -61
  215. data/spec/reek/smell_detectors/long_yield_list_spec.rb +0 -49
  216. data/spec/reek/smell_detectors/manual_dispatch_spec.rb +0 -75
  217. data/spec/reek/smell_detectors/missing_safe_method_spec.rb +0 -68
  218. data/spec/reek/smell_detectors/module_initialize_spec.rb +0 -77
  219. data/spec/reek/smell_detectors/nested_iterators_spec.rb +0 -333
  220. data/spec/reek/smell_detectors/nil_check_spec.rb +0 -100
  221. data/spec/reek/smell_detectors/repeated_conditional_spec.rb +0 -100
  222. data/spec/reek/smell_detectors/subclassed_from_core_class_spec.rb +0 -77
  223. data/spec/reek/smell_detectors/too_many_constants_spec.rb +0 -144
  224. data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +0 -132
  225. data/spec/reek/smell_detectors/too_many_methods_spec.rb +0 -54
  226. data/spec/reek/smell_detectors/too_many_statements_spec.rb +0 -90
  227. data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +0 -78
  228. data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +0 -78
  229. data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +0 -147
  230. data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +0 -201
  231. data/spec/reek/smell_detectors/unused_parameters_spec.rb +0 -114
  232. data/spec/reek/smell_detectors/unused_private_method_spec.rb +0 -205
  233. data/spec/reek/smell_detectors/utility_function_spec.rb +0 -293
  234. data/spec/reek/smell_warning_spec.rb +0 -137
  235. data/spec/reek/source/source_code_spec.rb +0 -79
  236. data/spec/reek/source/source_locator_spec.rb +0 -166
  237. data/spec/reek/spec/should_reek_of_spec.rb +0 -153
  238. data/spec/reek/spec/should_reek_only_of_spec.rb +0 -91
  239. data/spec/reek/spec/should_reek_spec.rb +0 -52
  240. data/spec/reek/spec/smell_matcher_spec.rb +0 -87
  241. data/spec/reek/tree_dresser_spec.rb +0 -46
  242. data/spec/spec_helper.rb +0 -110
  243. data/tasks/configuration.rake +0 -18
  244. data/tasks/console.rake +0 -5
  245. data/tasks/reek.rake +0 -6
  246. data/tasks/rubocop.rake +0 -11
  247. data/tasks/test.rake +0 -32
@@ -63,7 +63,7 @@ BooleanParameter:
63
63
 
64
64
  * Move everything in the `if` branch into a separate method
65
65
  * Move everything in the `else` branch into a separate method
66
- * Get rid of the `hit_the_switch` method alltogether
66
+ * Get rid of the `hit_the_switch` method altogether
67
67
  * Make the decision what method to call in the initial caller of `hit_the_switch`
68
68
  ClassVariable:
69
69
  remediation_points: 350_000
@@ -119,7 +119,7 @@ ControlParameter:
119
119
  end
120
120
  ```
121
121
 
122
- Fixing those problems is out of the scope of this document but an easy solution could be to remove the "write" method alltogether and to move the calls to "write_quoted" / "write_unquoted" in the initial caller of "write".
122
+ Fixing those problems is out of the scope of this document but an easy solution could be to remove the "write" method altogether and to move the calls to "write_quoted" / "write_unquoted" in the initial caller of "write".
123
123
  DataClump:
124
124
  remediation_points: 250_000
125
125
  content: |
@@ -768,7 +768,7 @@ TooManyStatements:
768
768
  end
769
769
  ```
770
770
 
771
- (You might argue that the two assigments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)
771
+ (You might argue that the two assignments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)
772
772
  UncommunicativeMethodName:
773
773
  remediation_points: 150_000
774
774
  content: |
@@ -57,9 +57,7 @@ module Reek
57
57
  end
58
58
 
59
59
  def configuration
60
- @configuration ||= begin
61
- CodeClimateConfiguration.load
62
- end
60
+ @configuration ||= CodeClimateConfiguration.load
63
61
  end
64
62
  end
65
63
  end
@@ -90,7 +90,7 @@ module Reek
90
90
 
91
91
  class << self
92
92
  def smell_type
93
- @smell_type ||= name.split(/::/).last
93
+ @smell_type ||= name.split('::').last
94
94
  end
95
95
 
96
96
  def contexts
@@ -25,8 +25,8 @@ module Reek
25
25
  # @return [Array<SmellWarning>]
26
26
  #
27
27
  def sniff
28
- class_variables_in_context.map do |variable, occurences|
29
- lines = occurences.map(&:line)
28
+ class_variables_in_context.map do |variable, occurrences|
29
+ lines = occurrences.map(&:line)
30
30
  smell_warning(
31
31
  lines: lines,
32
32
  message: "declares the class variable '#{variable}'",
@@ -9,20 +9,20 @@ module Reek
9
9
  class Candidate
10
10
  #
11
11
  # @param parameter [Symbol] the parameter name
12
- # @param occurences [Array<Reek::AST::Node>] the occurences of the ControlParameter smell
12
+ # @param occurrences [Array<Reek::AST::Node>] the occurrences of the ControlParameter smell
13
13
  # e.g. [s(:lvar, :bravo), s(:lvar, :bravo)]
14
14
  #
15
- def initialize(parameter, occurences)
15
+ def initialize(parameter, occurrences)
16
16
  @parameter = parameter
17
- @occurences = occurences
17
+ @occurrences = occurrences
18
18
  end
19
19
 
20
20
  def smells?
21
- occurences.any?
21
+ occurrences.any?
22
22
  end
23
23
 
24
24
  def lines
25
- occurences.map(&:line)
25
+ occurrences.map(&:line)
26
26
  end
27
27
 
28
28
  def name
@@ -31,7 +31,7 @@ module Reek
31
31
 
32
32
  private
33
33
 
34
- attr_reader :occurences, :parameter
34
+ attr_reader :occurrences, :parameter
35
35
  end
36
36
  end
37
37
  end
@@ -67,11 +67,11 @@ module Reek
67
67
  class FoundCall
68
68
  def initialize(call_node)
69
69
  @call_node = call_node
70
- @occurences = []
70
+ @occurrences = []
71
71
  end
72
72
 
73
73
  def record(occurence)
74
- occurences.push occurence
74
+ occurrences.push occurence
75
75
  end
76
76
 
77
77
  def call
@@ -79,16 +79,16 @@ module Reek
79
79
  end
80
80
 
81
81
  def occurs
82
- occurences.length
82
+ occurrences.length
83
83
  end
84
84
 
85
85
  def lines
86
- occurences.map(&:line)
86
+ occurrences.map(&:line)
87
87
  end
88
88
 
89
89
  private
90
90
 
91
- attr_reader :call_node, :occurences
91
+ attr_reader :call_node, :occurrences
92
92
  end
93
93
 
94
94
  private_constant :FoundCall
@@ -61,6 +61,7 @@ module Reek
61
61
  def unused_private_methods
62
62
  defined_private_methods = context.defined_instance_methods(visibility: :private)
63
63
  called_method_names = context.instance_method_calls.map(&:name)
64
+ called_method_names.concat(context.instance_method_names_via_to_call)
64
65
 
65
66
  defined_private_methods.reject do |defined_method|
66
67
  called_method_names.include?(defined_method.name)
@@ -59,7 +59,7 @@ module Reek
59
59
 
60
60
  # @public
61
61
  def to_hash
62
- stringified_params = Hash[parameters.map { |key, val| [key.to_s, val] }]
62
+ stringified_params = parameters.transform_keys(&:to_s)
63
63
  base_hash.merge(stringified_params)
64
64
  end
65
65
 
@@ -62,10 +62,8 @@ module Reek
62
62
 
63
63
  false
64
64
  end
65
- elsif path_excluded?(path)
66
- true
67
65
  else
68
- false
66
+ path_excluded?(path)
69
67
  end
70
68
  end
71
69
 
@@ -69,19 +69,21 @@ module Reek
69
69
  end
70
70
 
71
71
  def set_failure_messages_for_smell_type
72
- self.failure_message = "Expected #{origin} to reek of #{smell_type}, "\
73
- 'but it didn\'t'
74
- self.failure_message_when_negated = "Expected #{origin} not to reek "\
75
- "of #{smell_type}, but it did"
72
+ self.failure_message = "Expected #{origin} to reek of #{smell_type}, " \
73
+ 'but it didn\'t'
74
+ self.failure_message_when_negated = "Expected #{origin} not to reek " \
75
+ "of #{smell_type}, but it did"
76
76
  end
77
77
 
78
78
  def set_failure_messages_for_smell_details
79
- self.failure_message = "Expected #{origin} to reek of #{smell_type} "\
80
- "(which it did) with smell details #{smell_details}, which it didn't.\n"\
81
- "The number of smell details I had to compare with the given one was #{matching_smell_types.count} "\
82
- "and here they are:\n"\
79
+ self.failure_message =
80
+ "Expected #{origin} to reek of #{smell_type} " \
81
+ "(which it did) with smell details #{smell_details}, which it didn't.\n" \
82
+ "The number of smell details I had to compare with the given one was #{matching_smell_types.count} " \
83
+ "and here they are:\n" \
83
84
  "#{all_relevant_smell_details_formatted}"
84
- self.failure_message_when_negated = "Expected #{origin} not to reek of "\
85
+ self.failure_message_when_negated =
86
+ "Expected #{origin} not to reek of " \
85
87
  "#{smell_type} with smell details #{smell_details}, but it did"
86
88
  end
87
89
 
data/lib/reek/spec.rb CHANGED
@@ -92,7 +92,7 @@ module Reek
92
92
  end
93
93
 
94
94
  #
95
- # See the documentaton for "reek_of".
95
+ # See the documentation for "reek_of".
96
96
  #
97
97
  # Notable differences to reek_of:
98
98
  # 1.) "reek_of" doesn't mind if there are other smells of a different type.
data/lib/reek/version.rb CHANGED
@@ -3,11 +3,11 @@
3
3
  # @public
4
4
  module Reek
5
5
  #
6
- # This module holds the Reek version informations
6
+ # This module holds the Reek version information
7
7
  #
8
8
  # @public
9
9
  module Version
10
10
  # @public
11
- STRING = '6.0.2'
11
+ STRING = '6.1.4'
12
12
  end
13
13
  end
data/reek.gemspec CHANGED
@@ -1,34 +1,37 @@
1
- require File.join(File.dirname(__FILE__), 'lib/reek/version')
1
+ require_relative 'lib/reek/version'
2
2
 
3
- Gem::Specification.new do |s|
4
- s.name = 'reek'
5
- s.version = Reek::Version::STRING
3
+ Gem::Specification.new do |spec|
4
+ spec.name = 'reek'
5
+ spec.version = Reek::Version::STRING
6
+ spec.authors = ['Kevin Rutherford', 'Timo Roessner', 'Matijs van Zuijlen', 'Piotr Szotkowski']
7
+ spec.email = ['timo.roessner@googlemail.com']
6
8
 
7
- s.authors = ['Kevin Rutherford', 'Timo Roessner', 'Matijs van Zuijlen', 'Piotr Szotkowski']
8
- s.description =
9
+ spec.summary = 'Code smell detector for Ruby'
10
+ spec.description =
9
11
  'Reek is a tool that examines Ruby classes, modules and methods and reports ' \
10
12
  'any code smells it finds.'
13
+ spec.homepage = 'https://github.com/troessner/reek'
14
+ spec.license = 'MIT'
11
15
 
12
- s.license = 'MIT'
13
- s.email = ['timo.roessner@googlemail.com']
14
- s.extra_rdoc_files = ['CHANGELOG.md', 'License.txt']
15
- s.files = `git ls-files -z`.split("\0")
16
- s.executables = s.files.grep(%r{^bin/}).map { |path| File.basename(path) }
17
- s.homepage = 'https://github.com/troessner/reek'
18
- s.rdoc_options = %w(--main README.md -x assets/|bin/|config/|features/|spec/|tasks/)
19
- s.required_ruby_version = '>= 2.4.0'
20
- s.summary = 'Code smell detector for Ruby'
16
+ spec.extra_rdoc_files = ['CHANGELOG.md', 'License.txt']
17
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|samples|docs|tasks)/}) }
19
+ end
21
20
 
22
- s.metadata = {
23
- 'homepage_uri' => 'https://github.com/troessner/reek',
24
- 'source_code_uri' => 'https://github.com/troessner/reek',
25
- 'bug_tracker_uri' => 'https://github.com/troessner/reek/issues',
26
- 'changelog_uri' => 'https://github.com/troessner/reek/CHANGELOG.md',
27
- 'documentation_uri' => 'https://www.rubydoc.info/gems/reek'
21
+ spec.executables = spec.files.grep(%r{^bin/}).map { |path| File.basename(path) }
22
+ spec.rdoc_options = %w(--main README.md -x assets/|bin/|config/|features/|spec/|tasks/)
23
+ spec.required_ruby_version = '>= 2.6.0'
24
+
25
+ spec.metadata = {
26
+ 'homepage_uri' => 'https://github.com/troessner/reek',
27
+ 'source_code_uri' => 'https://github.com/troessner/reek',
28
+ 'bug_tracker_uri' => 'https://github.com/troessner/reek/issues',
29
+ 'changelog_uri' => 'https://github.com/troessner/reek/CHANGELOG.md',
30
+ 'documentation_uri' => 'https://www.rubydoc.info/gems/reek',
31
+ 'rubygems_mfa_required' => 'true'
28
32
  }
29
33
 
30
- s.add_runtime_dependency 'kwalify', '~> 0.7.0'
31
- s.add_runtime_dependency 'parser', '< 2.8', '>= 2.5.0.0', '!= 2.5.1.1'
32
- s.add_runtime_dependency 'psych', '~> 3.1'
33
- s.add_runtime_dependency 'rainbow', '>= 2.0', '< 4.0'
34
+ spec.add_runtime_dependency 'kwalify', '~> 0.7.0'
35
+ spec.add_runtime_dependency 'parser', '~> 3.2.0'
36
+ spec.add_runtime_dependency 'rainbow', '>= 2.0', '< 4.0'
34
37
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reek
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.2
4
+ version: 6.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Rutherford
8
8
  - Timo Roessner
9
9
  - Matijs van Zuijlen
10
10
  - Piotr Szotkowski
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2020-10-17 00:00:00.000000000 Z
14
+ date: 2023-01-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: kwalify
@@ -29,44 +29,18 @@ dependencies:
29
29
  version: 0.7.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: parser
32
- requirement: !ruby/object:Gem::Requirement
33
- requirements:
34
- - - "<"
35
- - !ruby/object:Gem::Version
36
- version: '2.8'
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: 2.5.0.0
40
- - - "!="
41
- - !ruby/object:Gem::Version
42
- version: 2.5.1.1
43
- type: :runtime
44
- prerelease: false
45
- version_requirements: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "<"
48
- - !ruby/object:Gem::Version
49
- version: '2.8'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 2.5.0.0
53
- - - "!="
54
- - !ruby/object:Gem::Version
55
- version: 2.5.1.1
56
- - !ruby/object:Gem::Dependency
57
- name: psych
58
32
  requirement: !ruby/object:Gem::Requirement
59
33
  requirements:
60
34
  - - "~>"
61
35
  - !ruby/object:Gem::Version
62
- version: '3.1'
36
+ version: 3.2.0
63
37
  type: :runtime
64
38
  prerelease: false
65
39
  version_requirements: !ruby/object:Gem::Requirement
66
40
  requirements:
67
41
  - - "~>"
68
42
  - !ruby/object:Gem::Version
69
- version: '3.1'
43
+ version: 3.2.0
70
44
  - !ruby/object:Gem::Dependency
71
45
  name: rainbow
72
46
  requirement: !ruby/object:Gem::Requirement
@@ -100,12 +74,13 @@ extra_rdoc_files:
100
74
  - License.txt
101
75
  files:
102
76
  - ".dockerignore"
77
+ - ".github/dependabot.yml"
78
+ - ".github/workflows/ruby.yml"
103
79
  - ".gitignore"
104
80
  - ".reek.yml"
105
81
  - ".rubocop.yml"
106
82
  - ".rubocop_todo.yml"
107
83
  - ".simplecov"
108
- - ".travis.yml"
109
84
  - ".yardopts"
110
85
  - CHANGELOG.md
111
86
  - CONTRIBUTING.md
@@ -116,92 +91,7 @@ files:
116
91
  - Rakefile
117
92
  - bin/code_climate_reek
118
93
  - bin/reek
119
- - docs/API.md
120
- - docs/Attribute.md
121
- - docs/Basic-Smell-Options.md
122
- - docs/Boolean-Parameter.md
123
- - docs/Class-Variable.md
124
- - docs/Code-Smells.md
125
- - docs/Command-Line-Options.md
126
- - docs/Control-Couple.md
127
- - docs/Control-Parameter.md
128
- - docs/Data-Clump.md
129
- - docs/Duplicate-Method-Call.md
130
- - docs/Feature-Envy.md
131
- - docs/How-To-Write-New-Detectors.md
132
- - docs/How-reek-works-internally.md
133
- - docs/Instance-Variable-Assumption.md
134
- - docs/Irresponsible-Module.md
135
- - docs/Large-Class.md
136
- - docs/Long-Parameter-List.md
137
- - docs/Long-Yield-List.md
138
- - docs/Manual-Dispatch.md
139
- - docs/Missing-Safe-Method.md
140
- - docs/Module-Initialize.md
141
- - docs/Nested-Iterators.md
142
- - docs/Nil-Check.md
143
- - docs/RSpec-matchers.md
144
- - docs/Rake-Task.md
145
- - docs/Reek-4-to-Reek-5-migration.md
146
- - docs/Reek-Driven-Development.md
147
- - docs/Repeated-Conditional.md
148
- - docs/Simulated-Polymorphism.md
149
- - docs/Smell-Suppression.md
150
- - docs/Style-Guide.md
151
- - docs/Subclassed-From-Core-Class.md
152
- - docs/Too-Many-Constants.md
153
- - docs/Too-Many-Instance-Variables.md
154
- - docs/Too-Many-Methods.md
155
- - docs/Too-Many-Statements.md
156
- - docs/Uncommunicative-Method-Name.md
157
- - docs/Uncommunicative-Module-Name.md
158
- - docs/Uncommunicative-Name.md
159
- - docs/Uncommunicative-Parameter-Name.md
160
- - docs/Uncommunicative-Variable-Name.md
161
- - docs/Unused-Parameters.md
162
- - docs/Unused-Private-Method.md
163
- - docs/Utility-Function.md
164
- - docs/Versioning-Policy.md
165
- - docs/YAML-Reports.md
166
- - docs/defaults.reek.yml
167
- - docs/templates/default/docstring/html/public_api_marker.erb
168
- - docs/templates/default/docstring/setup.rb
169
- - docs/templates/default/fulldoc/html/css/common.css
170
- - docs/yard_plugin.rb
171
94
  - engine.json
172
- - features/command_line_interface/basic_usage.feature
173
- - features/command_line_interface/options.feature
174
- - features/command_line_interface/show_progress.feature
175
- - features/command_line_interface/smell_selection.feature
176
- - features/command_line_interface/smells_count.feature
177
- - features/command_line_interface/stdin.feature
178
- - features/configuration_files/accept_setting.feature
179
- - features/configuration_files/directory_specific_directives.feature
180
- - features/configuration_files/exclude_directives.feature
181
- - features/configuration_files/exclude_paths_directives.feature
182
- - features/configuration_files/masking_smells.feature
183
- - features/configuration_files/mix_accept_reject_setting.feature
184
- - features/configuration_files/reject_setting.feature
185
- - features/configuration_files/schema_validation.feature
186
- - features/configuration_files/show_configuration_file.feature
187
- - features/configuration_files/unused_private_method.feature
188
- - features/configuration_loading.feature
189
- - features/configuration_via_source_comments/erroneous_source_comments.feature
190
- - features/configuration_via_source_comments/well_formed_source_comments.feature
191
- - features/locales.feature
192
- - features/programmatic_access.feature
193
- - features/rake_task/rake_task.feature
194
- - features/reports/codeclimate.feature
195
- - features/reports/json.feature
196
- - features/reports/reports.feature
197
- - features/reports/yaml.feature
198
- - features/rspec_matcher.feature
199
- - features/samples.feature
200
- - features/step_definitions/.rubocop.yml
201
- - features/step_definitions/reek_steps.rb
202
- - features/step_definitions/sample_file_steps.rb
203
- - features/support/env.rb
204
- - features/todo_list.feature
205
95
  - lib/reek.rb
206
96
  - lib/reek/ast/ast_node_class_map.rb
207
97
  - lib/reek/ast/builder.rb
@@ -251,6 +141,7 @@ files:
251
141
  - lib/reek/context/ghost_context.rb
252
142
  - lib/reek/context/method_context.rb
253
143
  - lib/reek/context/module_context.rb
144
+ - lib/reek/context/refinement_context.rb
254
145
  - lib/reek/context/root_context.rb
255
146
  - lib/reek/context/send_context.rb
256
147
  - lib/reek/context/singleton_attribute_context.rb
@@ -343,125 +234,6 @@ files:
343
234
  - logo/reek.text.png
344
235
  - logo/reek.text.svg
345
236
  - reek.gemspec
346
- - samples/checkstyle.xml
347
- - samples/clean_source/clean.rb
348
- - samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml
349
- - samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml
350
- - samples/configuration/corrupt.reek
351
- - samples/configuration/empty.reek
352
- - samples/configuration/full_configuration.reek
353
- - samples/configuration/full_mask.reek
354
- - samples/configuration/home/home.reek.yml
355
- - samples/configuration/partial_mask.reek
356
- - samples/configuration/regular_configuration/.reek.yml
357
- - samples/configuration/regular_configuration/empty_sub_directory/.gitignore
358
- - samples/configuration/with_excluded_paths.reek
359
- - samples/no_config_file/.keep
360
- - samples/paths.rb
361
- - samples/smelly_source/inline.rb
362
- - samples/smelly_source/optparse.rb
363
- - samples/smelly_source/redcloth.rb
364
- - samples/smelly_source/ruby.rb
365
- - samples/smelly_source/smelly.rb
366
- - samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb
367
- - samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb
368
- - samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb
369
- - samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb
370
- - samples/source_with_hidden_directories/.hidden/hidden.rb
371
- - samples/source_with_hidden_directories/not_hidden.rb
372
- - samples/source_with_non_ruby_files/gibberish
373
- - samples/source_with_non_ruby_files/python_source.py
374
- - samples/source_with_non_ruby_files/ruby.rb
375
- - spec/performance/reek/smell_detectors/runtime_speed_spec.rb
376
- - spec/quality/documentation_spec.rb
377
- - spec/quality/reek_source_spec.rb
378
- - spec/reek/ast/node_spec.rb
379
- - spec/reek/ast/object_refs_spec.rb
380
- - spec/reek/ast/reference_collector_spec.rb
381
- - spec/reek/ast/sexp_extensions_spec.rb
382
- - spec/reek/cli/application_spec.rb
383
- - spec/reek/cli/command/report_command_spec.rb
384
- - spec/reek/cli/command/todo_list_command_spec.rb
385
- - spec/reek/cli/options_spec.rb
386
- - spec/reek/cli/silencer_spec.rb
387
- - spec/reek/code_comment_spec.rb
388
- - spec/reek/configuration/app_configuration_spec.rb
389
- - spec/reek/configuration/configuration_file_finder_spec.rb
390
- - spec/reek/configuration/default_directive_spec.rb
391
- - spec/reek/configuration/directory_directives_spec.rb
392
- - spec/reek/configuration/excluded_paths_spec.rb
393
- - spec/reek/configuration/rake_task_converter_spec.rb
394
- - spec/reek/configuration/schema_validator_spec.rb
395
- - spec/reek/context/code_context_spec.rb
396
- - spec/reek/context/ghost_context_spec.rb
397
- - spec/reek/context/method_context_spec.rb
398
- - spec/reek/context/module_context_spec.rb
399
- - spec/reek/context/root_context_spec.rb
400
- - spec/reek/context/statement_counter_spec.rb
401
- - spec/reek/context_builder_spec.rb
402
- - spec/reek/detector_repository_spec.rb
403
- - spec/reek/documentation_link_spec.rb
404
- - spec/reek/errors/base_error_spec.rb
405
- - spec/reek/examiner_spec.rb
406
- - spec/reek/logging_error_handler_spec.rb
407
- - spec/reek/rake/task_spec.rb
408
- - spec/reek/report/code_climate/code_climate_configuration_spec.rb
409
- - spec/reek/report/code_climate/code_climate_fingerprint_spec.rb
410
- - spec/reek/report/code_climate/code_climate_formatter_spec.rb
411
- - spec/reek/report/code_climate/code_climate_report_spec.rb
412
- - spec/reek/report/html_report_spec.rb
413
- - spec/reek/report/json_report_spec.rb
414
- - spec/reek/report/location_formatter_spec.rb
415
- - spec/reek/report/progress_formatter_spec.rb
416
- - spec/reek/report/text_report_spec.rb
417
- - spec/reek/report/xml_report_spec.rb
418
- - spec/reek/report/yaml_report_spec.rb
419
- - spec/reek/report_spec.rb
420
- - spec/reek/smell_configuration_spec.rb
421
- - spec/reek/smell_detectors/attribute_spec.rb
422
- - spec/reek/smell_detectors/base_detector_spec.rb
423
- - spec/reek/smell_detectors/boolean_parameter_spec.rb
424
- - spec/reek/smell_detectors/class_variable_spec.rb
425
- - spec/reek/smell_detectors/control_parameter_spec.rb
426
- - spec/reek/smell_detectors/data_clump_spec.rb
427
- - spec/reek/smell_detectors/duplicate_method_call_spec.rb
428
- - spec/reek/smell_detectors/feature_envy_spec.rb
429
- - spec/reek/smell_detectors/instance_variable_assumption_spec.rb
430
- - spec/reek/smell_detectors/irresponsible_module_spec.rb
431
- - spec/reek/smell_detectors/long_parameter_list_spec.rb
432
- - spec/reek/smell_detectors/long_yield_list_spec.rb
433
- - spec/reek/smell_detectors/manual_dispatch_spec.rb
434
- - spec/reek/smell_detectors/missing_safe_method_spec.rb
435
- - spec/reek/smell_detectors/module_initialize_spec.rb
436
- - spec/reek/smell_detectors/nested_iterators_spec.rb
437
- - spec/reek/smell_detectors/nil_check_spec.rb
438
- - spec/reek/smell_detectors/repeated_conditional_spec.rb
439
- - spec/reek/smell_detectors/subclassed_from_core_class_spec.rb
440
- - spec/reek/smell_detectors/too_many_constants_spec.rb
441
- - spec/reek/smell_detectors/too_many_instance_variables_spec.rb
442
- - spec/reek/smell_detectors/too_many_methods_spec.rb
443
- - spec/reek/smell_detectors/too_many_statements_spec.rb
444
- - spec/reek/smell_detectors/uncommunicative_method_name_spec.rb
445
- - spec/reek/smell_detectors/uncommunicative_module_name_spec.rb
446
- - spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb
447
- - spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb
448
- - spec/reek/smell_detectors/unused_parameters_spec.rb
449
- - spec/reek/smell_detectors/unused_private_method_spec.rb
450
- - spec/reek/smell_detectors/utility_function_spec.rb
451
- - spec/reek/smell_warning_spec.rb
452
- - spec/reek/source/source_code_spec.rb
453
- - spec/reek/source/source_locator_spec.rb
454
- - spec/reek/spec/should_reek_of_spec.rb
455
- - spec/reek/spec/should_reek_only_of_spec.rb
456
- - spec/reek/spec/should_reek_spec.rb
457
- - spec/reek/spec/smell_matcher_spec.rb
458
- - spec/reek/tree_dresser_spec.rb
459
- - spec/spec_helper.rb
460
- - tasks/configuration.rake
461
- - tasks/console.rake
462
- - tasks/reek.rake
463
- - tasks/rubocop.rake
464
- - tasks/test.rake
465
237
  homepage: https://github.com/troessner/reek
466
238
  licenses:
467
239
  - MIT
@@ -471,7 +243,8 @@ metadata:
471
243
  bug_tracker_uri: https://github.com/troessner/reek/issues
472
244
  changelog_uri: https://github.com/troessner/reek/CHANGELOG.md
473
245
  documentation_uri: https://www.rubydoc.info/gems/reek
474
- post_install_message:
246
+ rubygems_mfa_required: 'true'
247
+ post_install_message:
475
248
  rdoc_options:
476
249
  - "--main"
477
250
  - README.md
@@ -483,15 +256,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
483
256
  requirements:
484
257
  - - ">="
485
258
  - !ruby/object:Gem::Version
486
- version: 2.4.0
259
+ version: 2.6.0
487
260
  required_rubygems_version: !ruby/object:Gem::Requirement
488
261
  requirements:
489
262
  - - ">="
490
263
  - !ruby/object:Gem::Version
491
264
  version: '0'
492
265
  requirements: []
493
- rubygems_version: 3.1.2
494
- signing_key:
266
+ rubygems_version: 3.4.1
267
+ signing_key:
495
268
  specification_version: 4
496
269
  summary: Code smell detector for Ruby
497
270
  test_files: []
data/.travis.yml DELETED
@@ -1,40 +0,0 @@
1
- language: ruby
2
-
3
- dist: xenial
4
-
5
- cache:
6
- bundler: true
7
-
8
- bundler_args: --without debugging
9
-
10
- script: bundle exec rake ci
11
-
12
- rvm:
13
- - 2.4
14
- - 2.5
15
- - 2.6
16
- - 2.7
17
- - jruby-9.2
18
- - jruby-head
19
- - ruby-head
20
-
21
- matrix:
22
- allow_failures:
23
- - rvm: jruby-head
24
- - rvm: ruby-head
25
- fast_finish: true
26
-
27
- notifications:
28
- email:
29
- - timo.roessner@googlemail.com
30
- - matijs@matijs.net
31
- - chastell@chastell.net
32
- irc: irc.freenode.org#reek
33
-
34
- branches:
35
- only:
36
- - master
37
-
38
- env:
39
- global:
40
- - JRUBY_OPTS="--dev"