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,96 +0,0 @@
1
- # Uncommunicative Variable Name
2
-
3
- ## Introduction
4
-
5
- An _Uncommunicative Variable Name_ is a variable name that doesn't communicate
6
- its intent well enough. This code smell is a case of
7
- [Uncommunicative Name](Uncommunicative-Name.md).
8
-
9
- ## Current Support in Reek
10
-
11
- _Uncommunicative Variable Name_ checks for:
12
-
13
- * single-character names
14
- * any name ending with a number
15
- * camelCaseVariableNames
16
-
17
- ## Configuration
18
-
19
- Reek's _Uncommunicative Variable Name_ detector supports the
20
- [Basic Smell Options](Basic-Smell-Options.md), plus:
21
-
22
- | Option | Value | Effect |
23
- | ---------------|-------------|---------|
24
- | `reject` | array of strings | The set of names that Reek uses to check for bad names. Defaults to single-letter names, names ending with a number or names containing upper case letters. |
25
- | `accept` | array of strings | Names that will be accepted (not reported) even if they match one of the `reject` expressions. Defaults to `_`.|
26
-
27
- An example configuration could look like this:
28
-
29
- ```Yaml
30
- ---
31
- UncommunicativeVariableName:
32
- accept:
33
- - x
34
- - var1
35
- reject:
36
- - helper
37
- - foobar
38
- ```
39
-
40
- Reek will convert whatever you give it as a string to the corresponding regex, so "foobar" from above will be converted to /foobar/ internally.
41
-
42
- Applying a configuration to a source file like this:
43
-
44
- ```Ruby
45
- def omg
46
- x = 5 # Should not be reported
47
- var1 = true # Should not be reported
48
- helper = 42 # Should be reported
49
- foobar = false # Should be reported
50
- end
51
- ```
52
-
53
- Reek would report:
54
-
55
- ```
56
- smelly.rb -- 2 warnings:
57
- [5]:UncommunicativeVariableName: omg has the variable name 'foobar' [https://github.com/troessner/reek/blob/master/docs/Uncommunicative-Variable-Name.md]
58
- [4]:UncommunicativeVariableName: omg has the variable name 'helper' [https://github.com/troessner/reek/blob/master/docs/Uncommunicative-Variable-Name.md]
59
- ```
60
-
61
- ## Advanced configuration
62
-
63
- Sometimes just strings are not enough for configuration. E.g. consider this code sample:
64
-
65
- ```Ruby
66
- def omg
67
- foo = 42
68
- foobar = 4242
69
- end
70
- ```
71
-
72
- and now imagine that you want to reject the name "foo" but not "foobar". This wouldn't be possible with just using strings.
73
- For this reason Reek has a special syntax that allows you to use regexes by using a forward slash at the beginning and the end of the string.
74
- Everything within the forward slashes will be loaded as a regex.
75
-
76
- A possible configuration that allows "foobar" but rejects "foo" could look like this:
77
-
78
- ```Yaml
79
- ---
80
- UncommunicativeVariableName:
81
- reject:
82
- - "/^foo$/"
83
- ```
84
-
85
- ## Reek 4
86
-
87
- In Reek 4 you could also pass regexes to `accept` or `reject`, meaning this was perfectly valid as well:
88
-
89
- ```yaml
90
- UncommunicativeVariableName:
91
- accept:
92
- - !ruby/regexp /write/
93
- ```
94
-
95
- Support for this has been scrapped with Reek 5 to make the Reek configuration more yaml standard compliant.
96
- You can still pass in regexes, you just have to wrap them into a string. Please see "Advanced configuration" above.
@@ -1,28 +0,0 @@
1
- ## Introduction
2
-
3
- _Unused Parameter_ refers to methods with parameters that are unused in scope of the method.
4
-
5
- Having unused parameters in a method is code smell because leaving dead code in
6
- a method can never improve the method and it makes the code confusing to read.
7
-
8
- ## Example
9
-
10
- Given:
11
-
12
- ```Ruby
13
- class Klass
14
- def unused_parameters(x,y,z)
15
- puts x,y # but not z
16
- end
17
- end
18
- ```
19
-
20
- Reek would emit the following warning:
21
-
22
- ```
23
- [2]:UnusedParameters: Klass#unused_parameters has unused parameter 'z'
24
- ```
25
-
26
- ## Configuration
27
-
28
- _Unused Parameter_ offers the [Basic Smell Options](Basic-Smell-Options.md).
@@ -1,101 +0,0 @@
1
- ## Introduction
2
-
3
- Classes should use their private methods. Otherwise this is dead
4
- code which is confusing and bad for maintenance.
5
-
6
- The _Unused Private Method_ detector reports unused private instance
7
- methods and instance methods only - class methods are ignored.
8
-
9
- ## Example
10
-
11
- Given:
12
-
13
- ```Ruby
14
- class Car
15
- private
16
- def drive; end
17
- def start; end
18
- end
19
- ```
20
-
21
- Reek would emit the following warning:
22
-
23
- ```
24
- 2 warnings:
25
- [3]:Car has the unused private instance method `drive` (UnusedPrivateMethod)
26
- [4]:Car has the unused private instance method `start` (UnusedPrivateMethod)
27
- ```
28
-
29
- ## Configuration
30
-
31
- _Unused Private Method_ offers the [Basic Smell Options](Basic-Smell-Options.md).
32
-
33
- Private methods that are called via dynamic dispatch
34
- will trigger a false alarm since detecting something like this is far out of
35
- scope for Reek. In this case you can disable this detector via the `exclude`
36
- configuration option (which is part of the [Basic Smell Options](Basic-Smell-Options.md))
37
- for instance like this (an example from Reek's own codebase):
38
-
39
- ```Ruby
40
- # :reek:UnusedPrivateMethod { exclude: [ process_ ] }
41
- class ContextBuilder
42
- def process_begin
43
- # ....
44
- end
45
- end
46
- ```
47
-
48
- Note that disabling this detector via comment works on a class scope, not
49
- a method scope (like you can see above).
50
-
51
- Another simple example would be:
52
-
53
- ```Ruby
54
- class Alfa
55
- private
56
- def bravo
57
- end
58
- end
59
- ```
60
-
61
- This would report:
62
-
63
- >>
64
- ruby.rb -- 1 warning:
65
- [3]:UnusedPrivateMethod: Alfa has the unused private instance method 'bravo'
66
-
67
- If you want to suppress this warning you can do this via source comment like this:
68
-
69
- ```Ruby
70
- # :reek:UnusedPrivateMethod: { exclude: bravo }
71
- class Alfa
72
- private
73
- def bravo
74
- end
75
- end
76
- ```
77
-
78
- ## Known limitations
79
-
80
- * Method calls via dynamic dispatch (e.g. via `send`) is something Reek (or any other
81
- static tool for that matter) cannot detect.
82
- * Method calls via callback like [Rails filters](http://guides.rubyonrails.org/action_controller_overview.html#filters)
83
- will trigger this as well, e.g.:
84
-
85
- ```Ruby
86
- class BankController < ActionController::Base
87
- before_action :audit
88
-
89
- private
90
- def audit
91
- # ....
92
- end
93
- end
94
- ```
95
- * Reek works on a per-file base. This means that using something like the [template pattern](https://en.wikipedia.org/wiki/Template_method_pattern)
96
- with private methods will trigger this detector.
97
- We do believe though that using private methods to fill out a template in a
98
- superclass is not a good idea in general so this probably isn't really a problem
99
- but still worth mentioning it.
100
-
101
-
@@ -1,56 +0,0 @@
1
- # Utility Function
2
-
3
- ## Introduction
4
-
5
- A _Utility Function_ is any instance method that has no dependency on the state of the instance.
6
-
7
- _Utility Function_ is heavily related to _[Feature Envy](Feature-Envy.md)_, please check out the explanation there why _Utility Function_ is something you should care about.
8
-
9
- ## Example
10
-
11
- Given
12
-
13
- ```Ruby
14
- class UtilityFunction
15
- def showcase(argument)
16
- argument.to_s + argument.to_i
17
- end
18
- end
19
- ```
20
-
21
- Reek would report:
22
-
23
- ```
24
- test.rb -- 2 warnings:
25
- [2]:UtilityFunction#showcase doesn't depend on instance state (UtilityFunction)
26
- ```
27
-
28
- ## Current Support in Reek
29
-
30
- _Utility Function_ will warn about any method that:
31
-
32
- * is non-empty
33
- * does not override an inherited method
34
- * calls at least one method on another object
35
- * doesn't use any of self's instance variables
36
- * doesn't use any of self's methods
37
-
38
- ## Differences to _Feature Envy_
39
-
40
- _[Feature Envy](Feature-Envy.md)_ is only triggered if there are some references to self and _Utility Function_ is triggered if there are no references to self.
41
-
42
- ## Configuration
43
-
44
- Reek's _Utility Function_ detector supports the [Basic Smell Options](Basic-Smell-Options.md), plus:
45
-
46
- | Option | Value | Effect |
47
- | ----------------------|-------------|---------|
48
- | `public_methods_only` | Boolean | Disable this smell detector for non-public methods (which means "private" and "protected") |
49
-
50
- A sample configuration file would look like this:
51
-
52
- ```Yaml
53
- ---
54
- UtilityFunction:
55
- public_methods_only: true
56
- ```
@@ -1,7 +0,0 @@
1
- # Versioning Policy
2
-
3
- * CLI interface: Adding options is a non-breaking change, and would warrant an update of the minor version. Removing options is a breaking change and requires a major version update (we did this going to Reek 2). Adding a report format probably also warrents a minor version upgrade.
4
- * API: We haven't really defined a 'public' API for using Reek programmatically, and we've only just started testing it. So, this is basically a blank slate at the moment. We will work on this as a part of the Reek 3 release.
5
- * List of detected smells: Adding a smell warrants a minor release, removing a smell is a breaking change. This makes sense if you consider that the CLI allows running a single smell detector.
6
- * Consistency of detected smells: This is very hard to guarantee. If we fix a bug in one of the detectors, some fragrant code may become smelly, or vice versa. Right now we don't bother with this.
7
- * Smell configuration: The detectors are quite tolerant regarding configuration options that they don't recognize, so we regard any change here as only requiring a minor release.
data/docs/YAML-Reports.md DELETED
@@ -1,93 +0,0 @@
1
- # YAML Reports
2
-
3
- ## Introduction
4
-
5
- Reek's `--yaml` option writes on $stdout a YAML dump of the smells found. Each reported smell has a number of standard fields and a number of fields that are specific to the smell's type. The common fields are as follows:
6
-
7
- | Field | Type | Value |
8
- | ---------------|-------------|---------|
9
- | source | string | The name of the source file containing the smell, or `$stdin` |
10
- | lines | array | The source file line number(s) that contribute to this smell |
11
- | context | string | The name of the class, module or method containing the smell |
12
- | class | string | The class to which this smell belongs |
13
- | subclass | string | This smell's subclass within the above class |
14
- | message | string | The message that would have been printed in a standard Reek report |
15
- | is_active | boolean | `false` if the smell is masked by a config file; `true` otherwise |
16
-
17
- All of these fields are grouped into hashes `location`, `smell` and `status` (see the examples below).
18
-
19
- ## Examples
20
-
21
- Duplication:
22
-
23
- <pre>
24
- - !ruby/object:Reek::SmellWarning
25
- location:
26
- source: spec/samples/masked/dirty.rb
27
- lines:
28
- - 5
29
- - 7
30
- context: Dirty#a
31
- smell:
32
- class: Duplication
33
- subclass: DuplicateMethodCall
34
- occurrences: 2
35
- call: puts(@s.title)
36
- message: calls puts(@s.title) twice
37
- status:
38
- is_active: true
39
- </pre>
40
-
41
- [Nested Iterators](Nested-Iterators.md):
42
-
43
- <pre>
44
- - !ruby/object:Reek::SmellWarning
45
- location:
46
- source: spec/samples/masked/dirty.rb
47
- lines:
48
- - 5
49
- context: Dirty#a
50
- smell:
51
- class: NestedIterators
52
- subclass: ""
53
- depth: 2
54
- message: contains iterators nested 2 deep
55
- status:
56
- is_active: true
57
- </pre>
58
-
59
- [Uncommunicative Method Name](Uncommunicative-Method-Name.md):
60
-
61
- <pre>
62
- - !ruby/object:Reek::SmellWarning
63
- location:
64
- source: spec/samples/masked/dirty.rb
65
- lines:
66
- - 3
67
- context: Dirty#a
68
- smell:
69
- class: UncommunicativeName
70
- subclass: UncommunicativeMethodName
71
- method_name: a
72
- message: has the name 'a'
73
- status:
74
- is_active: false
75
- </pre>
76
-
77
- [Uncommunicative Variable Name](Uncommunicative-Variable-Name.md):
78
-
79
- <pre>
80
- - !ruby/object:Reek::SmellWarning
81
- location:
82
- source: spec/samples/masked/dirty.rb
83
- lines:
84
- - 5
85
- context: Dirty#a
86
- smell:
87
- class: UncommunicativeName
88
- subclass: UncommunicativeVariableName
89
- variable_name: x
90
- message: has the variable name 'x'
91
- status:
92
- is_active: true
93
- </pre>
@@ -1,129 +0,0 @@
1
- ---
2
- detectors:
3
- Attribute:
4
- enabled: true
5
- exclude: []
6
- BooleanParameter:
7
- enabled: true
8
- exclude: []
9
- ClassVariable:
10
- enabled: true
11
- exclude: []
12
- ControlParameter:
13
- enabled: true
14
- exclude: []
15
- DataClump:
16
- enabled: true
17
- exclude: []
18
- max_copies: 2
19
- min_clump_size: 2
20
- DuplicateMethodCall:
21
- enabled: true
22
- exclude: []
23
- max_calls: 1
24
- allow_calls: []
25
- FeatureEnvy:
26
- enabled: true
27
- exclude: []
28
- InstanceVariableAssumption:
29
- enabled: true
30
- exclude: []
31
- IrresponsibleModule:
32
- enabled: true
33
- exclude: []
34
- LongParameterList:
35
- enabled: true
36
- exclude: []
37
- max_params: 3
38
- overrides:
39
- initialize:
40
- max_params: 5
41
- LongYieldList:
42
- enabled: true
43
- exclude: []
44
- max_params: 3
45
- ManualDispatch:
46
- enabled: true
47
- exclude: []
48
- MissingSafeMethod:
49
- enabled: true
50
- exclude: []
51
- ModuleInitialize:
52
- enabled: true
53
- exclude: []
54
- NestedIterators:
55
- enabled: true
56
- exclude: []
57
- max_allowed_nesting: 1
58
- ignore_iterators:
59
- - tap
60
- NilCheck:
61
- enabled: true
62
- exclude: []
63
- RepeatedConditional:
64
- enabled: true
65
- exclude: []
66
- max_ifs: 2
67
- SubclassedFromCoreClass:
68
- enabled: true
69
- exclude: []
70
- TooManyConstants:
71
- enabled: true
72
- exclude: []
73
- max_constants: 5
74
- TooManyInstanceVariables:
75
- enabled: true
76
- exclude: []
77
- max_instance_variables: 4
78
- TooManyMethods:
79
- enabled: true
80
- exclude: []
81
- max_methods: 15
82
- TooManyStatements:
83
- enabled: true
84
- exclude:
85
- - initialize
86
- max_statements: 5
87
- UncommunicativeMethodName:
88
- enabled: true
89
- exclude: []
90
- reject:
91
- - "/^[a-z]$/"
92
- - "/[0-9]$/"
93
- - "/[A-Z]/"
94
- accept: []
95
- UncommunicativeModuleName:
96
- enabled: true
97
- exclude: []
98
- reject:
99
- - "/^.$/"
100
- - "/[0-9]$/"
101
- accept: []
102
- UncommunicativeParameterName:
103
- enabled: true
104
- exclude: []
105
- reject:
106
- - "/^.$/"
107
- - "/[0-9]$/"
108
- - "/[A-Z]/"
109
- - "/^_/"
110
- accept: []
111
- UncommunicativeVariableName:
112
- enabled: true
113
- exclude: []
114
- reject:
115
- - "/^.$/"
116
- - "/[0-9]$/"
117
- - "/[A-Z]/"
118
- accept:
119
- - "/^_$/"
120
- UnusedParameters:
121
- enabled: true
122
- exclude: []
123
- UnusedPrivateMethod:
124
- enabled: false
125
- exclude: []
126
- UtilityFunction:
127
- enabled: true
128
- exclude: []
129
- public_methods_only: false