reek 6.0.3 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (231) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +31 -26
  3. data/.rubocop.yml +5 -3
  4. data/CHANGELOG.md +22 -1
  5. data/CONTRIBUTING.md +3 -0
  6. data/Dockerfile +1 -1
  7. data/Gemfile +7 -7
  8. data/README.md +1 -1
  9. data/bin/code_climate_reek +2 -3
  10. data/lib/reek/ast/ast_node_class_map.rb +1 -1
  11. data/lib/reek/ast/sexp_extensions/arguments.rb +11 -0
  12. data/lib/reek/ast/sexp_extensions/case.rb +1 -1
  13. data/lib/reek/ast/sexp_extensions/if.rb +1 -1
  14. data/lib/reek/ast/sexp_extensions/send.rb +1 -1
  15. data/lib/reek/cli/command/todo_list_command.rb +1 -1
  16. data/lib/reek/cli/options.rb +1 -1
  17. data/lib/reek/code_comment.rb +22 -17
  18. data/lib/reek/context_builder.rb +1 -1
  19. data/lib/reek/rake/task.rb +1 -1
  20. data/lib/reek/report/code_climate/code_climate_formatter.rb +1 -3
  21. data/lib/reek/smell_detectors/base_detector.rb +1 -1
  22. data/lib/reek/smell_warning.rb +1 -1
  23. data/lib/reek/source/source_locator.rb +1 -3
  24. data/lib/reek/spec/should_reek_of.rb +6 -4
  25. data/lib/reek/version.rb +2 -2
  26. data/reek.gemspec +28 -25
  27. metadata +7 -225
  28. data/docs/API.md +0 -174
  29. data/docs/Attribute.md +0 -39
  30. data/docs/Basic-Smell-Options.md +0 -85
  31. data/docs/Boolean-Parameter.md +0 -54
  32. data/docs/Class-Variable.md +0 -40
  33. data/docs/Code-Smells.md +0 -39
  34. data/docs/Command-Line-Options.md +0 -119
  35. data/docs/Control-Couple.md +0 -26
  36. data/docs/Control-Parameter.md +0 -32
  37. data/docs/Data-Clump.md +0 -46
  38. data/docs/Duplicate-Method-Call.md +0 -264
  39. data/docs/Feature-Envy.md +0 -93
  40. data/docs/How-To-Write-New-Detectors.md +0 -132
  41. data/docs/How-reek-works-internally.md +0 -114
  42. data/docs/Instance-Variable-Assumption.md +0 -163
  43. data/docs/Irresponsible-Module.md +0 -47
  44. data/docs/Large-Class.md +0 -16
  45. data/docs/Long-Parameter-List.md +0 -39
  46. data/docs/Long-Yield-List.md +0 -37
  47. data/docs/Manual-Dispatch.md +0 -30
  48. data/docs/Missing-Safe-Method.md +0 -92
  49. data/docs/Module-Initialize.md +0 -62
  50. data/docs/Nested-Iterators.md +0 -59
  51. data/docs/Nil-Check.md +0 -47
  52. data/docs/RSpec-matchers.md +0 -129
  53. data/docs/Rake-Task.md +0 -66
  54. data/docs/Reek-4-to-Reek-5-migration.md +0 -188
  55. data/docs/Reek-Driven-Development.md +0 -46
  56. data/docs/Repeated-Conditional.md +0 -47
  57. data/docs/Simulated-Polymorphism.md +0 -16
  58. data/docs/Smell-Suppression.md +0 -96
  59. data/docs/Style-Guide.md +0 -19
  60. data/docs/Subclassed-From-Core-Class.md +0 -79
  61. data/docs/Too-Many-Constants.md +0 -37
  62. data/docs/Too-Many-Instance-Variables.md +0 -43
  63. data/docs/Too-Many-Methods.md +0 -56
  64. data/docs/Too-Many-Statements.md +0 -54
  65. data/docs/Uncommunicative-Method-Name.md +0 -94
  66. data/docs/Uncommunicative-Module-Name.md +0 -92
  67. data/docs/Uncommunicative-Name.md +0 -18
  68. data/docs/Uncommunicative-Parameter-Name.md +0 -90
  69. data/docs/Uncommunicative-Variable-Name.md +0 -96
  70. data/docs/Unused-Parameters.md +0 -28
  71. data/docs/Unused-Private-Method.md +0 -101
  72. data/docs/Utility-Function.md +0 -56
  73. data/docs/Versioning-Policy.md +0 -7
  74. data/docs/YAML-Reports.md +0 -93
  75. data/docs/defaults.reek.yml +0 -129
  76. data/docs/templates/default/docstring/html/public_api_marker.erb +0 -3
  77. data/docs/templates/default/docstring/setup.rb +0 -35
  78. data/docs/templates/default/fulldoc/html/css/common.css +0 -1
  79. data/docs/yard_plugin.rb +0 -17
  80. data/features/command_line_interface/basic_usage.feature +0 -15
  81. data/features/command_line_interface/options.feature +0 -123
  82. data/features/command_line_interface/show_progress.feature +0 -33
  83. data/features/command_line_interface/smell_selection.feature +0 -15
  84. data/features/command_line_interface/smells_count.feature +0 -38
  85. data/features/command_line_interface/stdin.feature +0 -65
  86. data/features/configuration_files/accept_setting.feature +0 -87
  87. data/features/configuration_files/directory_specific_directives.feature +0 -274
  88. data/features/configuration_files/exclude_directives.feature +0 -35
  89. data/features/configuration_files/exclude_paths_directives.feature +0 -42
  90. data/features/configuration_files/masking_smells.feature +0 -94
  91. data/features/configuration_files/mix_accept_reject_setting.feature +0 -84
  92. data/features/configuration_files/reject_setting.feature +0 -89
  93. data/features/configuration_files/schema_validation.feature +0 -59
  94. data/features/configuration_files/show_configuration_file.feature +0 -44
  95. data/features/configuration_files/unused_private_method.feature +0 -68
  96. data/features/configuration_loading.feature +0 -91
  97. data/features/configuration_via_source_comments/erroneous_source_comments.feature +0 -68
  98. data/features/configuration_via_source_comments/well_formed_source_comments.feature +0 -116
  99. data/features/locales.feature +0 -32
  100. data/features/programmatic_access.feature +0 -41
  101. data/features/rake_task/rake_task.feature +0 -138
  102. data/features/reports/codeclimate.feature +0 -59
  103. data/features/reports/json.feature +0 -59
  104. data/features/reports/reports.feature +0 -219
  105. data/features/reports/yaml.feature +0 -52
  106. data/features/rspec_matcher.feature +0 -41
  107. data/features/samples.feature +0 -305
  108. data/features/step_definitions/.rubocop.yml +0 -5
  109. data/features/step_definitions/reek_steps.rb +0 -102
  110. data/features/step_definitions/sample_file_steps.rb +0 -63
  111. data/features/support/env.rb +0 -33
  112. data/features/todo_list.feature +0 -108
  113. data/samples/checkstyle.xml +0 -7
  114. data/samples/clean_source/clean.rb +0 -6
  115. data/samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml +0 -29
  116. data/samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml +0 -30
  117. data/samples/configuration/corrupt.reek +0 -1
  118. data/samples/configuration/empty.reek +0 -0
  119. data/samples/configuration/full_configuration.reek +0 -13
  120. data/samples/configuration/full_mask.reek +0 -6
  121. data/samples/configuration/home/home.reek.yml +0 -4
  122. data/samples/configuration/partial_mask.reek +0 -4
  123. data/samples/configuration/regular_configuration/.reek.yml +0 -4
  124. data/samples/configuration/regular_configuration/empty_sub_directory/.gitignore +0 -0
  125. data/samples/configuration/with_excluded_paths.reek +0 -5
  126. data/samples/no_config_file/.keep +0 -0
  127. data/samples/paths.rb +0 -5
  128. data/samples/smelly_source/inline.rb +0 -704
  129. data/samples/smelly_source/optparse.rb +0 -1788
  130. data/samples/smelly_source/redcloth.rb +0 -1130
  131. data/samples/smelly_source/ruby.rb +0 -368
  132. data/samples/smelly_source/smelly.rb +0 -7
  133. data/samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb +0 -5
  134. data/samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb +0 -2
  135. data/samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb +0 -6
  136. data/samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb +0 -6
  137. data/samples/source_with_hidden_directories/.hidden/hidden.rb +0 -1
  138. data/samples/source_with_hidden_directories/not_hidden.rb +0 -1
  139. data/samples/source_with_non_ruby_files/gibberish +0 -1
  140. data/samples/source_with_non_ruby_files/python_source.py +0 -1
  141. data/samples/source_with_non_ruby_files/ruby.rb +0 -6
  142. data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +0 -15
  143. data/spec/quality/documentation_spec.rb +0 -41
  144. data/spec/quality/reek_source_spec.rb +0 -11
  145. data/spec/reek/ast/node_spec.rb +0 -211
  146. data/spec/reek/ast/object_refs_spec.rb +0 -83
  147. data/spec/reek/ast/reference_collector_spec.rb +0 -47
  148. data/spec/reek/ast/sexp_extensions_spec.rb +0 -498
  149. data/spec/reek/cli/application_spec.rb +0 -168
  150. data/spec/reek/cli/command/report_command_spec.rb +0 -44
  151. data/spec/reek/cli/command/todo_list_command_spec.rb +0 -86
  152. data/spec/reek/cli/options_spec.rb +0 -51
  153. data/spec/reek/cli/silencer_spec.rb +0 -28
  154. data/spec/reek/code_comment_spec.rb +0 -184
  155. data/spec/reek/configuration/app_configuration_spec.rb +0 -195
  156. data/spec/reek/configuration/configuration_file_finder_spec.rb +0 -230
  157. data/spec/reek/configuration/default_directive_spec.rb +0 -13
  158. data/spec/reek/configuration/directory_directives_spec.rb +0 -122
  159. data/spec/reek/configuration/excluded_paths_spec.rb +0 -25
  160. data/spec/reek/configuration/rake_task_converter_spec.rb +0 -33
  161. data/spec/reek/configuration/schema_validator_spec.rb +0 -165
  162. data/spec/reek/context/code_context_spec.rb +0 -192
  163. data/spec/reek/context/ghost_context_spec.rb +0 -60
  164. data/spec/reek/context/method_context_spec.rb +0 -72
  165. data/spec/reek/context/module_context_spec.rb +0 -55
  166. data/spec/reek/context/root_context_spec.rb +0 -12
  167. data/spec/reek/context/statement_counter_spec.rb +0 -24
  168. data/spec/reek/context_builder_spec.rb +0 -457
  169. data/spec/reek/detector_repository_spec.rb +0 -22
  170. data/spec/reek/documentation_link_spec.rb +0 -20
  171. data/spec/reek/errors/base_error_spec.rb +0 -13
  172. data/spec/reek/examiner_spec.rb +0 -309
  173. data/spec/reek/logging_error_handler_spec.rb +0 -24
  174. data/spec/reek/rake/task_spec.rb +0 -56
  175. data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +0 -22
  176. data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +0 -126
  177. data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +0 -51
  178. data/spec/reek/report/code_climate/code_climate_report_spec.rb +0 -56
  179. data/spec/reek/report/html_report_spec.rb +0 -19
  180. data/spec/reek/report/json_report_spec.rb +0 -58
  181. data/spec/reek/report/location_formatter_spec.rb +0 -32
  182. data/spec/reek/report/progress_formatter_spec.rb +0 -68
  183. data/spec/reek/report/text_report_spec.rb +0 -89
  184. data/spec/reek/report/xml_report_spec.rb +0 -24
  185. data/spec/reek/report/yaml_report_spec.rb +0 -55
  186. data/spec/reek/report_spec.rb +0 -28
  187. data/spec/reek/smell_configuration_spec.rb +0 -56
  188. data/spec/reek/smell_detectors/attribute_spec.rb +0 -197
  189. data/spec/reek/smell_detectors/base_detector_spec.rb +0 -50
  190. data/spec/reek/smell_detectors/boolean_parameter_spec.rb +0 -93
  191. data/spec/reek/smell_detectors/class_variable_spec.rb +0 -106
  192. data/spec/reek/smell_detectors/control_parameter_spec.rb +0 -300
  193. data/spec/reek/smell_detectors/data_clump_spec.rb +0 -134
  194. data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +0 -211
  195. data/spec/reek/smell_detectors/feature_envy_spec.rb +0 -295
  196. data/spec/reek/smell_detectors/instance_variable_assumption_spec.rb +0 -96
  197. data/spec/reek/smell_detectors/irresponsible_module_spec.rb +0 -226
  198. data/spec/reek/smell_detectors/long_parameter_list_spec.rb +0 -61
  199. data/spec/reek/smell_detectors/long_yield_list_spec.rb +0 -49
  200. data/spec/reek/smell_detectors/manual_dispatch_spec.rb +0 -75
  201. data/spec/reek/smell_detectors/missing_safe_method_spec.rb +0 -68
  202. data/spec/reek/smell_detectors/module_initialize_spec.rb +0 -77
  203. data/spec/reek/smell_detectors/nested_iterators_spec.rb +0 -333
  204. data/spec/reek/smell_detectors/nil_check_spec.rb +0 -100
  205. data/spec/reek/smell_detectors/repeated_conditional_spec.rb +0 -100
  206. data/spec/reek/smell_detectors/subclassed_from_core_class_spec.rb +0 -77
  207. data/spec/reek/smell_detectors/too_many_constants_spec.rb +0 -144
  208. data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +0 -132
  209. data/spec/reek/smell_detectors/too_many_methods_spec.rb +0 -54
  210. data/spec/reek/smell_detectors/too_many_statements_spec.rb +0 -90
  211. data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +0 -78
  212. data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +0 -78
  213. data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +0 -147
  214. data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +0 -201
  215. data/spec/reek/smell_detectors/unused_parameters_spec.rb +0 -114
  216. data/spec/reek/smell_detectors/unused_private_method_spec.rb +0 -205
  217. data/spec/reek/smell_detectors/utility_function_spec.rb +0 -309
  218. data/spec/reek/smell_warning_spec.rb +0 -137
  219. data/spec/reek/source/source_code_spec.rb +0 -79
  220. data/spec/reek/source/source_locator_spec.rb +0 -166
  221. data/spec/reek/spec/should_reek_of_spec.rb +0 -153
  222. data/spec/reek/spec/should_reek_only_of_spec.rb +0 -91
  223. data/spec/reek/spec/should_reek_spec.rb +0 -52
  224. data/spec/reek/spec/smell_matcher_spec.rb +0 -87
  225. data/spec/reek/tree_dresser_spec.rb +0 -46
  226. data/spec/spec_helper.rb +0 -110
  227. data/tasks/configuration.rake +0 -18
  228. data/tasks/console.rake +0 -5
  229. data/tasks/reek.rake +0 -6
  230. data/tasks/rubocop.rake +0 -11
  231. data/tasks/test.rake +0 -32
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: 6.0.3
4
+ version: 6.1.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: 2021-01-11 00:00:00.000000000 Z
14
+ date: 2022-01-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: kwalify
@@ -33,28 +33,14 @@ dependencies:
33
33
  requirements:
34
34
  - - "~>"
35
35
  - !ruby/object:Gem::Version
36
- version: 3.0.0
36
+ version: 3.1.0
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - "~>"
42
42
  - !ruby/object:Gem::Version
43
- version: 3.0.0
44
- - !ruby/object:Gem::Dependency
45
- name: psych
46
- requirement: !ruby/object:Gem::Requirement
47
- requirements:
48
- - - "~>"
49
- - !ruby/object:Gem::Version
50
- version: '3.1'
51
- type: :runtime
52
- prerelease: false
53
- version_requirements: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - "~>"
56
- - !ruby/object:Gem::Version
57
- version: '3.1'
43
+ version: 3.1.0
58
44
  - !ruby/object:Gem::Dependency
59
45
  name: rainbow
60
46
  requirement: !ruby/object:Gem::Requirement
@@ -105,92 +91,7 @@ files:
105
91
  - Rakefile
106
92
  - bin/code_climate_reek
107
93
  - bin/reek
108
- - docs/API.md
109
- - docs/Attribute.md
110
- - docs/Basic-Smell-Options.md
111
- - docs/Boolean-Parameter.md
112
- - docs/Class-Variable.md
113
- - docs/Code-Smells.md
114
- - docs/Command-Line-Options.md
115
- - docs/Control-Couple.md
116
- - docs/Control-Parameter.md
117
- - docs/Data-Clump.md
118
- - docs/Duplicate-Method-Call.md
119
- - docs/Feature-Envy.md
120
- - docs/How-To-Write-New-Detectors.md
121
- - docs/How-reek-works-internally.md
122
- - docs/Instance-Variable-Assumption.md
123
- - docs/Irresponsible-Module.md
124
- - docs/Large-Class.md
125
- - docs/Long-Parameter-List.md
126
- - docs/Long-Yield-List.md
127
- - docs/Manual-Dispatch.md
128
- - docs/Missing-Safe-Method.md
129
- - docs/Module-Initialize.md
130
- - docs/Nested-Iterators.md
131
- - docs/Nil-Check.md
132
- - docs/RSpec-matchers.md
133
- - docs/Rake-Task.md
134
- - docs/Reek-4-to-Reek-5-migration.md
135
- - docs/Reek-Driven-Development.md
136
- - docs/Repeated-Conditional.md
137
- - docs/Simulated-Polymorphism.md
138
- - docs/Smell-Suppression.md
139
- - docs/Style-Guide.md
140
- - docs/Subclassed-From-Core-Class.md
141
- - docs/Too-Many-Constants.md
142
- - docs/Too-Many-Instance-Variables.md
143
- - docs/Too-Many-Methods.md
144
- - docs/Too-Many-Statements.md
145
- - docs/Uncommunicative-Method-Name.md
146
- - docs/Uncommunicative-Module-Name.md
147
- - docs/Uncommunicative-Name.md
148
- - docs/Uncommunicative-Parameter-Name.md
149
- - docs/Uncommunicative-Variable-Name.md
150
- - docs/Unused-Parameters.md
151
- - docs/Unused-Private-Method.md
152
- - docs/Utility-Function.md
153
- - docs/Versioning-Policy.md
154
- - docs/YAML-Reports.md
155
- - docs/defaults.reek.yml
156
- - docs/templates/default/docstring/html/public_api_marker.erb
157
- - docs/templates/default/docstring/setup.rb
158
- - docs/templates/default/fulldoc/html/css/common.css
159
- - docs/yard_plugin.rb
160
94
  - engine.json
161
- - features/command_line_interface/basic_usage.feature
162
- - features/command_line_interface/options.feature
163
- - features/command_line_interface/show_progress.feature
164
- - features/command_line_interface/smell_selection.feature
165
- - features/command_line_interface/smells_count.feature
166
- - features/command_line_interface/stdin.feature
167
- - features/configuration_files/accept_setting.feature
168
- - features/configuration_files/directory_specific_directives.feature
169
- - features/configuration_files/exclude_directives.feature
170
- - features/configuration_files/exclude_paths_directives.feature
171
- - features/configuration_files/masking_smells.feature
172
- - features/configuration_files/mix_accept_reject_setting.feature
173
- - features/configuration_files/reject_setting.feature
174
- - features/configuration_files/schema_validation.feature
175
- - features/configuration_files/show_configuration_file.feature
176
- - features/configuration_files/unused_private_method.feature
177
- - features/configuration_loading.feature
178
- - features/configuration_via_source_comments/erroneous_source_comments.feature
179
- - features/configuration_via_source_comments/well_formed_source_comments.feature
180
- - features/locales.feature
181
- - features/programmatic_access.feature
182
- - features/rake_task/rake_task.feature
183
- - features/reports/codeclimate.feature
184
- - features/reports/json.feature
185
- - features/reports/reports.feature
186
- - features/reports/yaml.feature
187
- - features/rspec_matcher.feature
188
- - features/samples.feature
189
- - features/step_definitions/.rubocop.yml
190
- - features/step_definitions/reek_steps.rb
191
- - features/step_definitions/sample_file_steps.rb
192
- - features/support/env.rb
193
- - features/todo_list.feature
194
95
  - lib/reek.rb
195
96
  - lib/reek/ast/ast_node_class_map.rb
196
97
  - lib/reek/ast/builder.rb
@@ -333,125 +234,6 @@ files:
333
234
  - logo/reek.text.png
334
235
  - logo/reek.text.svg
335
236
  - reek.gemspec
336
- - samples/checkstyle.xml
337
- - samples/clean_source/clean.rb
338
- - samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml
339
- - samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml
340
- - samples/configuration/corrupt.reek
341
- - samples/configuration/empty.reek
342
- - samples/configuration/full_configuration.reek
343
- - samples/configuration/full_mask.reek
344
- - samples/configuration/home/home.reek.yml
345
- - samples/configuration/partial_mask.reek
346
- - samples/configuration/regular_configuration/.reek.yml
347
- - samples/configuration/regular_configuration/empty_sub_directory/.gitignore
348
- - samples/configuration/with_excluded_paths.reek
349
- - samples/no_config_file/.keep
350
- - samples/paths.rb
351
- - samples/smelly_source/inline.rb
352
- - samples/smelly_source/optparse.rb
353
- - samples/smelly_source/redcloth.rb
354
- - samples/smelly_source/ruby.rb
355
- - samples/smelly_source/smelly.rb
356
- - samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb
357
- - samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb
358
- - samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb
359
- - samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb
360
- - samples/source_with_hidden_directories/.hidden/hidden.rb
361
- - samples/source_with_hidden_directories/not_hidden.rb
362
- - samples/source_with_non_ruby_files/gibberish
363
- - samples/source_with_non_ruby_files/python_source.py
364
- - samples/source_with_non_ruby_files/ruby.rb
365
- - spec/performance/reek/smell_detectors/runtime_speed_spec.rb
366
- - spec/quality/documentation_spec.rb
367
- - spec/quality/reek_source_spec.rb
368
- - spec/reek/ast/node_spec.rb
369
- - spec/reek/ast/object_refs_spec.rb
370
- - spec/reek/ast/reference_collector_spec.rb
371
- - spec/reek/ast/sexp_extensions_spec.rb
372
- - spec/reek/cli/application_spec.rb
373
- - spec/reek/cli/command/report_command_spec.rb
374
- - spec/reek/cli/command/todo_list_command_spec.rb
375
- - spec/reek/cli/options_spec.rb
376
- - spec/reek/cli/silencer_spec.rb
377
- - spec/reek/code_comment_spec.rb
378
- - spec/reek/configuration/app_configuration_spec.rb
379
- - spec/reek/configuration/configuration_file_finder_spec.rb
380
- - spec/reek/configuration/default_directive_spec.rb
381
- - spec/reek/configuration/directory_directives_spec.rb
382
- - spec/reek/configuration/excluded_paths_spec.rb
383
- - spec/reek/configuration/rake_task_converter_spec.rb
384
- - spec/reek/configuration/schema_validator_spec.rb
385
- - spec/reek/context/code_context_spec.rb
386
- - spec/reek/context/ghost_context_spec.rb
387
- - spec/reek/context/method_context_spec.rb
388
- - spec/reek/context/module_context_spec.rb
389
- - spec/reek/context/root_context_spec.rb
390
- - spec/reek/context/statement_counter_spec.rb
391
- - spec/reek/context_builder_spec.rb
392
- - spec/reek/detector_repository_spec.rb
393
- - spec/reek/documentation_link_spec.rb
394
- - spec/reek/errors/base_error_spec.rb
395
- - spec/reek/examiner_spec.rb
396
- - spec/reek/logging_error_handler_spec.rb
397
- - spec/reek/rake/task_spec.rb
398
- - spec/reek/report/code_climate/code_climate_configuration_spec.rb
399
- - spec/reek/report/code_climate/code_climate_fingerprint_spec.rb
400
- - spec/reek/report/code_climate/code_climate_formatter_spec.rb
401
- - spec/reek/report/code_climate/code_climate_report_spec.rb
402
- - spec/reek/report/html_report_spec.rb
403
- - spec/reek/report/json_report_spec.rb
404
- - spec/reek/report/location_formatter_spec.rb
405
- - spec/reek/report/progress_formatter_spec.rb
406
- - spec/reek/report/text_report_spec.rb
407
- - spec/reek/report/xml_report_spec.rb
408
- - spec/reek/report/yaml_report_spec.rb
409
- - spec/reek/report_spec.rb
410
- - spec/reek/smell_configuration_spec.rb
411
- - spec/reek/smell_detectors/attribute_spec.rb
412
- - spec/reek/smell_detectors/base_detector_spec.rb
413
- - spec/reek/smell_detectors/boolean_parameter_spec.rb
414
- - spec/reek/smell_detectors/class_variable_spec.rb
415
- - spec/reek/smell_detectors/control_parameter_spec.rb
416
- - spec/reek/smell_detectors/data_clump_spec.rb
417
- - spec/reek/smell_detectors/duplicate_method_call_spec.rb
418
- - spec/reek/smell_detectors/feature_envy_spec.rb
419
- - spec/reek/smell_detectors/instance_variable_assumption_spec.rb
420
- - spec/reek/smell_detectors/irresponsible_module_spec.rb
421
- - spec/reek/smell_detectors/long_parameter_list_spec.rb
422
- - spec/reek/smell_detectors/long_yield_list_spec.rb
423
- - spec/reek/smell_detectors/manual_dispatch_spec.rb
424
- - spec/reek/smell_detectors/missing_safe_method_spec.rb
425
- - spec/reek/smell_detectors/module_initialize_spec.rb
426
- - spec/reek/smell_detectors/nested_iterators_spec.rb
427
- - spec/reek/smell_detectors/nil_check_spec.rb
428
- - spec/reek/smell_detectors/repeated_conditional_spec.rb
429
- - spec/reek/smell_detectors/subclassed_from_core_class_spec.rb
430
- - spec/reek/smell_detectors/too_many_constants_spec.rb
431
- - spec/reek/smell_detectors/too_many_instance_variables_spec.rb
432
- - spec/reek/smell_detectors/too_many_methods_spec.rb
433
- - spec/reek/smell_detectors/too_many_statements_spec.rb
434
- - spec/reek/smell_detectors/uncommunicative_method_name_spec.rb
435
- - spec/reek/smell_detectors/uncommunicative_module_name_spec.rb
436
- - spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb
437
- - spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb
438
- - spec/reek/smell_detectors/unused_parameters_spec.rb
439
- - spec/reek/smell_detectors/unused_private_method_spec.rb
440
- - spec/reek/smell_detectors/utility_function_spec.rb
441
- - spec/reek/smell_warning_spec.rb
442
- - spec/reek/source/source_code_spec.rb
443
- - spec/reek/source/source_locator_spec.rb
444
- - spec/reek/spec/should_reek_of_spec.rb
445
- - spec/reek/spec/should_reek_only_of_spec.rb
446
- - spec/reek/spec/should_reek_spec.rb
447
- - spec/reek/spec/smell_matcher_spec.rb
448
- - spec/reek/tree_dresser_spec.rb
449
- - spec/spec_helper.rb
450
- - tasks/configuration.rake
451
- - tasks/console.rake
452
- - tasks/reek.rake
453
- - tasks/rubocop.rake
454
- - tasks/test.rake
455
237
  homepage: https://github.com/troessner/reek
456
238
  licenses:
457
239
  - MIT
@@ -461,6 +243,7 @@ metadata:
461
243
  bug_tracker_uri: https://github.com/troessner/reek/issues
462
244
  changelog_uri: https://github.com/troessner/reek/CHANGELOG.md
463
245
  documentation_uri: https://www.rubydoc.info/gems/reek
246
+ rubygems_mfa_required: 'true'
464
247
  post_install_message:
465
248
  rdoc_options:
466
249
  - "--main"
@@ -473,15 +256,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
473
256
  requirements:
474
257
  - - ">="
475
258
  - !ruby/object:Gem::Version
476
- version: 2.4.0
259
+ version: 2.6.0
477
260
  required_rubygems_version: !ruby/object:Gem::Requirement
478
261
  requirements:
479
262
  - - ">="
480
263
  - !ruby/object:Gem::Version
481
264
  version: '0'
482
265
  requirements: []
483
- rubyforge_project:
484
- rubygems_version: 2.7.7
266
+ rubygems_version: 3.3.3
485
267
  signing_key:
486
268
  specification_version: 4
487
269
  summary: Code smell detector for Ruby
data/docs/API.md DELETED
@@ -1,174 +0,0 @@
1
- # Using Reek inside your Ruby application
2
-
3
- ## Installation
4
-
5
- Either standalone via
6
-
7
- ```bash
8
- gem install reek
9
- ```
10
-
11
- or by adding
12
-
13
- ```
14
- gem 'reek'
15
- ```
16
-
17
- to your Gemfile.
18
-
19
- ## Quick start
20
-
21
- Code says more than a thousand words:
22
-
23
- ```ruby
24
- require 'reek'
25
-
26
- source = <<-RUBY
27
- class Dirty
28
- def m(a,b,c)
29
- puts a,b
30
- end
31
- end
32
- RUBY
33
-
34
- reporter = Reek::Report::TextReport.new
35
- examiner = Reek::Examiner.new source
36
- reporter.add_examiner examiner
37
- reporter.show
38
- ```
39
-
40
- This would output the following on STDOUT:
41
-
42
- ```
43
- string -- 5 warnings:
44
- Dirty has no descriptive comment (IrresponsibleModule)
45
- Dirty#m has the name 'm' (UncommunicativeMethodName)
46
- Dirty#m has the parameter name 'a' (UncommunicativeParameterName)
47
- Dirty#m has the parameter name 'b' (UncommunicativeParameterName)
48
- Dirty#m has unused parameter 'c' (UnusedParameters)
49
- ```
50
-
51
- Note that `Reek::Examiner.new` can take `source` as `String`, `Pathname`, `File` or `IO`.
52
-
53
- ## API stability
54
-
55
- Everything that is mentioned in this document can be considered stable in the
56
- sense that it will only change across major versions.
57
-
58
- There is one thing in this API documentation you can't and shouldn't rely on:
59
- The `SmellWarning` messages itself.
60
-
61
- Something like this
62
-
63
- ```
64
- Dirty#m has the parameter name 'a' (UncommunicativeParameterName)
65
- ```
66
-
67
- might change even across minor versions.
68
-
69
- You should not need to be specific about those messages anyways.
70
- In case you'd like to be specific about `SmellWarnings` please have a look at
71
- [accessing the smell warnings directly](#accessing-the-smell-warnings-directly).
72
-
73
- Additionally you can use one of our structured [outputs formats](#choosing-your-output-format)
74
- like JSON or YAML if you need a more fine-grained access to our
75
- `SmellWarnings`.
76
-
77
- ## Choosing your output format
78
-
79
- Besides normal text output, Reek can generate output in YAML,
80
- JSON, HTML and XML by using the following Report types:
81
-
82
- ```
83
- TextReport
84
- YAMLReport
85
- JSONReport
86
- HTMLReport
87
- XMLReport
88
- ```
89
-
90
- ## Configuration
91
-
92
- Given you have the following configuration file called `.reek.yml` in your root directory:
93
-
94
- ```Yaml
95
- ---
96
- IrresponsibleModule:
97
- enabled: false
98
- ```
99
-
100
- Reek will load this file automatically by default. If you want to load the
101
- configuration explicitely, you can use one of the methods below.
102
-
103
- You can now use either
104
-
105
- ```Ruby
106
- Reek::Configuration::AppConfiguration.from_path Pathname.new('config.reek')
107
- ```
108
-
109
- but you can also pass a hash with the contents of the `.reek.yml` YAML file
110
- to `Reek::Configuration::AppConfiguration.from_hash`.
111
-
112
- Given the example above you would load that as follows:
113
-
114
- ```Ruby
115
- require 'reek'
116
-
117
- config_hash = { 'IrresponsibleModule' => { 'enabled' => false } }
118
- configuration = Reek::Configuration::AppConfiguration.from_hash config_hash
119
-
120
- source = <<-RUBY
121
- class Dirty
122
- def call_me(a,b)
123
- puts a,b
124
- end
125
- end
126
- RUBY
127
-
128
- reporter = Reek::Report::TextReport.new
129
- examiner = Reek::Examiner.new(source, configuration: configuration); nil
130
- reporter.add_examiner examiner; nil
131
- reporter.show
132
- ```
133
-
134
- This would now only report `UncommunicativeParameterName` but not
135
- `IrresponsibleModule` for the `Dirty` class:
136
-
137
- ```
138
- string -- 2 warnings:
139
- Dirty#call_me has the parameter name 'a' (UncommunicativeParameterName)
140
- Dirty#call_me has the parameter name 'b' (UncommunicativeParameterName)
141
- ```
142
-
143
- Of course, directory specific configuration and excluded paths are supported as
144
- well:
145
-
146
- ```
147
- config_hash = {
148
- 'IrresponsibleModule' => { 'enabled' => false }
149
- 'spec/samples/three_clean_files/' =>
150
- { 'UtilityFunction' => { "enabled" => false } }
151
- 'exclude_paths' =>
152
- [ 'spec/samples/two_smelly_files' ]
153
- }
154
- ```
155
-
156
- ## Accessing the smell warnings directly
157
-
158
- You can also access the smells detected by an examiner directly:
159
-
160
- ```ruby
161
- require 'reek'
162
-
163
- source = <<-END
164
- class C
165
- end
166
- END
167
-
168
- examiner = Reek::Examiner.new source
169
- examiner.smells.each do |smell|
170
- puts smell.message
171
- end
172
- ```
173
-
174
- `Examiner#smells` returns a list of `SmellWarning` objects.
data/docs/Attribute.md DELETED
@@ -1,39 +0,0 @@
1
- # Attribute
2
-
3
- ## Introduction
4
-
5
- A class that publishes a setter for an instance variable invites
6
- client classes to become too intimate with its inner workings, and in
7
- particular with its representation of state.
8
-
9
- The same holds to a lesser extent for getters, but Reek doesn't flag those.
10
-
11
- ## Example
12
-
13
- Given:
14
-
15
- ```Ruby
16
- class Klass
17
- attr_accessor :dummy
18
- end
19
- ```
20
-
21
- Reek would emit the following warning:
22
-
23
- ```
24
- reek test.rb
25
-
26
- test.rb -- 1 warning:
27
- [2]:Attribute: Klass#dummy is a writable attribute
28
- ```
29
-
30
- ## Support in Reek
31
-
32
- This detector raises a warning for every public `attr_writer`,
33
- `attr_accessor`, and `attr` with the writable flag set to `true`.
34
-
35
- Reek does not raise warnings for read-only attributes.
36
-
37
- ## Configuration
38
-
39
- _Attribute_ supports only the [Basic Smell Options](Basic-Smell-Options.md).
@@ -1,85 +0,0 @@
1
- # Basic Smell Options
2
-
3
- ## Introduction
4
-
5
- Every smell detector in Reek offers at least the following configuration options:
6
-
7
- | Option | Value | Effect |
8
- | ---------------|-------------|---------|
9
- | `enabled` | Boolean | Determines whether the smell detector is active. Defaults to `true` |
10
- | `exclude` | an array of strings that will be converted into regular expressions | Ignores any context whose full description matches any element of this array. |
11
-
12
- The file `docs/defaults.reek.yml` (shipped with the Reek gem) lists any default
13
- exclusions for each smell.
14
-
15
- ## Examples
16
-
17
- **An easy one:**
18
-
19
- To stop Reek reporting smells in any method called `write` you might create a configuration file containing this:
20
-
21
- ```yaml
22
- DuplicateMethodCall:
23
- exclude:
24
- - write
25
- ```
26
-
27
- Internally Reek will convert this to the Regexp /write/.
28
-
29
- **A more sophisticated one:**
30
-
31
- ```yaml
32
- FeatureEnvy:
33
- exclude:
34
- - "MyModel#do_things"
35
- - "MyHelper"
36
- - "ApplicationController#respond"
37
- ```
38
-
39
- This would not report FeatureEnvy for the instance method `MyModel#do_things`, the whole module `MyHelper` and the `respond` instance method of `ApplicationController`
40
-
41
- ## Advanced configuration
42
-
43
- Sometimes just strings are not enough for configuration. E.g. consider this code sample:
44
-
45
- ```Ruby
46
- class Klass
47
- def foo1; end
48
- def foo1bar; end
49
- end
50
- ```
51
- Both "Klass#foo1" and "Klass#foo1bar" will smell of UncommunicativeMethodName. Now let's assume
52
- you are ok with "Klass#foo1" but not "Klass#foo1bar".
53
- Just having this configuration
54
-
55
- ```yaml
56
- UncommunicativeMethodName:
57
- exclude:
58
- - "Klass#foo1"
59
- ```
60
-
61
- wouldn't work because now "Klass#foo1bar" wouldn't smell as well.
62
-
63
- For this reason Reek has a special syntax that allows you to use regexes by using a forward slash at the beginning and the end of the string.
64
- Everything within the forward slashes will be loaded as a regex.
65
-
66
- A possible configuration that hat excludes "Klass#foo1" from this scan but not "Klass#foo1bar" could look like this:
67
-
68
- ```yaml
69
- UncommunicativeMethodName:
70
- exclude:
71
- - "/Klass#foo1$/"
72
- ```
73
-
74
- ## Reek 4
75
-
76
- In Reek 4 you could also pass regexes to `exclude`, meaning this was perfectly valid as well:
77
-
78
- ```yaml
79
- DuplicateMethodCall:
80
- exclude:
81
- - !ruby/regexp /write/
82
- ```
83
-
84
- Support for this has been scrapped with Reek 5 to make the Reek configuration more yaml standard compliant.
85
- You can still pass in regexes, you just have to wrap them into a string. Please see "Advanced configuration" above.
@@ -1,54 +0,0 @@
1
- # Boolean Parameter
2
-
3
- ## Introduction
4
-
5
- _Boolean Parameter_ is a case of [Control Couple](Control-Couple.md), where a
6
- method parameter is defaulted to true or false. A _Boolean Parameter_
7
- effectively permits a method's caller to decide which execution path to take.
8
- This is a case of bad cohesion. You're creating a dependency between methods
9
- that is not really necessary, thus increasing coupling.
10
-
11
- ## Example
12
-
13
- Given
14
-
15
- ```Ruby
16
- class Dummy
17
- def hit_the_switch(switch = true)
18
- if switch
19
- puts 'Hitting the switch'
20
- # do other things...
21
- else
22
- puts 'Not hitting the switch'
23
- # do other things...
24
- end
25
- end
26
- end
27
- ```
28
-
29
- Reek would emit the following warning:
30
-
31
- ```
32
- test.rb -- 3 warnings:
33
- [1]:Dummy#hit_the_switch has boolean parameter 'switch' (BooleanParameter)
34
- [2]:Dummy#hit_the_switch is controlled by argument switch (ControlParameter)
35
- ```
36
-
37
- Note that both smells are reported, _Boolean Parameter_ and _Control Parameter_.
38
-
39
- ## Getting rid of the smell
40
-
41
- This is highly dependent on your exact architecture, but looking at the example above what you could do is:
42
-
43
- * Move everything in the `if` branch into a separate method
44
- * Move everything in the `else` branch into a separate method
45
- * Get rid of the `hit_the_switch` method altogether
46
- * Make the decision what method to call in the initial caller of `hit_the_switch`
47
-
48
- ## Current support in Reek
49
-
50
- Reek can only detect a _Boolean Parameter_ when it has a default initializer like in the example above.
51
-
52
- ## Configuration
53
-
54
- _Boolean Parameter_ supports the [Basic Smell Options](Basic-Smell-Options.md).
@@ -1,40 +0,0 @@
1
- # Class Variable
2
-
3
- ## Introduction
4
-
5
- Class variables form part of the global runtime state, and as such make it easy for one part of the system to accidentally or inadvertently depend on another part of the system. So the system becomes more prone to problems where changing something over here breaks something over there. In particular, class variables can make it hard to set up tests (because the context of the test includes all global state).
6
-
7
- For a detailed explanation, check out [this article](http://4thmouse.com/index.php/2011/03/20/why-class-variables-in-ruby-are-a-bad-idea/).
8
-
9
- ## Example
10
-
11
- Given
12
-
13
- ```Ruby
14
- class Dummy
15
- @@class_variable = :whatever
16
- end
17
- ```
18
-
19
- Reek would emit the following warning:
20
-
21
- ```
22
- reek test.rb
23
-
24
- test.rb -- 1 warning:
25
- [2]:Dummy declares the class variable @@class_variable (ClassVariable)
26
- ```
27
-
28
- ## Getting rid of the smell
29
-
30
- You can use class-instance variable to mitigate the problem (as also suggested in the linked article above):
31
-
32
- ```Ruby
33
- class Dummy
34
- @class_variable = :whatever
35
- end
36
- ```
37
-
38
- ## Configuration
39
-
40
- _Class Variable_ supports the [Basic Smell Options](Basic-Smell-Options.md).