reek 6.0.2 → 6.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ruby.yml +58 -0
  4. data/.gitignore +0 -1
  5. data/.rubocop.yml +7 -20
  6. data/.rubocop_todo.yml +6 -4
  7. data/.simplecov +2 -0
  8. data/CHANGELOG.md +114 -0
  9. data/CONTRIBUTING.md +10 -10
  10. data/Dockerfile +1 -1
  11. data/Gemfile +17 -24
  12. data/README.md +38 -40
  13. data/Rakefile +2 -0
  14. data/bin/code_climate_reek +56 -8
  15. data/docs/yard_plugin.rb +3 -1
  16. data/lib/reek/ast/ast_node_class_map.rb +1 -1
  17. data/lib/reek/ast/node.rb +16 -10
  18. data/lib/reek/ast/sexp_extensions/arguments.rb +20 -0
  19. data/lib/reek/ast/sexp_extensions/case.rb +1 -1
  20. data/lib/reek/ast/sexp_extensions/if.rb +1 -1
  21. data/lib/reek/ast/sexp_extensions/send.rb +22 -7
  22. data/lib/reek/cli/command/todo_list_command.rb +3 -3
  23. data/lib/reek/cli/options.rb +8 -8
  24. data/lib/reek/{report/code_climate → code_climate}/code_climate_configuration.rb +1 -1
  25. data/lib/reek/{report/code_climate → code_climate}/code_climate_configuration.yml +41 -41
  26. data/lib/reek/{report/code_climate → code_climate}/code_climate_fingerprint.rb +2 -2
  27. data/lib/reek/{report/code_climate → code_climate}/code_climate_formatter.rb +2 -4
  28. data/lib/reek/{report/code_climate → code_climate}/code_climate_report.rb +3 -3
  29. data/lib/reek/code_comment.rb +25 -20
  30. data/lib/reek/configuration/app_configuration.rb +5 -5
  31. data/lib/reek/configuration/configuration_converter.rb +1 -1
  32. data/lib/reek/configuration/configuration_file_finder.rb +5 -4
  33. data/lib/reek/configuration/default_directive.rb +1 -1
  34. data/lib/reek/configuration/directory_directives.rb +1 -1
  35. data/lib/reek/configuration/excluded_paths.rb +3 -2
  36. data/lib/reek/configuration/schema.rb +177 -0
  37. data/lib/reek/configuration/schema_validator.rb +12 -13
  38. data/lib/reek/context/attribute_context.rb +1 -1
  39. data/lib/reek/context/code_context.rb +3 -3
  40. data/lib/reek/context/method_context.rb +1 -1
  41. data/lib/reek/context/module_context.rb +4 -0
  42. data/lib/reek/context/refinement_context.rb +16 -0
  43. data/lib/reek/context/send_context.rb +7 -1
  44. data/lib/reek/context_builder.rb +17 -3
  45. data/lib/reek/documentation_link.rb +3 -5
  46. data/lib/reek/errors/bad_detector_configuration_key_in_comment_error.rb +2 -2
  47. data/lib/reek/errors/bad_detector_in_comment_error.rb +2 -2
  48. data/lib/reek/errors/encoding_error.rb +1 -1
  49. data/lib/reek/errors/garbage_detector_configuration_in_comment_error.rb +2 -2
  50. data/lib/reek/errors/incomprehensible_source_error.rb +1 -1
  51. data/lib/reek/errors/legacy_comment_separator_error.rb +2 -2
  52. data/lib/reek/errors/syntax_error.rb +1 -1
  53. data/lib/reek/rake/task.rb +5 -5
  54. data/lib/reek/report/github_report.rb +55 -0
  55. data/lib/reek/report/text_report.rb +1 -1
  56. data/lib/reek/report.rb +7 -5
  57. data/lib/reek/smell_detectors/base_detector.rb +1 -1
  58. data/lib/reek/smell_detectors/class_variable.rb +2 -2
  59. data/lib/reek/smell_detectors/control_parameter_helpers/candidate.rb +6 -6
  60. data/lib/reek/smell_detectors/control_parameter_helpers/control_parameter_finder.rb +1 -1
  61. data/lib/reek/smell_detectors/data_clump.rb +1 -1
  62. data/lib/reek/smell_detectors/duplicate_method_call.rb +5 -5
  63. data/lib/reek/smell_detectors/instance_variable_assumption.rb +8 -8
  64. data/lib/reek/smell_detectors/nested_iterators.rb +4 -3
  65. data/lib/reek/smell_detectors/uncommunicative_module_name.rb +1 -1
  66. data/lib/reek/smell_detectors/unused_private_method.rb +3 -2
  67. data/lib/reek/smell_warning.rb +1 -1
  68. data/lib/reek/source/source_code.rb +11 -5
  69. data/lib/reek/source/source_locator.rb +1 -3
  70. data/lib/reek/spec/should_reek_of.rb +11 -9
  71. data/lib/reek/spec.rb +1 -1
  72. data/lib/reek/version.rb +2 -2
  73. data/reek.gemspec +33 -25
  74. metadata +41 -238
  75. data/.travis.yml +0 -40
  76. data/docs/API.md +0 -174
  77. data/docs/Attribute.md +0 -39
  78. data/docs/Basic-Smell-Options.md +0 -85
  79. data/docs/Boolean-Parameter.md +0 -54
  80. data/docs/Class-Variable.md +0 -40
  81. data/docs/Code-Smells.md +0 -39
  82. data/docs/Command-Line-Options.md +0 -119
  83. data/docs/Control-Couple.md +0 -26
  84. data/docs/Control-Parameter.md +0 -32
  85. data/docs/Data-Clump.md +0 -46
  86. data/docs/Duplicate-Method-Call.md +0 -264
  87. data/docs/Feature-Envy.md +0 -93
  88. data/docs/How-To-Write-New-Detectors.md +0 -132
  89. data/docs/How-reek-works-internally.md +0 -114
  90. data/docs/Instance-Variable-Assumption.md +0 -163
  91. data/docs/Irresponsible-Module.md +0 -47
  92. data/docs/Large-Class.md +0 -16
  93. data/docs/Long-Parameter-List.md +0 -39
  94. data/docs/Long-Yield-List.md +0 -37
  95. data/docs/Manual-Dispatch.md +0 -30
  96. data/docs/Missing-Safe-Method.md +0 -92
  97. data/docs/Module-Initialize.md +0 -62
  98. data/docs/Nested-Iterators.md +0 -59
  99. data/docs/Nil-Check.md +0 -47
  100. data/docs/RSpec-matchers.md +0 -129
  101. data/docs/Rake-Task.md +0 -66
  102. data/docs/Reek-4-to-Reek-5-migration.md +0 -188
  103. data/docs/Reek-Driven-Development.md +0 -46
  104. data/docs/Repeated-Conditional.md +0 -47
  105. data/docs/Simulated-Polymorphism.md +0 -16
  106. data/docs/Smell-Suppression.md +0 -96
  107. data/docs/Style-Guide.md +0 -19
  108. data/docs/Subclassed-From-Core-Class.md +0 -79
  109. data/docs/Too-Many-Constants.md +0 -37
  110. data/docs/Too-Many-Instance-Variables.md +0 -43
  111. data/docs/Too-Many-Methods.md +0 -56
  112. data/docs/Too-Many-Statements.md +0 -54
  113. data/docs/Uncommunicative-Method-Name.md +0 -94
  114. data/docs/Uncommunicative-Module-Name.md +0 -92
  115. data/docs/Uncommunicative-Name.md +0 -18
  116. data/docs/Uncommunicative-Parameter-Name.md +0 -90
  117. data/docs/Uncommunicative-Variable-Name.md +0 -96
  118. data/docs/Unused-Parameters.md +0 -28
  119. data/docs/Unused-Private-Method.md +0 -101
  120. data/docs/Utility-Function.md +0 -56
  121. data/docs/Versioning-Policy.md +0 -7
  122. data/docs/YAML-Reports.md +0 -93
  123. data/docs/defaults.reek.yml +0 -129
  124. data/docs/templates/default/docstring/html/public_api_marker.erb +0 -3
  125. data/docs/templates/default/docstring/setup.rb +0 -37
  126. data/docs/templates/default/fulldoc/html/css/common.css +0 -1
  127. data/features/command_line_interface/basic_usage.feature +0 -15
  128. data/features/command_line_interface/options.feature +0 -123
  129. data/features/command_line_interface/show_progress.feature +0 -33
  130. data/features/command_line_interface/smell_selection.feature +0 -15
  131. data/features/command_line_interface/smells_count.feature +0 -38
  132. data/features/command_line_interface/stdin.feature +0 -65
  133. data/features/configuration_files/accept_setting.feature +0 -87
  134. data/features/configuration_files/directory_specific_directives.feature +0 -274
  135. data/features/configuration_files/exclude_directives.feature +0 -35
  136. data/features/configuration_files/exclude_paths_directives.feature +0 -42
  137. data/features/configuration_files/masking_smells.feature +0 -94
  138. data/features/configuration_files/mix_accept_reject_setting.feature +0 -84
  139. data/features/configuration_files/reject_setting.feature +0 -89
  140. data/features/configuration_files/schema_validation.feature +0 -59
  141. data/features/configuration_files/show_configuration_file.feature +0 -44
  142. data/features/configuration_files/unused_private_method.feature +0 -68
  143. data/features/configuration_loading.feature +0 -91
  144. data/features/configuration_via_source_comments/erroneous_source_comments.feature +0 -68
  145. data/features/configuration_via_source_comments/well_formed_source_comments.feature +0 -116
  146. data/features/locales.feature +0 -32
  147. data/features/programmatic_access.feature +0 -41
  148. data/features/rake_task/rake_task.feature +0 -138
  149. data/features/reports/codeclimate.feature +0 -59
  150. data/features/reports/json.feature +0 -59
  151. data/features/reports/reports.feature +0 -219
  152. data/features/reports/yaml.feature +0 -52
  153. data/features/rspec_matcher.feature +0 -41
  154. data/features/samples.feature +0 -305
  155. data/features/step_definitions/.rubocop.yml +0 -5
  156. data/features/step_definitions/reek_steps.rb +0 -102
  157. data/features/step_definitions/sample_file_steps.rb +0 -63
  158. data/features/support/env.rb +0 -33
  159. data/features/todo_list.feature +0 -108
  160. data/lib/reek/configuration/schema.yml +0 -210
  161. data/samples/checkstyle.xml +0 -7
  162. data/samples/clean_source/clean.rb +0 -6
  163. data/samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml +0 -29
  164. data/samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml +0 -30
  165. data/samples/configuration/corrupt.reek +0 -1
  166. data/samples/configuration/empty.reek +0 -0
  167. data/samples/configuration/full_configuration.reek +0 -13
  168. data/samples/configuration/full_mask.reek +0 -6
  169. data/samples/configuration/home/home.reek.yml +0 -4
  170. data/samples/configuration/partial_mask.reek +0 -4
  171. data/samples/configuration/regular_configuration/.reek.yml +0 -4
  172. data/samples/configuration/regular_configuration/empty_sub_directory/.gitignore +0 -0
  173. data/samples/configuration/with_excluded_paths.reek +0 -5
  174. data/samples/no_config_file/.keep +0 -0
  175. data/samples/paths.rb +0 -5
  176. data/samples/smelly_source/inline.rb +0 -704
  177. data/samples/smelly_source/optparse.rb +0 -1788
  178. data/samples/smelly_source/redcloth.rb +0 -1130
  179. data/samples/smelly_source/ruby.rb +0 -368
  180. data/samples/smelly_source/smelly.rb +0 -7
  181. data/samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb +0 -5
  182. data/samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb +0 -2
  183. data/samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb +0 -6
  184. data/samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb +0 -6
  185. data/samples/source_with_hidden_directories/.hidden/hidden.rb +0 -1
  186. data/samples/source_with_hidden_directories/not_hidden.rb +0 -1
  187. data/samples/source_with_non_ruby_files/gibberish +0 -1
  188. data/samples/source_with_non_ruby_files/python_source.py +0 -1
  189. data/samples/source_with_non_ruby_files/ruby.rb +0 -6
  190. data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +0 -15
  191. data/spec/quality/documentation_spec.rb +0 -41
  192. data/spec/quality/reek_source_spec.rb +0 -11
  193. data/spec/reek/ast/node_spec.rb +0 -211
  194. data/spec/reek/ast/object_refs_spec.rb +0 -83
  195. data/spec/reek/ast/reference_collector_spec.rb +0 -47
  196. data/spec/reek/ast/sexp_extensions_spec.rb +0 -498
  197. data/spec/reek/cli/application_spec.rb +0 -168
  198. data/spec/reek/cli/command/report_command_spec.rb +0 -44
  199. data/spec/reek/cli/command/todo_list_command_spec.rb +0 -86
  200. data/spec/reek/cli/options_spec.rb +0 -51
  201. data/spec/reek/cli/silencer_spec.rb +0 -28
  202. data/spec/reek/code_comment_spec.rb +0 -184
  203. data/spec/reek/configuration/app_configuration_spec.rb +0 -195
  204. data/spec/reek/configuration/configuration_file_finder_spec.rb +0 -230
  205. data/spec/reek/configuration/default_directive_spec.rb +0 -13
  206. data/spec/reek/configuration/directory_directives_spec.rb +0 -122
  207. data/spec/reek/configuration/excluded_paths_spec.rb +0 -16
  208. data/spec/reek/configuration/rake_task_converter_spec.rb +0 -33
  209. data/spec/reek/configuration/schema_validator_spec.rb +0 -165
  210. data/spec/reek/context/code_context_spec.rb +0 -192
  211. data/spec/reek/context/ghost_context_spec.rb +0 -60
  212. data/spec/reek/context/method_context_spec.rb +0 -72
  213. data/spec/reek/context/module_context_spec.rb +0 -55
  214. data/spec/reek/context/root_context_spec.rb +0 -12
  215. data/spec/reek/context/statement_counter_spec.rb +0 -24
  216. data/spec/reek/context_builder_spec.rb +0 -457
  217. data/spec/reek/detector_repository_spec.rb +0 -22
  218. data/spec/reek/documentation_link_spec.rb +0 -20
  219. data/spec/reek/errors/base_error_spec.rb +0 -13
  220. data/spec/reek/examiner_spec.rb +0 -309
  221. data/spec/reek/logging_error_handler_spec.rb +0 -24
  222. data/spec/reek/rake/task_spec.rb +0 -56
  223. data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +0 -22
  224. data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +0 -126
  225. data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +0 -51
  226. data/spec/reek/report/code_climate/code_climate_report_spec.rb +0 -56
  227. data/spec/reek/report/html_report_spec.rb +0 -19
  228. data/spec/reek/report/json_report_spec.rb +0 -58
  229. data/spec/reek/report/location_formatter_spec.rb +0 -32
  230. data/spec/reek/report/progress_formatter_spec.rb +0 -68
  231. data/spec/reek/report/text_report_spec.rb +0 -89
  232. data/spec/reek/report/xml_report_spec.rb +0 -24
  233. data/spec/reek/report/yaml_report_spec.rb +0 -55
  234. data/spec/reek/report_spec.rb +0 -28
  235. data/spec/reek/smell_configuration_spec.rb +0 -56
  236. data/spec/reek/smell_detectors/attribute_spec.rb +0 -197
  237. data/spec/reek/smell_detectors/base_detector_spec.rb +0 -50
  238. data/spec/reek/smell_detectors/boolean_parameter_spec.rb +0 -93
  239. data/spec/reek/smell_detectors/class_variable_spec.rb +0 -106
  240. data/spec/reek/smell_detectors/control_parameter_spec.rb +0 -300
  241. data/spec/reek/smell_detectors/data_clump_spec.rb +0 -134
  242. data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +0 -211
  243. data/spec/reek/smell_detectors/feature_envy_spec.rb +0 -295
  244. data/spec/reek/smell_detectors/instance_variable_assumption_spec.rb +0 -96
  245. data/spec/reek/smell_detectors/irresponsible_module_spec.rb +0 -226
  246. data/spec/reek/smell_detectors/long_parameter_list_spec.rb +0 -61
  247. data/spec/reek/smell_detectors/long_yield_list_spec.rb +0 -49
  248. data/spec/reek/smell_detectors/manual_dispatch_spec.rb +0 -75
  249. data/spec/reek/smell_detectors/missing_safe_method_spec.rb +0 -68
  250. data/spec/reek/smell_detectors/module_initialize_spec.rb +0 -77
  251. data/spec/reek/smell_detectors/nested_iterators_spec.rb +0 -333
  252. data/spec/reek/smell_detectors/nil_check_spec.rb +0 -100
  253. data/spec/reek/smell_detectors/repeated_conditional_spec.rb +0 -100
  254. data/spec/reek/smell_detectors/subclassed_from_core_class_spec.rb +0 -77
  255. data/spec/reek/smell_detectors/too_many_constants_spec.rb +0 -144
  256. data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +0 -132
  257. data/spec/reek/smell_detectors/too_many_methods_spec.rb +0 -54
  258. data/spec/reek/smell_detectors/too_many_statements_spec.rb +0 -90
  259. data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +0 -78
  260. data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +0 -78
  261. data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +0 -147
  262. data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +0 -201
  263. data/spec/reek/smell_detectors/unused_parameters_spec.rb +0 -114
  264. data/spec/reek/smell_detectors/unused_private_method_spec.rb +0 -205
  265. data/spec/reek/smell_detectors/utility_function_spec.rb +0 -293
  266. data/spec/reek/smell_warning_spec.rb +0 -137
  267. data/spec/reek/source/source_code_spec.rb +0 -79
  268. data/spec/reek/source/source_locator_spec.rb +0 -166
  269. data/spec/reek/spec/should_reek_of_spec.rb +0 -153
  270. data/spec/reek/spec/should_reek_only_of_spec.rb +0 -91
  271. data/spec/reek/spec/should_reek_spec.rb +0 -52
  272. data/spec/reek/spec/smell_matcher_spec.rb +0 -87
  273. data/spec/reek/tree_dresser_spec.rb +0 -46
  274. data/spec/spec_helper.rb +0 -110
  275. data/tasks/configuration.rake +0 -18
  276. data/tasks/console.rake +0 -5
  277. data/tasks/reek.rake +0 -6
  278. data/tasks/rubocop.rake +0 -11
  279. data/tasks/test.rake +0 -32
  280. /data/lib/reek/{report/code_climate.rb → code_climate.rb} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 83760bf0344db6b8f65cd5bbb6e57f90ee4e1b54c10edb3920821a517e6649cd
4
- data.tar.gz: 258214d9022fda0ecbe287c4313719472c30f056c1ff6ffd4f7ff023b255b199
3
+ metadata.gz: 3cd53c902c108773156429c3aacbb8aaa12f7e0c8f22966f833e4ade893ad5ce
4
+ data.tar.gz: 765ece4c34e29251afb173e37616b3be740e8f8035394958d7df5d3d6b4f1473
5
5
  SHA512:
6
- metadata.gz: 56c12a16cc200dd475d84a543fd9edf2ce888f550a5d4d22cbe813c3439ed0915263340d7c02654417666bcd728ee5e9ba976670cae46098293b58595589f36c
7
- data.tar.gz: 0f012f16ec237bdece4f797ea2977c0db5fa083df32ac86ce57b14911777eec0d832aff8e861df67c5cc80b847b0c3caf801a157b759724cc9f858ae4236ace9
6
+ metadata.gz: db05cf1c8d8186cd2c1a36e68afe5a628458332e275ef87b0681903f05dbaad1f0d6228aaaa6257cf706d3d07e3efbfaab0f2c9f1c37ebc9284312be942ff182
7
+ data.tar.gz: 4826674e1ac0dffa73f6856403b7254f52f3a066ba75cb4968e5a836d58995229fa3a31d66beece59afa80648506ef310fa15476a97e5283a84303ba710ffa53
@@ -0,0 +1,13 @@
1
+ # Documentation for all configuration options:
2
+ # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
3
+
4
+ version: 2
5
+ updates:
6
+ - package-ecosystem: "bundler"
7
+ directory: "/"
8
+ schedule:
9
+ interval: "daily"
10
+ - package-ecosystem: "github-actions"
11
+ directory: "/"
12
+ schedule:
13
+ interval: "monthly"
@@ -0,0 +1,58 @@
1
+ # This workflow will download a prebuilt Ruby version, install dependencies and
2
+ # run tests with Rake
3
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
4
+
5
+ name: CI
6
+
7
+ "on":
8
+ push:
9
+ branches: [master]
10
+ pull_request:
11
+ branches: [master]
12
+ schedule:
13
+ - cron: '16 4 12 * *'
14
+ workflow_dispatch:
15
+
16
+ env:
17
+ CUCUMBER_PUBLISH_QUIET: true
18
+ RUBYOPTS: "--disable-did-you-mean"
19
+ jobs:
20
+ test:
21
+
22
+ runs-on: ubuntu-latest
23
+
24
+ strategy:
25
+ matrix:
26
+ ruby: ["3.1", "3.2", "jruby-9.4", "3.3", "3.4"]
27
+
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+ - name: Set up Ruby
31
+ uses: ruby/setup-ruby@v1
32
+ with:
33
+ ruby-version: ${{ matrix.ruby }}
34
+ bundler-cache: true
35
+ - name: Run specs
36
+ run: bundle exec rake test:spec
37
+ - name: Run performance tests
38
+ run: bundle exec rake test:performance
39
+ - name: Update default configuration
40
+ run: bundle exec rake configuration:update_default_configuration
41
+ - name: Run cucumber features
42
+ run: bundle exec rake test:features
43
+ - name: Run code quality specs
44
+ run: bundle exec rake test:quality
45
+
46
+ rubocop:
47
+
48
+ runs-on: ubuntu-latest
49
+
50
+ steps:
51
+ - uses: actions/checkout@v4
52
+ - name: Set up Ruby
53
+ uses: ruby/setup-ruby@v1
54
+ with:
55
+ ruby-version: "3.3"
56
+ bundler-cache: true
57
+ - name: Run RuboCop
58
+ run: bundle exec rubocop -P
data/.gitignore CHANGED
@@ -11,7 +11,6 @@ coverage
11
11
  Gemfile.lock
12
12
  *.swp
13
13
  tags
14
- .pryrc
15
14
  .tags*
16
15
  .DS_Store
17
16
  .idea/
data/.rubocop.yml CHANGED
@@ -1,16 +1,18 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
- require:
3
+ inherit_mode:
4
+ merge:
5
+ - Exclude
6
+
7
+ plugins:
4
8
  - rubocop-rspec
5
9
  - rubocop-performance
6
10
 
7
11
  AllCops:
8
12
  Exclude:
9
13
  - 'samples/**/*'
10
- - 'tmp/**/*'
11
- - 'vendor/**/*'
12
14
  NewCops: enable
13
- TargetRubyVersion: 2.4
15
+ TargetRubyVersion: 3.1
14
16
 
15
17
  # Tables are nice
16
18
  Layout/HashAlignment:
@@ -46,7 +48,7 @@ Layout/MultilineOperationIndentation:
46
48
  Lint/AmbiguousBlockAssociation:
47
49
  Enabled: false
48
50
 
49
- # Some of our source examples include interpolation explicitely.
51
+ # Some of our source examples include interpolation explicitly.
50
52
  Lint/InterpolationCheck:
51
53
  Exclude:
52
54
  - 'spec/**/*'
@@ -78,25 +80,10 @@ RSpec/DescribeClass:
78
80
  RSpec/ExampleLength:
79
81
  Enabled: false
80
82
 
81
- # rubocop-rspec expects a CodeClimate namespace to go with the code_climate directory.
82
- RSpec/FilePath:
83
- Exclude:
84
- - 'spec/reek/report/code_climate/code_climate_configuration_spec.rb'
85
- - 'spec/reek/report/code_climate/code_climate_fingerprint_spec.rb'
86
- - 'spec/reek/report/code_climate/code_climate_formatter_spec.rb'
87
- - 'spec/reek/report/code_climate/code_climate_report_spec.rb'
88
-
89
83
  # Allow and/or for control flow only
90
84
  Style/AndOr:
91
85
  EnforcedStyle: conditionals
92
86
 
93
- # Require comment for files in lib and bin
94
- Style/FrozenStringLiteralComment:
95
- Include:
96
- - 'bin/*'
97
- - 'lib/**/*'
98
- EnforcedStyle: always
99
-
100
87
  # Allow multiline block chains
101
88
  Style/MultilineBlockChain:
102
89
  Enabled: false
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-08-19 19:02:50 UTC using RuboCop version 0.89.1.
3
+ # on 2021-01-03 18:17:11 UTC using RuboCop version 1.7.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -13,22 +13,24 @@ Lint/MissingSuper:
13
13
  - 'lib/reek/smell_detectors/base_detector.rb'
14
14
 
15
15
  # Offense count: 2
16
+ # Configuration parameters: IgnoredPatterns.
17
+ # IgnoredPatterns: (?-mix:(exactly|at_least|at_most)\(\d+\)\.times)
16
18
  Lint/UnreachableLoop:
17
19
  Exclude:
18
20
  - 'spec/reek/ast/node_spec.rb'
19
21
 
20
22
  # Offense count: 2
21
- # Configuration parameters: IgnoredMethods.
23
+ # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
22
24
  Metrics/AbcSize:
23
25
  Max: 21
24
26
 
25
27
  # Offense count: 1
26
28
  # Configuration parameters: CountComments, CountAsOne.
27
29
  Metrics/ClassLength:
28
- Max: 161
30
+ Max: 170
29
31
 
30
32
  # Offense count: 13
31
- # Configuration parameters: CountComments, CountAsOne, ExcludedMethods.
33
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
32
34
  Metrics/MethodLength:
33
35
  Max: 16
34
36
 
data/.simplecov CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  SimpleCov.start do
2
4
  track_files 'lib/**/*.rb'
3
5
  add_filter 'lib/reek/version.rb' # version.rb is loaded too early to test
data/CHANGELOG.md CHANGED
@@ -1,5 +1,119 @@
1
+
1
2
  # Change log
2
3
 
4
+ ## 6.5.0 (2025-03-24)
5
+
6
+ ### Features and bugfixes
7
+
8
+ * Loosen up Gemfile dependencies by [mvz])
9
+
10
+ ## 6.4.0 (2025-01-12)
11
+
12
+ ### Features and bugfixes
13
+
14
+ * Fix DataClump smell in Reek::AST::Node class ([#1799] by [le-santos])
15
+
16
+ ## 6.3.0 (2024-01-28)
17
+
18
+ ### Features and bugfixes
19
+
20
+ * Update parser dependency to the 3.3.x series([#1761] by [mvz])
21
+
22
+ ## 6.2.0 (2023-12-31)
23
+
24
+ ### Features and bugfixes
25
+
26
+ * Code Climate: add config `target_ruby_version` to support different versions
27
+ of Ruby syntax ([#1694] by [dantevvp])
28
+ * Treat `Data.define` as a class definition ([#1725] by [mvz])
29
+ * Fix Instance Variable Assumption false positive ([#1737] by [JuanVqz])
30
+ * Add `Tempfile.create` to ignored iterators list ([#1747] by [mateusdeap])
31
+ * Improve configuration schema validation. This also replaces the kwalify
32
+ dependency with dry-schema ([#1749] by [fbuys])
33
+
34
+ ### Dependencies
35
+
36
+ * Add missing dependency rexml ([#1703] by [tricknotes])
37
+ * Drop support for Ruby 2.6 and 2.7 ([#1716] and [#1755] by [mvz])
38
+ * Add support for Ruby 3.3 ([#1756] and [#1755] by [mvz])
39
+
40
+ ### Documentation
41
+
42
+ * Fix the badges in our README ([#1711] by [troessner])
43
+ * Remove non working link in CONTRIBUTING.md ([#1738] by [JuanVqz])
44
+ * Add downloads badge ([#1750] by [troessner])
45
+
46
+ ### Internal
47
+
48
+ * Rename Code Climate related classes ([#1735] by [mvz])
49
+ * Fix `cucumber_opts` warning ([#1736] by [JuanVqz])
50
+ * Fix editor highlighting for fenced code blocks in documentation ([#1745] by [JuanVqz])
51
+
52
+ [JuanVqz]: https://github.com/JuanVqz
53
+ [dantevvp]: https://github.com/dantevvp
54
+ [fbuys]: https://github.com/fbuys
55
+ [mateusdeap]: https://github.com/mateusdeap
56
+ [mvz]: https://github.com/mvz
57
+ [tricknotes]: https://github.com/tricknotes
58
+ [troessner]: https://github.com/troessner
59
+
60
+ [#1694]: https://github.com/troessner/reek/pull/1694
61
+ [#1703]: https://github.com/troessner/reek/pull/1703
62
+ [#1711]: https://github.com/troessner/reek/pull/1711
63
+ [#1725]: https://github.com/troessner/reek/pull/1725
64
+ [#1735]: https://github.com/troessner/reek/pull/1735
65
+ [#1736]: https://github.com/troessner/reek/pull/1736
66
+ [#1737]: https://github.com/troessner/reek/pull/1737
67
+ [#1738]: https://github.com/troessner/reek/pull/1738
68
+ [#1745]: https://github.com/troessner/reek/pull/1745
69
+ [#1749]: https://github.com/troessner/reek/pull/1749
70
+ [#1747]: https://github.com/troessner/reek/pull/1747
71
+ [#1750]: https://github.com/troessner/reek/pull/1750
72
+ [#1756]: https://github.com/troessner/reek/pull/1756
73
+ [#1755]: https://github.com/troessner/reek/pull/1755
74
+
75
+ ## 6.1.4 (2023-01-13)
76
+
77
+ * (mvz) Update parser dependency to the 3.2.x series
78
+
79
+ ## 6.1.3 (2022-12-29)
80
+
81
+ * (gonubana) Allow failing safely when trying to recursively find a configuration
82
+
83
+ ## 6.1.2 (2022-11-21)
84
+
85
+ * (mvz) Add support for keyword nil arguments
86
+
87
+ ## 6.1.1 (2022-04-20)
88
+
89
+ * (ydah) UnusedPrivateMethod to be detect use of methods via `Method#to_proc`
90
+
91
+ ## 6.1.0 (2022-01-14)
92
+
93
+ * (mvz) Drop support for Ruby 2.4 and 2.5
94
+ * (mvz) Support Ruby 3.0 and 3.1
95
+ * (mvz) Support argument forwarding after regular arguments
96
+
97
+ ## 6.0.6 (2021-08-12)
98
+
99
+ * (mvz) Remove explicit dependency on psych. This fixes an issue where
100
+ installing Reek would unintentionally pull in psych 4.0
101
+
102
+ ## 6.0.5 (2021-08-01)
103
+
104
+ * (dependabot) Loosen dependency on psych
105
+ * (Nicolás Ferrari) Fix bugs when used by codeclimate
106
+
107
+ ## 6.0.4 (2021-04-27)
108
+
109
+ * (Nicolás Ferrari) Add build-base to Dockerfile
110
+ * (Masataka Pocke Kuwabara and Daniel Santos Dantas) Reduce gem package size
111
+
112
+ ## 6.0.3 (2021-01-11)
113
+
114
+ * (mvz) Require parser 3.0
115
+ * (mvz) In a refinement, assign smells to the refined module or class
116
+
3
117
  ## 6.0.2 (2020-10-17)
4
118
 
5
119
  * (mvz) Loosen dependency on psych. This should resolve installation problems on
data/CONTRIBUTING.md CHANGED
@@ -27,6 +27,9 @@ version, Ruby platform (MRI, JRuby, etc.), operating system.
27
27
  Try to provide a minimal example that reproduces the issue.
28
28
  Extra kudos if you can write it as a failing test. :)
29
29
 
30
+ Make sure any code examples and output are properly formatted
31
+ using [code blocks](https://github.github.com/gfm/#fenced-code-blocks).
32
+
30
33
  ## Contributing features, bugfixes, documentation
31
34
 
32
35
  ### Getting started
@@ -59,11 +62,8 @@ demonstrate that your fix was needed.
59
62
 
60
63
  Reek uses [Rspec](http://rspec.info/) for unit and functional testing.
61
64
 
62
- We're trying to follow [betterspecs](http://betterspecs.org/). We're not using
63
- RSpec's
64
- [shared examples](https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples)
65
- because we find them rather harming than helpful. You can find an excellent
66
- cheat sheet on how to write idiomatic Rspec
65
+ We're trying to follow [betterspecs](http://betterspecs.org/).
66
+ You can find an excellent cheat sheet on how to write idiomatic Rspec
67
67
  [here](http://www.rubypigeon.com/posts/rspec-core-cheat-sheet).
68
68
 
69
69
  We do not use the popular "foo" / "bar" naming when it comes to the question
@@ -71,7 +71,7 @@ We do not use the popular "foo" / "bar" naming when it comes to the question
71
71
  [military alphabet](https://en.wikipedia.org/wiki/NATO_phonetic_alphabet) in
72
72
  ascending order which means that we would write this
73
73
 
74
- ```Ruby
74
+ ```ruby
75
75
  class Foo
76
76
  def bar(baz)
77
77
  baz.quux
@@ -81,7 +81,7 @@ end
81
81
 
82
82
  rather like this:
83
83
 
84
- ```Ruby
84
+ ```ruby
85
85
  class Alfa
86
86
  def bravo(charlie)
87
87
  charlie.delta
@@ -139,7 +139,7 @@ Once you’re happy with your feature / fix – or want to
139
139
  share it as a work-in-progress and request comments – once
140
140
  again make sure all of the tests pass. This will also run
141
141
  [RuboCop](https://github.com/bbatsov/rubocop) – fix any
142
- offences RuboCop finds (or discuss them in the pull request):
142
+ offenses RuboCop finds (or discuss them in the pull request):
143
143
 
144
144
  ```
145
145
  bundle exec rake
@@ -199,11 +199,11 @@ In this example we assume the current version is 5.3.1 and you want to update to
199
199
  * Update the version in `lib/reek/version.rb`
200
200
  * List all relevant changes in `CHANGELOG.md`
201
201
  * Update the version number in our cucumber features, otherwise the build will fail. You can do this quite easily via
202
- ```Bash
202
+ ```bash
203
203
  find features/ -type f -exec sed -i '' 's/v5.3.1/v5.3.2/g' {} +
204
204
  ```
205
205
  * Push the branch, create a pull request, have it reviewed and merged
206
206
  * Pull the latest master and then do a
207
- ```Bash
207
+ ```bash
208
208
  bundle exec rake release
209
209
  ```
data/Dockerfile CHANGED
@@ -11,7 +11,7 @@ ENV code_dir /code
11
11
  ENV app_dir /usr/src/app
12
12
  ENV user app
13
13
 
14
- RUN apk --update add git
14
+ RUN apk --update add git build-base
15
15
  ADD . ${app_dir}
16
16
 
17
17
  RUN adduser -u 9000 -D ${user}
data/Gemfile CHANGED
@@ -1,29 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
4
6
 
5
- ruby RUBY_VERSION
6
-
7
- group :development do
8
- gem 'aruba', '~> 1.0'
9
- gem 'codeclimate-engine-rb', '~> 0.4.0'
10
- gem 'cucumber', ['>= 4.0', '< 6.0']
11
- gem 'kramdown', '~> 2.1'
12
- gem 'kramdown-parser-gfm', '~> 1.0'
13
- gem 'rake', '~> 13.0'
14
- gem 'rspec', '~> 3.0'
15
- gem 'rspec-benchmark', '~> 0.6.0'
16
- gem 'rubocop', '~> 0.93.0'
17
- gem 'rubocop-performance', '~> 1.8.0'
18
- gem 'rubocop-rspec', '~> 1.43.1'
19
- gem 'simplecov', ['>= 0.18.0', '< 0.20.0']
20
- gem 'yard', '~> 0.9.5'
21
-
22
- platforms :mri do
23
- gem 'redcarpet', '~> 3.4'
24
- end
25
- end
7
+ gem 'aruba', '~> 2.1'
8
+ gem 'codeclimate-engine-rb', '~> 0.4.0'
9
+ gem 'cucumber', '~> 9.0'
10
+ gem 'kramdown', '~> 2.1'
11
+ gem 'kramdown-parser-gfm', '~> 1.0'
12
+ gem 'rake', '~> 13.0'
13
+ gem 'rspec', '~> 3.0'
14
+ gem 'rspec-benchmark', '~> 0.6.0'
15
+ gem 'rubocop', '~> 1.72.2'
16
+ gem 'rubocop-performance', '~> 1.24.0'
17
+ gem 'rubocop-rspec', '~> 3.5.0'
18
+ gem 'simplecov', '~> 0.22.0'
19
+ gem 'yard', '~> 0.9.5'
26
20
 
27
- group :debugging do
28
- gem 'pry', '~> 0.13.0'
29
- end
21
+ # Needed for YARD to properly parse GFM code blocks in the documentation
22
+ gem 'redcarpet', '~> 3.4', platform: :mri