reek 6.0.3 → 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 (217) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -1
  3. data/CONTRIBUTING.md +3 -0
  4. data/Dockerfile +1 -1
  5. data/Gemfile +6 -6
  6. data/lib/reek/ast/ast_node_class_map.rb +1 -1
  7. data/lib/reek/report/code_climate/code_climate_formatter.rb +1 -3
  8. data/lib/reek/smell_detectors/base_detector.rb +1 -1
  9. data/lib/reek/smell_warning.rb +1 -1
  10. data/lib/reek/source/source_locator.rb +1 -3
  11. data/lib/reek/version.rb +1 -1
  12. data/reek.gemspec +4 -1
  13. metadata +3 -208
  14. data/docs/API.md +0 -174
  15. data/docs/Attribute.md +0 -39
  16. data/docs/Basic-Smell-Options.md +0 -85
  17. data/docs/Boolean-Parameter.md +0 -54
  18. data/docs/Class-Variable.md +0 -40
  19. data/docs/Code-Smells.md +0 -39
  20. data/docs/Command-Line-Options.md +0 -119
  21. data/docs/Control-Couple.md +0 -26
  22. data/docs/Control-Parameter.md +0 -32
  23. data/docs/Data-Clump.md +0 -46
  24. data/docs/Duplicate-Method-Call.md +0 -264
  25. data/docs/Feature-Envy.md +0 -93
  26. data/docs/How-To-Write-New-Detectors.md +0 -132
  27. data/docs/How-reek-works-internally.md +0 -114
  28. data/docs/Instance-Variable-Assumption.md +0 -163
  29. data/docs/Irresponsible-Module.md +0 -47
  30. data/docs/Large-Class.md +0 -16
  31. data/docs/Long-Parameter-List.md +0 -39
  32. data/docs/Long-Yield-List.md +0 -37
  33. data/docs/Manual-Dispatch.md +0 -30
  34. data/docs/Missing-Safe-Method.md +0 -92
  35. data/docs/Module-Initialize.md +0 -62
  36. data/docs/Nested-Iterators.md +0 -59
  37. data/docs/Nil-Check.md +0 -47
  38. data/docs/RSpec-matchers.md +0 -129
  39. data/docs/Rake-Task.md +0 -66
  40. data/docs/Reek-4-to-Reek-5-migration.md +0 -188
  41. data/docs/Reek-Driven-Development.md +0 -46
  42. data/docs/Repeated-Conditional.md +0 -47
  43. data/docs/Simulated-Polymorphism.md +0 -16
  44. data/docs/Smell-Suppression.md +0 -96
  45. data/docs/Style-Guide.md +0 -19
  46. data/docs/Subclassed-From-Core-Class.md +0 -79
  47. data/docs/Too-Many-Constants.md +0 -37
  48. data/docs/Too-Many-Instance-Variables.md +0 -43
  49. data/docs/Too-Many-Methods.md +0 -56
  50. data/docs/Too-Many-Statements.md +0 -54
  51. data/docs/Uncommunicative-Method-Name.md +0 -94
  52. data/docs/Uncommunicative-Module-Name.md +0 -92
  53. data/docs/Uncommunicative-Name.md +0 -18
  54. data/docs/Uncommunicative-Parameter-Name.md +0 -90
  55. data/docs/Uncommunicative-Variable-Name.md +0 -96
  56. data/docs/Unused-Parameters.md +0 -28
  57. data/docs/Unused-Private-Method.md +0 -101
  58. data/docs/Utility-Function.md +0 -56
  59. data/docs/Versioning-Policy.md +0 -7
  60. data/docs/YAML-Reports.md +0 -93
  61. data/docs/defaults.reek.yml +0 -129
  62. data/docs/templates/default/docstring/html/public_api_marker.erb +0 -3
  63. data/docs/templates/default/docstring/setup.rb +0 -35
  64. data/docs/templates/default/fulldoc/html/css/common.css +0 -1
  65. data/docs/yard_plugin.rb +0 -17
  66. data/features/command_line_interface/basic_usage.feature +0 -15
  67. data/features/command_line_interface/options.feature +0 -123
  68. data/features/command_line_interface/show_progress.feature +0 -33
  69. data/features/command_line_interface/smell_selection.feature +0 -15
  70. data/features/command_line_interface/smells_count.feature +0 -38
  71. data/features/command_line_interface/stdin.feature +0 -65
  72. data/features/configuration_files/accept_setting.feature +0 -87
  73. data/features/configuration_files/directory_specific_directives.feature +0 -274
  74. data/features/configuration_files/exclude_directives.feature +0 -35
  75. data/features/configuration_files/exclude_paths_directives.feature +0 -42
  76. data/features/configuration_files/masking_smells.feature +0 -94
  77. data/features/configuration_files/mix_accept_reject_setting.feature +0 -84
  78. data/features/configuration_files/reject_setting.feature +0 -89
  79. data/features/configuration_files/schema_validation.feature +0 -59
  80. data/features/configuration_files/show_configuration_file.feature +0 -44
  81. data/features/configuration_files/unused_private_method.feature +0 -68
  82. data/features/configuration_loading.feature +0 -91
  83. data/features/configuration_via_source_comments/erroneous_source_comments.feature +0 -68
  84. data/features/configuration_via_source_comments/well_formed_source_comments.feature +0 -116
  85. data/features/locales.feature +0 -32
  86. data/features/programmatic_access.feature +0 -41
  87. data/features/rake_task/rake_task.feature +0 -138
  88. data/features/reports/codeclimate.feature +0 -59
  89. data/features/reports/json.feature +0 -59
  90. data/features/reports/reports.feature +0 -219
  91. data/features/reports/yaml.feature +0 -52
  92. data/features/rspec_matcher.feature +0 -41
  93. data/features/samples.feature +0 -305
  94. data/features/step_definitions/.rubocop.yml +0 -5
  95. data/features/step_definitions/reek_steps.rb +0 -102
  96. data/features/step_definitions/sample_file_steps.rb +0 -63
  97. data/features/support/env.rb +0 -33
  98. data/features/todo_list.feature +0 -108
  99. data/samples/checkstyle.xml +0 -7
  100. data/samples/clean_source/clean.rb +0 -6
  101. data/samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml +0 -29
  102. data/samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml +0 -30
  103. data/samples/configuration/corrupt.reek +0 -1
  104. data/samples/configuration/empty.reek +0 -0
  105. data/samples/configuration/full_configuration.reek +0 -13
  106. data/samples/configuration/full_mask.reek +0 -6
  107. data/samples/configuration/home/home.reek.yml +0 -4
  108. data/samples/configuration/partial_mask.reek +0 -4
  109. data/samples/configuration/regular_configuration/.reek.yml +0 -4
  110. data/samples/configuration/regular_configuration/empty_sub_directory/.gitignore +0 -0
  111. data/samples/configuration/with_excluded_paths.reek +0 -5
  112. data/samples/no_config_file/.keep +0 -0
  113. data/samples/paths.rb +0 -5
  114. data/samples/smelly_source/inline.rb +0 -704
  115. data/samples/smelly_source/optparse.rb +0 -1788
  116. data/samples/smelly_source/redcloth.rb +0 -1130
  117. data/samples/smelly_source/ruby.rb +0 -368
  118. data/samples/smelly_source/smelly.rb +0 -7
  119. data/samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb +0 -5
  120. data/samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb +0 -2
  121. data/samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb +0 -6
  122. data/samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb +0 -6
  123. data/samples/source_with_hidden_directories/.hidden/hidden.rb +0 -1
  124. data/samples/source_with_hidden_directories/not_hidden.rb +0 -1
  125. data/samples/source_with_non_ruby_files/gibberish +0 -1
  126. data/samples/source_with_non_ruby_files/python_source.py +0 -1
  127. data/samples/source_with_non_ruby_files/ruby.rb +0 -6
  128. data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +0 -15
  129. data/spec/quality/documentation_spec.rb +0 -41
  130. data/spec/quality/reek_source_spec.rb +0 -11
  131. data/spec/reek/ast/node_spec.rb +0 -211
  132. data/spec/reek/ast/object_refs_spec.rb +0 -83
  133. data/spec/reek/ast/reference_collector_spec.rb +0 -47
  134. data/spec/reek/ast/sexp_extensions_spec.rb +0 -498
  135. data/spec/reek/cli/application_spec.rb +0 -168
  136. data/spec/reek/cli/command/report_command_spec.rb +0 -44
  137. data/spec/reek/cli/command/todo_list_command_spec.rb +0 -86
  138. data/spec/reek/cli/options_spec.rb +0 -51
  139. data/spec/reek/cli/silencer_spec.rb +0 -28
  140. data/spec/reek/code_comment_spec.rb +0 -184
  141. data/spec/reek/configuration/app_configuration_spec.rb +0 -195
  142. data/spec/reek/configuration/configuration_file_finder_spec.rb +0 -230
  143. data/spec/reek/configuration/default_directive_spec.rb +0 -13
  144. data/spec/reek/configuration/directory_directives_spec.rb +0 -122
  145. data/spec/reek/configuration/excluded_paths_spec.rb +0 -25
  146. data/spec/reek/configuration/rake_task_converter_spec.rb +0 -33
  147. data/spec/reek/configuration/schema_validator_spec.rb +0 -165
  148. data/spec/reek/context/code_context_spec.rb +0 -192
  149. data/spec/reek/context/ghost_context_spec.rb +0 -60
  150. data/spec/reek/context/method_context_spec.rb +0 -72
  151. data/spec/reek/context/module_context_spec.rb +0 -55
  152. data/spec/reek/context/root_context_spec.rb +0 -12
  153. data/spec/reek/context/statement_counter_spec.rb +0 -24
  154. data/spec/reek/context_builder_spec.rb +0 -457
  155. data/spec/reek/detector_repository_spec.rb +0 -22
  156. data/spec/reek/documentation_link_spec.rb +0 -20
  157. data/spec/reek/errors/base_error_spec.rb +0 -13
  158. data/spec/reek/examiner_spec.rb +0 -309
  159. data/spec/reek/logging_error_handler_spec.rb +0 -24
  160. data/spec/reek/rake/task_spec.rb +0 -56
  161. data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +0 -22
  162. data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +0 -126
  163. data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +0 -51
  164. data/spec/reek/report/code_climate/code_climate_report_spec.rb +0 -56
  165. data/spec/reek/report/html_report_spec.rb +0 -19
  166. data/spec/reek/report/json_report_spec.rb +0 -58
  167. data/spec/reek/report/location_formatter_spec.rb +0 -32
  168. data/spec/reek/report/progress_formatter_spec.rb +0 -68
  169. data/spec/reek/report/text_report_spec.rb +0 -89
  170. data/spec/reek/report/xml_report_spec.rb +0 -24
  171. data/spec/reek/report/yaml_report_spec.rb +0 -55
  172. data/spec/reek/report_spec.rb +0 -28
  173. data/spec/reek/smell_configuration_spec.rb +0 -56
  174. data/spec/reek/smell_detectors/attribute_spec.rb +0 -197
  175. data/spec/reek/smell_detectors/base_detector_spec.rb +0 -50
  176. data/spec/reek/smell_detectors/boolean_parameter_spec.rb +0 -93
  177. data/spec/reek/smell_detectors/class_variable_spec.rb +0 -106
  178. data/spec/reek/smell_detectors/control_parameter_spec.rb +0 -300
  179. data/spec/reek/smell_detectors/data_clump_spec.rb +0 -134
  180. data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +0 -211
  181. data/spec/reek/smell_detectors/feature_envy_spec.rb +0 -295
  182. data/spec/reek/smell_detectors/instance_variable_assumption_spec.rb +0 -96
  183. data/spec/reek/smell_detectors/irresponsible_module_spec.rb +0 -226
  184. data/spec/reek/smell_detectors/long_parameter_list_spec.rb +0 -61
  185. data/spec/reek/smell_detectors/long_yield_list_spec.rb +0 -49
  186. data/spec/reek/smell_detectors/manual_dispatch_spec.rb +0 -75
  187. data/spec/reek/smell_detectors/missing_safe_method_spec.rb +0 -68
  188. data/spec/reek/smell_detectors/module_initialize_spec.rb +0 -77
  189. data/spec/reek/smell_detectors/nested_iterators_spec.rb +0 -333
  190. data/spec/reek/smell_detectors/nil_check_spec.rb +0 -100
  191. data/spec/reek/smell_detectors/repeated_conditional_spec.rb +0 -100
  192. data/spec/reek/smell_detectors/subclassed_from_core_class_spec.rb +0 -77
  193. data/spec/reek/smell_detectors/too_many_constants_spec.rb +0 -144
  194. data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +0 -132
  195. data/spec/reek/smell_detectors/too_many_methods_spec.rb +0 -54
  196. data/spec/reek/smell_detectors/too_many_statements_spec.rb +0 -90
  197. data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +0 -78
  198. data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +0 -78
  199. data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +0 -147
  200. data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +0 -201
  201. data/spec/reek/smell_detectors/unused_parameters_spec.rb +0 -114
  202. data/spec/reek/smell_detectors/unused_private_method_spec.rb +0 -205
  203. data/spec/reek/smell_detectors/utility_function_spec.rb +0 -309
  204. data/spec/reek/smell_warning_spec.rb +0 -137
  205. data/spec/reek/source/source_code_spec.rb +0 -79
  206. data/spec/reek/source/source_locator_spec.rb +0 -166
  207. data/spec/reek/spec/should_reek_of_spec.rb +0 -153
  208. data/spec/reek/spec/should_reek_only_of_spec.rb +0 -91
  209. data/spec/reek/spec/should_reek_spec.rb +0 -52
  210. data/spec/reek/spec/smell_matcher_spec.rb +0 -87
  211. data/spec/reek/tree_dresser_spec.rb +0 -46
  212. data/spec/spec_helper.rb +0 -110
  213. data/tasks/configuration.rake +0 -18
  214. data/tasks/console.rake +0 -5
  215. data/tasks/reek.rake +0 -6
  216. data/tasks/rubocop.rake +0 -11
  217. data/tasks/test.rake +0 -32
@@ -1,116 +0,0 @@
1
- Feature: Well formed source comments are handled properly
2
- As a developer I want to be able to have a fine-grained control
3
- over how Reek handles smells via source code comments.
4
-
5
- Scenario: Disable smell detector implicitly
6
- Given a file named "disable_detector_implicitly.rb" with:
7
- """
8
- # Test class
9
- # :reek:TooManyInstanceVariables
10
- class Alfa
11
- def initialize
12
- @charlie = @delta = @echo = @foxtrot = @hotel = 1
13
- end
14
- end
15
- """
16
- When I run reek disable_detector_implicitly.rb
17
- Then it succeeds
18
- And it reports nothing
19
-
20
- Scenario: Disable smell detector explicitly
21
- Given a file named "disable_detector_explicitly.rb" with:
22
- """
23
- # Test class
24
- # :reek:TooManyInstanceVariables { enabled: false }
25
- class Alfa
26
- def initialize
27
- @charlie = @delta = @echo = @foxtrot = @hotel = 1
28
- end
29
- end
30
- """
31
- When I run reek disable_detector_explicitly.rb
32
- Then it succeeds
33
- And it reports nothing
34
-
35
- Scenario: Enable smell detector explicitly
36
- Given a file named "enable_detector_explicitly.rb" with:
37
- """
38
- # Test class
39
- # :reek:TooManyInstanceVariables { enabled: true }
40
- class Alfa
41
- def initialize
42
- @charlie = @delta = @echo = @foxtrot = @hotel = 1
43
- end
44
- end
45
- """
46
- When I run reek enable_detector_explicitly.rb
47
- Then the exit status indicates smells
48
- And it reports:
49
- """
50
- enable_detector_explicitly.rb -- 1 warning:
51
- [3]:TooManyInstanceVariables: Alfa has at least 5 instance variables
52
- """
53
-
54
- Scenario: Configure smell detector with the basic exclude option as string
55
- Given a file named "configure_exclude_option.rb" with:
56
- """
57
- # Test class
58
- # :reek:TooManyInstanceVariables { exclude: '@hotel' }
59
- class Alfa
60
- def initialize
61
- @charlie = @delta = @echo = @foxtrot = @hotel = 1
62
- end
63
- end
64
- """
65
- When I run reek configure_exclude_option.rb
66
- Then it succeeds
67
- And it reports nothing
68
-
69
- Scenario: Configure smell detector with the basic exclude option as regex
70
- Given a file named "configure_exclude_option.rb" with:
71
- """
72
- # Test class
73
- # :reek:TooManyInstanceVariables { exclude: /hotel/ }
74
- class Alfa
75
- def initialize
76
- @charlie = @delta = @echo = @foxtrot = @hotel = 1
77
- end
78
- end
79
- """
80
- When I run reek configure_exclude_option.rb
81
- Then it succeeds
82
- And it reports nothing
83
-
84
- Scenario: Configure smell detector with a detector specific option that silences it
85
- Given a file named "configure_detector_specific_option.rb" with:
86
- """
87
- # Test class
88
- # :reek:TooManyInstanceVariables { max_instance_variables: 5 }
89
- class Alfa
90
- def initialize
91
- @charlie = @delta = @echo = @foxtrot = @hotel = 1
92
- end
93
- end
94
- """
95
- When I run reek configure_detector_specific_option.rb
96
- Then it succeeds
97
- And it reports nothing
98
-
99
- Scenario: Configure smell detector with a detector specific option that makes it report again
100
- Given a file named "configure_detector_specific_option.rb" with:
101
- """
102
- # Test class
103
- # :reek:TooManyInstanceVariables { max_instance_variables: 2 }
104
- class Alfa
105
- def initialize
106
- @charlie = @delta = @echo = 1
107
- end
108
- end
109
- """
110
- When I run reek configure_detector_specific_option.rb
111
- Then the exit status indicates smells
112
- And it reports:
113
- """
114
- configure_detector_specific_option.rb -- 1 warning:
115
- [3]:TooManyInstanceVariables: Alfa has at least 3 instance variables
116
- """
@@ -1,32 +0,0 @@
1
- Feature: Handling different locales
2
- In order to work in a variety of environments
3
- As a developer
4
- I want Reek to work properly in any locale
5
-
6
- Scenario: Running Reek in an UTF-8 locale
7
- Given I set the environment variable "LANG" to "en_US.utf8"
8
- And a file "konnichiwa.rb" with:
9
- """
10
- puts 'こんにちは世界'
11
- """
12
- When I run reek -V konnichiwa.rb
13
- Then it succeeds
14
- And it reports no errors
15
- And it reports:
16
- """
17
- konnichiwa.rb -- 0 warnings
18
- """
19
-
20
- Scenario: Running Reek in the POSIX locale
21
- Given I set the environment variable "LANG" to "POSIX"
22
- And a file "konnichiwa.rb" with:
23
- """
24
- puts 'こんにちは世界'
25
- """
26
- When I run reek -V konnichiwa.rb
27
- Then it succeeds
28
- And it reports no errors
29
- And it reports:
30
- """
31
- konnichiwa.rb -- 0 warnings
32
- """
@@ -1,41 +0,0 @@
1
- Feature: Using Reek programmatically
2
- In order to use Reek from inside my program
3
- As a developer
4
- I want to be able to use its classes
5
-
6
- Scenario: Accessing smells found by an examiner
7
- Given the smelly file 'smelly.rb'
8
- And a file named "examine.rb" with:
9
- """
10
- require 'reek'
11
- examiner = Reek::Examiner.new(File.new('smelly.rb'))
12
- examiner.smells.each do |smell|
13
- puts smell.message
14
- end
15
- """
16
- When I run `ruby examine.rb`
17
- Then it reports no errors
18
- And it reports:
19
- """
20
- has the name 'x'
21
- has the variable name 'y'
22
- """
23
-
24
- Scenario: Using Reek's built-in report classes
25
- Given the smelly file 'smelly.rb'
26
- And a file named "examine.rb" with:
27
- """
28
- require 'reek'
29
- examiner = Reek::Examiner.new(File.new('smelly.rb'))
30
- report = Reek::Report::TextReport.new
31
- report.add_examiner examiner
32
- report.show
33
- """
34
- When I run `ruby examine.rb`
35
- Then it reports no errors
36
- And it reports:
37
- """
38
- smelly.rb -- 2 warnings:
39
- UncommunicativeMethodName: Smelly#x has the name 'x'
40
- UncommunicativeVariableName: Smelly#x has the variable name 'y'
41
- """
@@ -1,138 +0,0 @@
1
- Feature: Reek can be driven through its Task
2
- Reek provides an easy way to integrate its use into Rakefiles,
3
- via the Task class. These scenarios test its various options.
4
-
5
- Scenario: source_files points at the desired files
6
- Given the smelly file 'smelly.rb'
7
- And a file "Rakefile" with:
8
- """
9
- require 'reek/rake/task'
10
-
11
- Reek::Rake::Task.new do |t|
12
- t.source_files = 'smelly.rb'
13
- t.reek_opts = '--no-color --no-documentation'
14
- end
15
- """
16
- When I run `rake reek`
17
- Then the exit status indicates an error
18
- And it reports:
19
- """
20
- smelly.rb -- 2 warnings:
21
- [4]:UncommunicativeMethodName: Smelly#x has the name 'x'
22
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
23
- """
24
-
25
- Scenario: source_files using a FileList instead of a String
26
- Given the smelly file 'smelly.rb'
27
- And a file "Rakefile" with:
28
- """
29
- require 'reek/rake/task'
30
-
31
- Reek::Rake::Task.new do |t|
32
- t.source_files = FileList['smelly.*']
33
- t.reek_opts = '--no-color --no-documentation'
34
- end
35
- """
36
- When I run `rake reek`
37
- Then the exit status indicates an error
38
- And it reports:
39
- """
40
- smelly.rb -- 2 warnings:
41
- [4]:UncommunicativeMethodName: Smelly#x has the name 'x'
42
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
43
- """
44
-
45
- Scenario: name changes the task name
46
- Given the smelly file 'smelly.rb'
47
- And a file "Rakefile" with:
48
- """
49
- require 'reek/rake/task'
50
-
51
- Reek::Rake::Task.new('silky') do |t|
52
- t.source_files = 'smelly.rb'
53
- t.reek_opts = '--no-color --no-documentation'
54
- end
55
- """
56
- When I run `rake silky`
57
- Then the exit status indicates an error
58
- And it reports:
59
- """
60
- smelly.rb -- 2 warnings:
61
- [4]:UncommunicativeMethodName: Smelly#x has the name 'x'
62
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
63
- """
64
-
65
- Scenario: verbose prints the reek command
66
- Given the smelly file 'smelly.rb'
67
- And a file "Rakefile" with:
68
- """
69
- require 'reek/rake/task'
70
-
71
- Reek::Rake::Task.new do |t|
72
- t.source_files = 'smelly.rb'
73
- t.verbose = true
74
- end
75
- """
76
- When I run `rake reek`
77
- Then the exit status indicates an error
78
- And stdout includes "Running 'reek' rake command"
79
-
80
- Scenario: fail_on_error can hide the error status
81
- Given the smelly file 'smelly.rb'
82
- And a file "Rakefile" with:
83
- """
84
- require 'reek/rake/task'
85
-
86
- Reek::Rake::Task.new do |t|
87
- t.fail_on_error = false
88
- t.source_files = 'smelly.rb'
89
- t.reek_opts = '--no-color --no-documentation'
90
- end
91
- """
92
- When I run `rake reek`
93
- Then it reports no errors
94
- And it succeeds
95
- And it reports:
96
- """
97
- smelly.rb -- 2 warnings:
98
- [4]:UncommunicativeMethodName: Smelly#x has the name 'x'
99
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
100
- """
101
-
102
- Scenario: can be configured with config_file
103
- Given the smelly file 'smelly.rb'
104
- And a configuration file 'full_mask.reek'
105
- And a file "Rakefile" with:
106
- """
107
- require 'reek/rake/task'
108
-
109
- Reek::Rake::Task.new do |t|
110
- t.config_file = 'full_mask.reek'
111
- t.source_files = 'smelly.rb'
112
- end
113
- """
114
- When I run `rake reek`
115
- Then it succeeds
116
- And it reports nothing
117
-
118
- Scenario: REEK_SRC overrides the files to check
119
- Given the smelly file 'smelly.rb'
120
- And the clean file "clean.rb"
121
- And a file "Rakefile" with:
122
- """
123
- require 'reek/rake/task'
124
-
125
- Reek::Rake::Task.new do |t|
126
- t.source_files = 'clean.rb'
127
- t.reek_opts = '--no-color --no-documentation'
128
- end
129
- """
130
- When I set the environment variable "REEK_SRC" to "smelly.rb"
131
- And I run `rake reek`
132
- Then the exit status indicates an error
133
- And it reports:
134
- """
135
- smelly.rb -- 2 warnings:
136
- [4]:UncommunicativeMethodName: Smelly#x has the name 'x'
137
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
138
- """
@@ -1,59 +0,0 @@
1
- Feature: Report smells using Code Climate format
2
- In order to run as an Engine on Code Climate, output format following their
3
- spec.
4
-
5
- Scenario: output is empty when there are no smells
6
- Given a directory called 'clean' containing two clean files
7
- When I run the code climate reek runner
8
- Then it succeeds
9
- And it reports this Code Climate output:
10
- """
11
- """
12
-
13
- Scenario: Indicate smells and print them as JSON when using files
14
- Given the smelly file 'smelly.rb'
15
- When I run the code climate reek runner
16
- Then it reports this Code Climate output:
17
- """
18
- {
19
- "type": "issue",
20
- "check_name": "UncommunicativeMethodName",
21
- "description": "Smelly#x has the name 'x'",
22
- "categories": [
23
- "Complexity"
24
- ],
25
- "location": {
26
- "path": "smelly.rb",
27
- "lines": {
28
- "begin": 4,
29
- "end": 4
30
- }
31
- },
32
- "remediation_points": 150000,
33
- "content": {
34
- "body": "An `Uncommunicative Method Name` is a method name that doesn't communicate its intent well enough.\n\nPoor names make it hard for the reader to build a mental picture of what's going on in the code. They can also be mis-interpreted; and they hurt the flow of reading, because the reader must slow down to interpret the names.\n"
35
- },
36
- "fingerprint": "2b41a3a4bb7de31ac4f5944bf68b7f5f"
37
- }
38
- NULL_BYTE_CHARACTER
39
- {
40
- "type": "issue",
41
- "check_name": "UncommunicativeVariableName",
42
- "description": "Smelly#x has the variable name 'y'",
43
- "categories": [
44
- "Complexity"
45
- ],
46
- "location": {
47
- "path": "smelly.rb",
48
- "lines": {
49
- "begin": 5,
50
- "end": 5
51
- }
52
- },
53
- "remediation_points": 150000,
54
- "content": {
55
- "body": "An `Uncommunicative Variable Name` is a variable name that doesn't communicate its intent well enough.\n\nPoor names make it hard for the reader to build a mental picture of what's going on in the code. They can also be mis-interpreted; and they hurt the flow of reading, because the reader must slow down to interpret the names.\n"
56
- },
57
- "fingerprint": "72f0dc8f8da5f9d7b8b29318636e5609"
58
- }
59
- """
@@ -1,59 +0,0 @@
1
- Feature: Report smells using simple JSON layout
2
- In order to parse Reek's output simply and consistently, simply
3
- output a list of smells in JSON.
4
-
5
- Scenario: output is empty when there are no smells
6
- Given a directory called 'clean' containing two clean files
7
- When I run reek --format json clean
8
- Then it succeeds
9
- And it reports this JSON:
10
- """
11
- []
12
- """
13
-
14
- Scenario: Indicate smells and print them as JSON when using files
15
- Given the smelly file 'smelly.rb'
16
- When I run reek --format json smelly.rb
17
- Then the exit status indicates smells
18
- And it reports this JSON:
19
- """
20
- [
21
- {
22
- "smell_type": "UncommunicativeMethodName",
23
- "source": "smelly.rb",
24
- "context": "Smelly#x",
25
- "lines": [ 4 ],
26
- "message": "has the name 'x'",
27
- "documentation_link": "https://github.com/troessner/reek/blob/v6.0.3/docs/Uncommunicative-Method-Name.md",
28
- "name": "x"
29
- },
30
- {
31
- "smell_type": "UncommunicativeVariableName",
32
- "source": "smelly.rb",
33
- "context": "Smelly#x",
34
- "lines": [ 5 ],
35
- "message": "has the variable name 'y'",
36
- "documentation_link": "https://github.com/troessner/reek/blob/v6.0.3/docs/Uncommunicative-Variable-Name.md",
37
- "name": "y"
38
- }
39
- ]
40
- """
41
-
42
- Scenario: Indicate smells and print them as JSON when using STDIN
43
- When I pass "class Turn; end" to reek --format json
44
- Then the exit status indicates smells
45
- And it reports this JSON:
46
- """
47
- [
48
- {
49
- "smell_type": "IrresponsibleModule",
50
- "source": "STDIN",
51
- "context": "Turn",
52
- "lines": [
53
- 1
54
- ],
55
- "message": "has no descriptive comment",
56
- "documentation_link": "https://github.com/troessner/reek/blob/v6.0.3/docs/Irresponsible-Module.md"
57
- }
58
- ]
59
- """