reek 6.0.2 → 6.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +9 -0
  3. data/.github/workflows/ruby.yml +52 -0
  4. data/.rubocop_todo.yml +6 -4
  5. data/CHANGELOG.md +10 -0
  6. data/CONTRIBUTING.md +3 -0
  7. data/Dockerfile +1 -1
  8. data/Gemfile +6 -6
  9. data/lib/reek/ast/ast_node_class_map.rb +1 -1
  10. data/lib/reek/ast/node.rb +1 -1
  11. data/lib/reek/configuration/excluded_paths.rb +2 -1
  12. data/lib/reek/context/code_context.rb +1 -1
  13. data/lib/reek/context/refinement_context.rb +16 -0
  14. data/lib/reek/context_builder.rb +16 -2
  15. data/lib/reek/report/code_climate/code_climate_formatter.rb +1 -3
  16. data/lib/reek/smell_detectors/base_detector.rb +1 -1
  17. data/lib/reek/smell_warning.rb +1 -1
  18. data/lib/reek/source/source_locator.rb +1 -3
  19. data/lib/reek/version.rb +1 -1
  20. data/reek.gemspec +5 -2
  21. metadata +13 -227
  22. data/.travis.yml +0 -40
  23. data/docs/API.md +0 -174
  24. data/docs/Attribute.md +0 -39
  25. data/docs/Basic-Smell-Options.md +0 -85
  26. data/docs/Boolean-Parameter.md +0 -54
  27. data/docs/Class-Variable.md +0 -40
  28. data/docs/Code-Smells.md +0 -39
  29. data/docs/Command-Line-Options.md +0 -119
  30. data/docs/Control-Couple.md +0 -26
  31. data/docs/Control-Parameter.md +0 -32
  32. data/docs/Data-Clump.md +0 -46
  33. data/docs/Duplicate-Method-Call.md +0 -264
  34. data/docs/Feature-Envy.md +0 -93
  35. data/docs/How-To-Write-New-Detectors.md +0 -132
  36. data/docs/How-reek-works-internally.md +0 -114
  37. data/docs/Instance-Variable-Assumption.md +0 -163
  38. data/docs/Irresponsible-Module.md +0 -47
  39. data/docs/Large-Class.md +0 -16
  40. data/docs/Long-Parameter-List.md +0 -39
  41. data/docs/Long-Yield-List.md +0 -37
  42. data/docs/Manual-Dispatch.md +0 -30
  43. data/docs/Missing-Safe-Method.md +0 -92
  44. data/docs/Module-Initialize.md +0 -62
  45. data/docs/Nested-Iterators.md +0 -59
  46. data/docs/Nil-Check.md +0 -47
  47. data/docs/RSpec-matchers.md +0 -129
  48. data/docs/Rake-Task.md +0 -66
  49. data/docs/Reek-4-to-Reek-5-migration.md +0 -188
  50. data/docs/Reek-Driven-Development.md +0 -46
  51. data/docs/Repeated-Conditional.md +0 -47
  52. data/docs/Simulated-Polymorphism.md +0 -16
  53. data/docs/Smell-Suppression.md +0 -96
  54. data/docs/Style-Guide.md +0 -19
  55. data/docs/Subclassed-From-Core-Class.md +0 -79
  56. data/docs/Too-Many-Constants.md +0 -37
  57. data/docs/Too-Many-Instance-Variables.md +0 -43
  58. data/docs/Too-Many-Methods.md +0 -56
  59. data/docs/Too-Many-Statements.md +0 -54
  60. data/docs/Uncommunicative-Method-Name.md +0 -94
  61. data/docs/Uncommunicative-Module-Name.md +0 -92
  62. data/docs/Uncommunicative-Name.md +0 -18
  63. data/docs/Uncommunicative-Parameter-Name.md +0 -90
  64. data/docs/Uncommunicative-Variable-Name.md +0 -96
  65. data/docs/Unused-Parameters.md +0 -28
  66. data/docs/Unused-Private-Method.md +0 -101
  67. data/docs/Utility-Function.md +0 -56
  68. data/docs/Versioning-Policy.md +0 -7
  69. data/docs/YAML-Reports.md +0 -93
  70. data/docs/defaults.reek.yml +0 -129
  71. data/docs/templates/default/docstring/html/public_api_marker.erb +0 -3
  72. data/docs/templates/default/docstring/setup.rb +0 -37
  73. data/docs/templates/default/fulldoc/html/css/common.css +0 -1
  74. data/docs/yard_plugin.rb +0 -17
  75. data/features/command_line_interface/basic_usage.feature +0 -15
  76. data/features/command_line_interface/options.feature +0 -123
  77. data/features/command_line_interface/show_progress.feature +0 -33
  78. data/features/command_line_interface/smell_selection.feature +0 -15
  79. data/features/command_line_interface/smells_count.feature +0 -38
  80. data/features/command_line_interface/stdin.feature +0 -65
  81. data/features/configuration_files/accept_setting.feature +0 -87
  82. data/features/configuration_files/directory_specific_directives.feature +0 -274
  83. data/features/configuration_files/exclude_directives.feature +0 -35
  84. data/features/configuration_files/exclude_paths_directives.feature +0 -42
  85. data/features/configuration_files/masking_smells.feature +0 -94
  86. data/features/configuration_files/mix_accept_reject_setting.feature +0 -84
  87. data/features/configuration_files/reject_setting.feature +0 -89
  88. data/features/configuration_files/schema_validation.feature +0 -59
  89. data/features/configuration_files/show_configuration_file.feature +0 -44
  90. data/features/configuration_files/unused_private_method.feature +0 -68
  91. data/features/configuration_loading.feature +0 -91
  92. data/features/configuration_via_source_comments/erroneous_source_comments.feature +0 -68
  93. data/features/configuration_via_source_comments/well_formed_source_comments.feature +0 -116
  94. data/features/locales.feature +0 -32
  95. data/features/programmatic_access.feature +0 -41
  96. data/features/rake_task/rake_task.feature +0 -138
  97. data/features/reports/codeclimate.feature +0 -59
  98. data/features/reports/json.feature +0 -59
  99. data/features/reports/reports.feature +0 -219
  100. data/features/reports/yaml.feature +0 -52
  101. data/features/rspec_matcher.feature +0 -41
  102. data/features/samples.feature +0 -305
  103. data/features/step_definitions/.rubocop.yml +0 -5
  104. data/features/step_definitions/reek_steps.rb +0 -102
  105. data/features/step_definitions/sample_file_steps.rb +0 -63
  106. data/features/support/env.rb +0 -33
  107. data/features/todo_list.feature +0 -108
  108. data/samples/checkstyle.xml +0 -7
  109. data/samples/clean_source/clean.rb +0 -6
  110. data/samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml +0 -29
  111. data/samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml +0 -30
  112. data/samples/configuration/corrupt.reek +0 -1
  113. data/samples/configuration/empty.reek +0 -0
  114. data/samples/configuration/full_configuration.reek +0 -13
  115. data/samples/configuration/full_mask.reek +0 -6
  116. data/samples/configuration/home/home.reek.yml +0 -4
  117. data/samples/configuration/partial_mask.reek +0 -4
  118. data/samples/configuration/regular_configuration/.reek.yml +0 -4
  119. data/samples/configuration/regular_configuration/empty_sub_directory/.gitignore +0 -0
  120. data/samples/configuration/with_excluded_paths.reek +0 -5
  121. data/samples/no_config_file/.keep +0 -0
  122. data/samples/paths.rb +0 -5
  123. data/samples/smelly_source/inline.rb +0 -704
  124. data/samples/smelly_source/optparse.rb +0 -1788
  125. data/samples/smelly_source/redcloth.rb +0 -1130
  126. data/samples/smelly_source/ruby.rb +0 -368
  127. data/samples/smelly_source/smelly.rb +0 -7
  128. data/samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb +0 -5
  129. data/samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb +0 -2
  130. data/samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb +0 -6
  131. data/samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb +0 -6
  132. data/samples/source_with_hidden_directories/.hidden/hidden.rb +0 -1
  133. data/samples/source_with_hidden_directories/not_hidden.rb +0 -1
  134. data/samples/source_with_non_ruby_files/gibberish +0 -1
  135. data/samples/source_with_non_ruby_files/python_source.py +0 -1
  136. data/samples/source_with_non_ruby_files/ruby.rb +0 -6
  137. data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +0 -15
  138. data/spec/quality/documentation_spec.rb +0 -41
  139. data/spec/quality/reek_source_spec.rb +0 -11
  140. data/spec/reek/ast/node_spec.rb +0 -211
  141. data/spec/reek/ast/object_refs_spec.rb +0 -83
  142. data/spec/reek/ast/reference_collector_spec.rb +0 -47
  143. data/spec/reek/ast/sexp_extensions_spec.rb +0 -498
  144. data/spec/reek/cli/application_spec.rb +0 -168
  145. data/spec/reek/cli/command/report_command_spec.rb +0 -44
  146. data/spec/reek/cli/command/todo_list_command_spec.rb +0 -86
  147. data/spec/reek/cli/options_spec.rb +0 -51
  148. data/spec/reek/cli/silencer_spec.rb +0 -28
  149. data/spec/reek/code_comment_spec.rb +0 -184
  150. data/spec/reek/configuration/app_configuration_spec.rb +0 -195
  151. data/spec/reek/configuration/configuration_file_finder_spec.rb +0 -230
  152. data/spec/reek/configuration/default_directive_spec.rb +0 -13
  153. data/spec/reek/configuration/directory_directives_spec.rb +0 -122
  154. data/spec/reek/configuration/excluded_paths_spec.rb +0 -16
  155. data/spec/reek/configuration/rake_task_converter_spec.rb +0 -33
  156. data/spec/reek/configuration/schema_validator_spec.rb +0 -165
  157. data/spec/reek/context/code_context_spec.rb +0 -192
  158. data/spec/reek/context/ghost_context_spec.rb +0 -60
  159. data/spec/reek/context/method_context_spec.rb +0 -72
  160. data/spec/reek/context/module_context_spec.rb +0 -55
  161. data/spec/reek/context/root_context_spec.rb +0 -12
  162. data/spec/reek/context/statement_counter_spec.rb +0 -24
  163. data/spec/reek/context_builder_spec.rb +0 -457
  164. data/spec/reek/detector_repository_spec.rb +0 -22
  165. data/spec/reek/documentation_link_spec.rb +0 -20
  166. data/spec/reek/errors/base_error_spec.rb +0 -13
  167. data/spec/reek/examiner_spec.rb +0 -309
  168. data/spec/reek/logging_error_handler_spec.rb +0 -24
  169. data/spec/reek/rake/task_spec.rb +0 -56
  170. data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +0 -22
  171. data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +0 -126
  172. data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +0 -51
  173. data/spec/reek/report/code_climate/code_climate_report_spec.rb +0 -56
  174. data/spec/reek/report/html_report_spec.rb +0 -19
  175. data/spec/reek/report/json_report_spec.rb +0 -58
  176. data/spec/reek/report/location_formatter_spec.rb +0 -32
  177. data/spec/reek/report/progress_formatter_spec.rb +0 -68
  178. data/spec/reek/report/text_report_spec.rb +0 -89
  179. data/spec/reek/report/xml_report_spec.rb +0 -24
  180. data/spec/reek/report/yaml_report_spec.rb +0 -55
  181. data/spec/reek/report_spec.rb +0 -28
  182. data/spec/reek/smell_configuration_spec.rb +0 -56
  183. data/spec/reek/smell_detectors/attribute_spec.rb +0 -197
  184. data/spec/reek/smell_detectors/base_detector_spec.rb +0 -50
  185. data/spec/reek/smell_detectors/boolean_parameter_spec.rb +0 -93
  186. data/spec/reek/smell_detectors/class_variable_spec.rb +0 -106
  187. data/spec/reek/smell_detectors/control_parameter_spec.rb +0 -300
  188. data/spec/reek/smell_detectors/data_clump_spec.rb +0 -134
  189. data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +0 -211
  190. data/spec/reek/smell_detectors/feature_envy_spec.rb +0 -295
  191. data/spec/reek/smell_detectors/instance_variable_assumption_spec.rb +0 -96
  192. data/spec/reek/smell_detectors/irresponsible_module_spec.rb +0 -226
  193. data/spec/reek/smell_detectors/long_parameter_list_spec.rb +0 -61
  194. data/spec/reek/smell_detectors/long_yield_list_spec.rb +0 -49
  195. data/spec/reek/smell_detectors/manual_dispatch_spec.rb +0 -75
  196. data/spec/reek/smell_detectors/missing_safe_method_spec.rb +0 -68
  197. data/spec/reek/smell_detectors/module_initialize_spec.rb +0 -77
  198. data/spec/reek/smell_detectors/nested_iterators_spec.rb +0 -333
  199. data/spec/reek/smell_detectors/nil_check_spec.rb +0 -100
  200. data/spec/reek/smell_detectors/repeated_conditional_spec.rb +0 -100
  201. data/spec/reek/smell_detectors/subclassed_from_core_class_spec.rb +0 -77
  202. data/spec/reek/smell_detectors/too_many_constants_spec.rb +0 -144
  203. data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +0 -132
  204. data/spec/reek/smell_detectors/too_many_methods_spec.rb +0 -54
  205. data/spec/reek/smell_detectors/too_many_statements_spec.rb +0 -90
  206. data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +0 -78
  207. data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +0 -78
  208. data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +0 -147
  209. data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +0 -201
  210. data/spec/reek/smell_detectors/unused_parameters_spec.rb +0 -114
  211. data/spec/reek/smell_detectors/unused_private_method_spec.rb +0 -205
  212. data/spec/reek/smell_detectors/utility_function_spec.rb +0 -293
  213. data/spec/reek/smell_warning_spec.rb +0 -137
  214. data/spec/reek/source/source_code_spec.rb +0 -79
  215. data/spec/reek/source/source_locator_spec.rb +0 -166
  216. data/spec/reek/spec/should_reek_of_spec.rb +0 -153
  217. data/spec/reek/spec/should_reek_only_of_spec.rb +0 -91
  218. data/spec/reek/spec/should_reek_spec.rb +0 -52
  219. data/spec/reek/spec/smell_matcher_spec.rb +0 -87
  220. data/spec/reek/tree_dresser_spec.rb +0 -46
  221. data/spec/spec_helper.rb +0 -110
  222. data/tasks/configuration.rake +0 -18
  223. data/tasks/console.rake +0 -5
  224. data/tasks/reek.rake +0 -6
  225. data/tasks/rubocop.rake +0 -11
  226. data/tasks/test.rake +0 -32
@@ -1,108 +0,0 @@
1
- Feature: Auto-generate a todo file
2
- Write a Reek configuration as a kind of todo list that will prevent Reek
3
- from reporting smells on the current code. This can then be worked on later on.
4
- The main goal here would be to ease the Reek adoption by allowing developers to
5
- introduce Reek right away (e.g. for CI), exclude the "old" smells from getting reported
6
- and then fix them step by step.
7
-
8
- Scenario: Generate the default configuration file that disables all found smells
9
- Given the smelly file 'smelly.rb'
10
- When I run reek smelly.rb
11
- Then the exit status indicates smells
12
- And it reports:
13
- """
14
- smelly.rb -- 2 warnings:
15
- [4]:UncommunicativeMethodName: Smelly#x has the name 'x'
16
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
17
- """
18
- When I run reek --todo smelly.rb
19
- Then it succeeds
20
- And it reports:
21
- """
22
-
23
- '.reek.yml' generated! You can now use this as a starting point.
24
- """
25
- And a file named ".reek.yml" should exist
26
- And the file ".reek.yml" should contain:
27
- """
28
- ---
29
- detectors:
30
- UncommunicativeMethodName:
31
- exclude:
32
- - Smelly#x
33
- UncommunicativeVariableName:
34
- exclude:
35
- - Smelly#x
36
- """
37
- When I run reek smelly.rb
38
- Then it succeeds
39
-
40
- Scenario: Reacts appropiately when there are no smells
41
- Given the clean file "clean.rb"
42
- When I run reek --todo clean.rb
43
- Then a file named ".reek.yml" should not exist
44
- And it reports:
45
- """
46
-
47
- No smells found - nothing to do, exiting.
48
- """
49
-
50
- Scenario: Don't overwrite existing .reek.yml files
51
- Given the smelly file 'smelly.rb'
52
- And a file named ".reek.yml" with:
53
- """
54
- ---
55
- detectors:
56
- UncommunicativeMethodName:
57
- enabled: false
58
- """
59
- When I run reek smelly.rb
60
- Then it reports:
61
- """
62
- smelly.rb -- 1 warning:
63
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
64
- """
65
- When I run reek --todo smelly.rb
66
- Then it reports:
67
- """
68
-
69
- Existing '.reek.yml' detected - aborting.
70
- """
71
- When I run reek smelly.rb
72
- Then it reports:
73
- """
74
- smelly.rb -- 1 warning:
75
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
76
- """
77
-
78
- Scenario: Ignore existing other configuration files that are passed explicitly
79
- Given the smelly file 'smelly.rb'
80
- And a file named "config.reek" with:
81
- """
82
- ---
83
- detectors:
84
- UncommunicativeMethodName:
85
- enabled: false
86
- """
87
- When I run reek -c config.reek smelly.rb
88
- Then it reports:
89
- """
90
- smelly.rb -- 1 warning:
91
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
92
- """
93
- When I run reek -c config.reek --todo smelly.rb
94
- Then it succeeds
95
- And a file named ".reek.yml" should exist
96
- And the file ".reek.yml" should contain:
97
- """
98
- ---
99
- detectors:
100
- UncommunicativeMethodName:
101
- exclude:
102
- - Smelly#x
103
- UncommunicativeVariableName:
104
- exclude:
105
- - Smelly#x
106
- """
107
- When I run reek smelly.rb
108
- Then it reports nothing
@@ -1,7 +0,0 @@
1
- <?xml version='1.0'?>
2
- <checkstyle>
3
- <file name='samples/smelly_source/smelly.rb'>
4
- <error column='0' line='4' message='has the name &apos;x&apos;' severity='warning' source='UncommunicativeMethodName'/>
5
- <error column='0' line='5' message='has the variable name &apos;y&apos;' severity='warning' source='UncommunicativeVariableName'/>
6
- </file>
7
- </checkstyle>
@@ -1,6 +0,0 @@
1
- # Well documented Clean class.
2
- class Clean
3
- def hello(argument)
4
- say argument
5
- end
6
- end
@@ -1,29 +0,0 @@
1
- ---
2
- detectors:
3
- UnusedPrivateMethod:
4
- exclude:
5
- - "/exclude regexp/"
6
- UncommunicativeMethodName:
7
- reject:
8
- - "reject name"
9
- accept:
10
- - "accept name"
11
- UncommunicativeModuleName:
12
- reject:
13
- - "reject name 1"
14
- - "reject name 2"
15
- accept:
16
- - "accept name 1"
17
- - "accept name 2"
18
- UncommunicativeParameterName:
19
- reject:
20
- - "reject name"
21
- - "/reject regexp/"
22
- accept:
23
- - "accept name"
24
- - "/accept regexp/"
25
- UncommunicativeVariableName:
26
- reject:
27
- - "/^reject regexp$/"
28
- accept:
29
- - "/accept(.*)regexp/"
@@ -1,30 +0,0 @@
1
- ---
2
- directories:
3
- "app/controllers":
4
- UnusedPrivateMethod:
5
- exclude:
6
- - "/exclude regexp/"
7
- UncommunicativeMethodName:
8
- reject:
9
- - "reject name"
10
- accept:
11
- - "accept name"
12
- UncommunicativeModuleName:
13
- reject:
14
- - "reject name 1"
15
- - "reject name 2"
16
- accept:
17
- - "accept name 1"
18
- - "accept name 2"
19
- UncommunicativeParameterName:
20
- reject:
21
- - "reject name"
22
- - "/reject regexp/"
23
- accept:
24
- - "accept name"
25
- - "/accept regexp/"
26
- UncommunicativeVariableName:
27
- reject:
28
- - "/^reject regexp$/"
29
- accept:
30
- - "/accept(.*)regexp/"
@@ -1 +0,0 @@
1
- Not a valid configuration file
File without changes
@@ -1,13 +0,0 @@
1
- ---
2
- detectors:
3
- IrresponsibleModule:
4
- enabled: false
5
-
6
- directories:
7
- "samples/three_clean_files/":
8
- UtilityFunction:
9
- enabled: false
10
-
11
- exclude_paths:
12
- - "samples/two_smelly_files/"
13
- - "samples/source_with_non_ruby_files/"
@@ -1,6 +0,0 @@
1
- ---
2
- detectors:
3
- UncommunicativeMethodName:
4
- enabled: false
5
- UncommunicativeVariableName:
6
- enabled: false
@@ -1,4 +0,0 @@
1
- ---
2
- UncommunicativeVariableName:
3
- accept:
4
- - md5
@@ -1,4 +0,0 @@
1
- ---
2
- detectors:
3
- UncommunicativeMethodName:
4
- enabled: false
@@ -1,4 +0,0 @@
1
- ---
2
- UncommunicativeVariableName:
3
- accept:
4
- - md5
@@ -1,5 +0,0 @@
1
- ---
2
- exclude_paths:
3
- - samples/source_with_exclude_paths/ignore_me/
4
- - samples/source_with_exclude_paths/nested/ignore_me_as_well
5
- - samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb
File without changes
data/samples/paths.rb DELETED
@@ -1,5 +0,0 @@
1
- SAMPLES_DIR = Pathname.new(__dir__).relative_path_from(Pathname.pwd)
2
- CONFIGURATION_DIR = SAMPLES_DIR.join('configuration')
3
- CLEAN_FILE = SAMPLES_DIR.join('clean_source').join('clean.rb')
4
- SMELLY_FILE = SAMPLES_DIR.join('smelly_source').join('smelly.rb')
5
-