reek 6.0.2 → 6.1.1

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 (241) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +9 -0
  3. data/.github/workflows/ruby.yml +57 -0
  4. data/.rubocop.yml +5 -3
  5. data/.rubocop_todo.yml +6 -4
  6. data/CHANGELOG.md +30 -0
  7. data/CONTRIBUTING.md +3 -0
  8. data/Dockerfile +1 -1
  9. data/Gemfile +7 -7
  10. data/README.md +1 -1
  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 +11 -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 +1 -1
  19. data/lib/reek/cli/options.rb +1 -1
  20. data/lib/reek/code_comment.rb +22 -17
  21. data/lib/reek/configuration/excluded_paths.rb +2 -1
  22. data/lib/reek/context/code_context.rb +1 -1
  23. data/lib/reek/context/module_context.rb +4 -0
  24. data/lib/reek/context/refinement_context.rb +16 -0
  25. data/lib/reek/context/send_context.rb +6 -0
  26. data/lib/reek/context_builder.rb +17 -3
  27. data/lib/reek/rake/task.rb +1 -1
  28. data/lib/reek/report/code_climate/code_climate_formatter.rb +1 -3
  29. data/lib/reek/smell_detectors/base_detector.rb +1 -1
  30. data/lib/reek/smell_detectors/unused_private_method.rb +1 -0
  31. data/lib/reek/smell_warning.rb +1 -1
  32. data/lib/reek/source/source_locator.rb +1 -3
  33. data/lib/reek/spec/should_reek_of.rb +6 -4
  34. data/lib/reek/version.rb +2 -2
  35. data/reek.gemspec +28 -25
  36. metadata +10 -237
  37. data/.travis.yml +0 -40
  38. data/docs/API.md +0 -174
  39. data/docs/Attribute.md +0 -39
  40. data/docs/Basic-Smell-Options.md +0 -85
  41. data/docs/Boolean-Parameter.md +0 -54
  42. data/docs/Class-Variable.md +0 -40
  43. data/docs/Code-Smells.md +0 -39
  44. data/docs/Command-Line-Options.md +0 -119
  45. data/docs/Control-Couple.md +0 -26
  46. data/docs/Control-Parameter.md +0 -32
  47. data/docs/Data-Clump.md +0 -46
  48. data/docs/Duplicate-Method-Call.md +0 -264
  49. data/docs/Feature-Envy.md +0 -93
  50. data/docs/How-To-Write-New-Detectors.md +0 -132
  51. data/docs/How-reek-works-internally.md +0 -114
  52. data/docs/Instance-Variable-Assumption.md +0 -163
  53. data/docs/Irresponsible-Module.md +0 -47
  54. data/docs/Large-Class.md +0 -16
  55. data/docs/Long-Parameter-List.md +0 -39
  56. data/docs/Long-Yield-List.md +0 -37
  57. data/docs/Manual-Dispatch.md +0 -30
  58. data/docs/Missing-Safe-Method.md +0 -92
  59. data/docs/Module-Initialize.md +0 -62
  60. data/docs/Nested-Iterators.md +0 -59
  61. data/docs/Nil-Check.md +0 -47
  62. data/docs/RSpec-matchers.md +0 -129
  63. data/docs/Rake-Task.md +0 -66
  64. data/docs/Reek-4-to-Reek-5-migration.md +0 -188
  65. data/docs/Reek-Driven-Development.md +0 -46
  66. data/docs/Repeated-Conditional.md +0 -47
  67. data/docs/Simulated-Polymorphism.md +0 -16
  68. data/docs/Smell-Suppression.md +0 -96
  69. data/docs/Style-Guide.md +0 -19
  70. data/docs/Subclassed-From-Core-Class.md +0 -79
  71. data/docs/Too-Many-Constants.md +0 -37
  72. data/docs/Too-Many-Instance-Variables.md +0 -43
  73. data/docs/Too-Many-Methods.md +0 -56
  74. data/docs/Too-Many-Statements.md +0 -54
  75. data/docs/Uncommunicative-Method-Name.md +0 -94
  76. data/docs/Uncommunicative-Module-Name.md +0 -92
  77. data/docs/Uncommunicative-Name.md +0 -18
  78. data/docs/Uncommunicative-Parameter-Name.md +0 -90
  79. data/docs/Uncommunicative-Variable-Name.md +0 -96
  80. data/docs/Unused-Parameters.md +0 -28
  81. data/docs/Unused-Private-Method.md +0 -101
  82. data/docs/Utility-Function.md +0 -56
  83. data/docs/Versioning-Policy.md +0 -7
  84. data/docs/YAML-Reports.md +0 -93
  85. data/docs/defaults.reek.yml +0 -129
  86. data/docs/templates/default/docstring/html/public_api_marker.erb +0 -3
  87. data/docs/templates/default/docstring/setup.rb +0 -37
  88. data/docs/templates/default/fulldoc/html/css/common.css +0 -1
  89. data/docs/yard_plugin.rb +0 -17
  90. data/features/command_line_interface/basic_usage.feature +0 -15
  91. data/features/command_line_interface/options.feature +0 -123
  92. data/features/command_line_interface/show_progress.feature +0 -33
  93. data/features/command_line_interface/smell_selection.feature +0 -15
  94. data/features/command_line_interface/smells_count.feature +0 -38
  95. data/features/command_line_interface/stdin.feature +0 -65
  96. data/features/configuration_files/accept_setting.feature +0 -87
  97. data/features/configuration_files/directory_specific_directives.feature +0 -274
  98. data/features/configuration_files/exclude_directives.feature +0 -35
  99. data/features/configuration_files/exclude_paths_directives.feature +0 -42
  100. data/features/configuration_files/masking_smells.feature +0 -94
  101. data/features/configuration_files/mix_accept_reject_setting.feature +0 -84
  102. data/features/configuration_files/reject_setting.feature +0 -89
  103. data/features/configuration_files/schema_validation.feature +0 -59
  104. data/features/configuration_files/show_configuration_file.feature +0 -44
  105. data/features/configuration_files/unused_private_method.feature +0 -68
  106. data/features/configuration_loading.feature +0 -91
  107. data/features/configuration_via_source_comments/erroneous_source_comments.feature +0 -68
  108. data/features/configuration_via_source_comments/well_formed_source_comments.feature +0 -116
  109. data/features/locales.feature +0 -32
  110. data/features/programmatic_access.feature +0 -41
  111. data/features/rake_task/rake_task.feature +0 -138
  112. data/features/reports/codeclimate.feature +0 -59
  113. data/features/reports/json.feature +0 -59
  114. data/features/reports/reports.feature +0 -219
  115. data/features/reports/yaml.feature +0 -52
  116. data/features/rspec_matcher.feature +0 -41
  117. data/features/samples.feature +0 -305
  118. data/features/step_definitions/.rubocop.yml +0 -5
  119. data/features/step_definitions/reek_steps.rb +0 -102
  120. data/features/step_definitions/sample_file_steps.rb +0 -63
  121. data/features/support/env.rb +0 -33
  122. data/features/todo_list.feature +0 -108
  123. data/samples/checkstyle.xml +0 -7
  124. data/samples/clean_source/clean.rb +0 -6
  125. data/samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml +0 -29
  126. data/samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml +0 -30
  127. data/samples/configuration/corrupt.reek +0 -1
  128. data/samples/configuration/empty.reek +0 -0
  129. data/samples/configuration/full_configuration.reek +0 -13
  130. data/samples/configuration/full_mask.reek +0 -6
  131. data/samples/configuration/home/home.reek.yml +0 -4
  132. data/samples/configuration/partial_mask.reek +0 -4
  133. data/samples/configuration/regular_configuration/.reek.yml +0 -4
  134. data/samples/configuration/regular_configuration/empty_sub_directory/.gitignore +0 -0
  135. data/samples/configuration/with_excluded_paths.reek +0 -5
  136. data/samples/no_config_file/.keep +0 -0
  137. data/samples/paths.rb +0 -5
  138. data/samples/smelly_source/inline.rb +0 -704
  139. data/samples/smelly_source/optparse.rb +0 -1788
  140. data/samples/smelly_source/redcloth.rb +0 -1130
  141. data/samples/smelly_source/ruby.rb +0 -368
  142. data/samples/smelly_source/smelly.rb +0 -7
  143. data/samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb +0 -5
  144. data/samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb +0 -2
  145. data/samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb +0 -6
  146. data/samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb +0 -6
  147. data/samples/source_with_hidden_directories/.hidden/hidden.rb +0 -1
  148. data/samples/source_with_hidden_directories/not_hidden.rb +0 -1
  149. data/samples/source_with_non_ruby_files/gibberish +0 -1
  150. data/samples/source_with_non_ruby_files/python_source.py +0 -1
  151. data/samples/source_with_non_ruby_files/ruby.rb +0 -6
  152. data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +0 -15
  153. data/spec/quality/documentation_spec.rb +0 -41
  154. data/spec/quality/reek_source_spec.rb +0 -11
  155. data/spec/reek/ast/node_spec.rb +0 -211
  156. data/spec/reek/ast/object_refs_spec.rb +0 -83
  157. data/spec/reek/ast/reference_collector_spec.rb +0 -47
  158. data/spec/reek/ast/sexp_extensions_spec.rb +0 -498
  159. data/spec/reek/cli/application_spec.rb +0 -168
  160. data/spec/reek/cli/command/report_command_spec.rb +0 -44
  161. data/spec/reek/cli/command/todo_list_command_spec.rb +0 -86
  162. data/spec/reek/cli/options_spec.rb +0 -51
  163. data/spec/reek/cli/silencer_spec.rb +0 -28
  164. data/spec/reek/code_comment_spec.rb +0 -184
  165. data/spec/reek/configuration/app_configuration_spec.rb +0 -195
  166. data/spec/reek/configuration/configuration_file_finder_spec.rb +0 -230
  167. data/spec/reek/configuration/default_directive_spec.rb +0 -13
  168. data/spec/reek/configuration/directory_directives_spec.rb +0 -122
  169. data/spec/reek/configuration/excluded_paths_spec.rb +0 -16
  170. data/spec/reek/configuration/rake_task_converter_spec.rb +0 -33
  171. data/spec/reek/configuration/schema_validator_spec.rb +0 -165
  172. data/spec/reek/context/code_context_spec.rb +0 -192
  173. data/spec/reek/context/ghost_context_spec.rb +0 -60
  174. data/spec/reek/context/method_context_spec.rb +0 -72
  175. data/spec/reek/context/module_context_spec.rb +0 -55
  176. data/spec/reek/context/root_context_spec.rb +0 -12
  177. data/spec/reek/context/statement_counter_spec.rb +0 -24
  178. data/spec/reek/context_builder_spec.rb +0 -457
  179. data/spec/reek/detector_repository_spec.rb +0 -22
  180. data/spec/reek/documentation_link_spec.rb +0 -20
  181. data/spec/reek/errors/base_error_spec.rb +0 -13
  182. data/spec/reek/examiner_spec.rb +0 -309
  183. data/spec/reek/logging_error_handler_spec.rb +0 -24
  184. data/spec/reek/rake/task_spec.rb +0 -56
  185. data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +0 -22
  186. data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +0 -126
  187. data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +0 -51
  188. data/spec/reek/report/code_climate/code_climate_report_spec.rb +0 -56
  189. data/spec/reek/report/html_report_spec.rb +0 -19
  190. data/spec/reek/report/json_report_spec.rb +0 -58
  191. data/spec/reek/report/location_formatter_spec.rb +0 -32
  192. data/spec/reek/report/progress_formatter_spec.rb +0 -68
  193. data/spec/reek/report/text_report_spec.rb +0 -89
  194. data/spec/reek/report/xml_report_spec.rb +0 -24
  195. data/spec/reek/report/yaml_report_spec.rb +0 -55
  196. data/spec/reek/report_spec.rb +0 -28
  197. data/spec/reek/smell_configuration_spec.rb +0 -56
  198. data/spec/reek/smell_detectors/attribute_spec.rb +0 -197
  199. data/spec/reek/smell_detectors/base_detector_spec.rb +0 -50
  200. data/spec/reek/smell_detectors/boolean_parameter_spec.rb +0 -93
  201. data/spec/reek/smell_detectors/class_variable_spec.rb +0 -106
  202. data/spec/reek/smell_detectors/control_parameter_spec.rb +0 -300
  203. data/spec/reek/smell_detectors/data_clump_spec.rb +0 -134
  204. data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +0 -211
  205. data/spec/reek/smell_detectors/feature_envy_spec.rb +0 -295
  206. data/spec/reek/smell_detectors/instance_variable_assumption_spec.rb +0 -96
  207. data/spec/reek/smell_detectors/irresponsible_module_spec.rb +0 -226
  208. data/spec/reek/smell_detectors/long_parameter_list_spec.rb +0 -61
  209. data/spec/reek/smell_detectors/long_yield_list_spec.rb +0 -49
  210. data/spec/reek/smell_detectors/manual_dispatch_spec.rb +0 -75
  211. data/spec/reek/smell_detectors/missing_safe_method_spec.rb +0 -68
  212. data/spec/reek/smell_detectors/module_initialize_spec.rb +0 -77
  213. data/spec/reek/smell_detectors/nested_iterators_spec.rb +0 -333
  214. data/spec/reek/smell_detectors/nil_check_spec.rb +0 -100
  215. data/spec/reek/smell_detectors/repeated_conditional_spec.rb +0 -100
  216. data/spec/reek/smell_detectors/subclassed_from_core_class_spec.rb +0 -77
  217. data/spec/reek/smell_detectors/too_many_constants_spec.rb +0 -144
  218. data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +0 -132
  219. data/spec/reek/smell_detectors/too_many_methods_spec.rb +0 -54
  220. data/spec/reek/smell_detectors/too_many_statements_spec.rb +0 -90
  221. data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +0 -78
  222. data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +0 -78
  223. data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +0 -147
  224. data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +0 -201
  225. data/spec/reek/smell_detectors/unused_parameters_spec.rb +0 -114
  226. data/spec/reek/smell_detectors/unused_private_method_spec.rb +0 -205
  227. data/spec/reek/smell_detectors/utility_function_spec.rb +0 -293
  228. data/spec/reek/smell_warning_spec.rb +0 -137
  229. data/spec/reek/source/source_code_spec.rb +0 -79
  230. data/spec/reek/source/source_locator_spec.rb +0 -166
  231. data/spec/reek/spec/should_reek_of_spec.rb +0 -153
  232. data/spec/reek/spec/should_reek_only_of_spec.rb +0 -91
  233. data/spec/reek/spec/should_reek_spec.rb +0 -52
  234. data/spec/reek/spec/smell_matcher_spec.rb +0 -87
  235. data/spec/reek/tree_dresser_spec.rb +0 -46
  236. data/spec/spec_helper.rb +0 -110
  237. data/tasks/configuration.rake +0 -18
  238. data/tasks/console.rake +0 -5
  239. data/tasks/reek.rake +0 -6
  240. data/tasks/rubocop.rake +0 -11
  241. data/tasks/test.rake +0 -32
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.1.0'
36
+ spec.add_runtime_dependency 'rainbow', '>= 2.0', '< 4.0'
34
37
  end
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.2
4
+ version: 6.1.1
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: 2020-10-17 00:00:00.000000000 Z
14
+ date: 2022-04-20 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.1.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.1.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,6 +243,7 @@ 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
246
+ rubygems_mfa_required: 'true'
474
247
  post_install_message:
475
248
  rdoc_options:
476
249
  - "--main"
@@ -483,14 +256,14 @@ 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
266
+ rubygems_version: 3.1.6
494
267
  signing_key:
495
268
  specification_version: 4
496
269
  summary: Code smell detector for Ruby
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"
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).