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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -1
- data/CONTRIBUTING.md +3 -0
- data/Dockerfile +1 -1
- data/Gemfile +6 -6
- data/lib/reek/ast/ast_node_class_map.rb +1 -1
- data/lib/reek/report/code_climate/code_climate_formatter.rb +1 -3
- data/lib/reek/smell_detectors/base_detector.rb +1 -1
- data/lib/reek/smell_warning.rb +1 -1
- data/lib/reek/source/source_locator.rb +1 -3
- data/lib/reek/version.rb +1 -1
- data/reek.gemspec +4 -1
- metadata +3 -208
- data/docs/API.md +0 -174
- data/docs/Attribute.md +0 -39
- data/docs/Basic-Smell-Options.md +0 -85
- data/docs/Boolean-Parameter.md +0 -54
- data/docs/Class-Variable.md +0 -40
- data/docs/Code-Smells.md +0 -39
- data/docs/Command-Line-Options.md +0 -119
- data/docs/Control-Couple.md +0 -26
- data/docs/Control-Parameter.md +0 -32
- data/docs/Data-Clump.md +0 -46
- data/docs/Duplicate-Method-Call.md +0 -264
- data/docs/Feature-Envy.md +0 -93
- data/docs/How-To-Write-New-Detectors.md +0 -132
- data/docs/How-reek-works-internally.md +0 -114
- data/docs/Instance-Variable-Assumption.md +0 -163
- data/docs/Irresponsible-Module.md +0 -47
- data/docs/Large-Class.md +0 -16
- data/docs/Long-Parameter-List.md +0 -39
- data/docs/Long-Yield-List.md +0 -37
- data/docs/Manual-Dispatch.md +0 -30
- data/docs/Missing-Safe-Method.md +0 -92
- data/docs/Module-Initialize.md +0 -62
- data/docs/Nested-Iterators.md +0 -59
- data/docs/Nil-Check.md +0 -47
- data/docs/RSpec-matchers.md +0 -129
- data/docs/Rake-Task.md +0 -66
- data/docs/Reek-4-to-Reek-5-migration.md +0 -188
- data/docs/Reek-Driven-Development.md +0 -46
- data/docs/Repeated-Conditional.md +0 -47
- data/docs/Simulated-Polymorphism.md +0 -16
- data/docs/Smell-Suppression.md +0 -96
- data/docs/Style-Guide.md +0 -19
- data/docs/Subclassed-From-Core-Class.md +0 -79
- data/docs/Too-Many-Constants.md +0 -37
- data/docs/Too-Many-Instance-Variables.md +0 -43
- data/docs/Too-Many-Methods.md +0 -56
- data/docs/Too-Many-Statements.md +0 -54
- data/docs/Uncommunicative-Method-Name.md +0 -94
- data/docs/Uncommunicative-Module-Name.md +0 -92
- data/docs/Uncommunicative-Name.md +0 -18
- data/docs/Uncommunicative-Parameter-Name.md +0 -90
- data/docs/Uncommunicative-Variable-Name.md +0 -96
- data/docs/Unused-Parameters.md +0 -28
- data/docs/Unused-Private-Method.md +0 -101
- data/docs/Utility-Function.md +0 -56
- data/docs/Versioning-Policy.md +0 -7
- data/docs/YAML-Reports.md +0 -93
- data/docs/defaults.reek.yml +0 -129
- data/docs/templates/default/docstring/html/public_api_marker.erb +0 -3
- data/docs/templates/default/docstring/setup.rb +0 -35
- data/docs/templates/default/fulldoc/html/css/common.css +0 -1
- data/docs/yard_plugin.rb +0 -17
- data/features/command_line_interface/basic_usage.feature +0 -15
- data/features/command_line_interface/options.feature +0 -123
- data/features/command_line_interface/show_progress.feature +0 -33
- data/features/command_line_interface/smell_selection.feature +0 -15
- data/features/command_line_interface/smells_count.feature +0 -38
- data/features/command_line_interface/stdin.feature +0 -65
- data/features/configuration_files/accept_setting.feature +0 -87
- data/features/configuration_files/directory_specific_directives.feature +0 -274
- data/features/configuration_files/exclude_directives.feature +0 -35
- data/features/configuration_files/exclude_paths_directives.feature +0 -42
- data/features/configuration_files/masking_smells.feature +0 -94
- data/features/configuration_files/mix_accept_reject_setting.feature +0 -84
- data/features/configuration_files/reject_setting.feature +0 -89
- data/features/configuration_files/schema_validation.feature +0 -59
- data/features/configuration_files/show_configuration_file.feature +0 -44
- data/features/configuration_files/unused_private_method.feature +0 -68
- data/features/configuration_loading.feature +0 -91
- data/features/configuration_via_source_comments/erroneous_source_comments.feature +0 -68
- data/features/configuration_via_source_comments/well_formed_source_comments.feature +0 -116
- data/features/locales.feature +0 -32
- data/features/programmatic_access.feature +0 -41
- data/features/rake_task/rake_task.feature +0 -138
- data/features/reports/codeclimate.feature +0 -59
- data/features/reports/json.feature +0 -59
- data/features/reports/reports.feature +0 -219
- data/features/reports/yaml.feature +0 -52
- data/features/rspec_matcher.feature +0 -41
- data/features/samples.feature +0 -305
- data/features/step_definitions/.rubocop.yml +0 -5
- data/features/step_definitions/reek_steps.rb +0 -102
- data/features/step_definitions/sample_file_steps.rb +0 -63
- data/features/support/env.rb +0 -33
- data/features/todo_list.feature +0 -108
- data/samples/checkstyle.xml +0 -7
- data/samples/clean_source/clean.rb +0 -6
- data/samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml +0 -29
- data/samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml +0 -30
- data/samples/configuration/corrupt.reek +0 -1
- data/samples/configuration/empty.reek +0 -0
- data/samples/configuration/full_configuration.reek +0 -13
- data/samples/configuration/full_mask.reek +0 -6
- data/samples/configuration/home/home.reek.yml +0 -4
- data/samples/configuration/partial_mask.reek +0 -4
- data/samples/configuration/regular_configuration/.reek.yml +0 -4
- data/samples/configuration/regular_configuration/empty_sub_directory/.gitignore +0 -0
- data/samples/configuration/with_excluded_paths.reek +0 -5
- data/samples/no_config_file/.keep +0 -0
- data/samples/paths.rb +0 -5
- data/samples/smelly_source/inline.rb +0 -704
- data/samples/smelly_source/optparse.rb +0 -1788
- data/samples/smelly_source/redcloth.rb +0 -1130
- data/samples/smelly_source/ruby.rb +0 -368
- data/samples/smelly_source/smelly.rb +0 -7
- data/samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb +0 -5
- data/samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb +0 -2
- data/samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb +0 -6
- data/samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb +0 -6
- data/samples/source_with_hidden_directories/.hidden/hidden.rb +0 -1
- data/samples/source_with_hidden_directories/not_hidden.rb +0 -1
- data/samples/source_with_non_ruby_files/gibberish +0 -1
- data/samples/source_with_non_ruby_files/python_source.py +0 -1
- data/samples/source_with_non_ruby_files/ruby.rb +0 -6
- data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +0 -15
- data/spec/quality/documentation_spec.rb +0 -41
- data/spec/quality/reek_source_spec.rb +0 -11
- data/spec/reek/ast/node_spec.rb +0 -211
- data/spec/reek/ast/object_refs_spec.rb +0 -83
- data/spec/reek/ast/reference_collector_spec.rb +0 -47
- data/spec/reek/ast/sexp_extensions_spec.rb +0 -498
- data/spec/reek/cli/application_spec.rb +0 -168
- data/spec/reek/cli/command/report_command_spec.rb +0 -44
- data/spec/reek/cli/command/todo_list_command_spec.rb +0 -86
- data/spec/reek/cli/options_spec.rb +0 -51
- data/spec/reek/cli/silencer_spec.rb +0 -28
- data/spec/reek/code_comment_spec.rb +0 -184
- data/spec/reek/configuration/app_configuration_spec.rb +0 -195
- data/spec/reek/configuration/configuration_file_finder_spec.rb +0 -230
- data/spec/reek/configuration/default_directive_spec.rb +0 -13
- data/spec/reek/configuration/directory_directives_spec.rb +0 -122
- data/spec/reek/configuration/excluded_paths_spec.rb +0 -25
- data/spec/reek/configuration/rake_task_converter_spec.rb +0 -33
- data/spec/reek/configuration/schema_validator_spec.rb +0 -165
- data/spec/reek/context/code_context_spec.rb +0 -192
- data/spec/reek/context/ghost_context_spec.rb +0 -60
- data/spec/reek/context/method_context_spec.rb +0 -72
- data/spec/reek/context/module_context_spec.rb +0 -55
- data/spec/reek/context/root_context_spec.rb +0 -12
- data/spec/reek/context/statement_counter_spec.rb +0 -24
- data/spec/reek/context_builder_spec.rb +0 -457
- data/spec/reek/detector_repository_spec.rb +0 -22
- data/spec/reek/documentation_link_spec.rb +0 -20
- data/spec/reek/errors/base_error_spec.rb +0 -13
- data/spec/reek/examiner_spec.rb +0 -309
- data/spec/reek/logging_error_handler_spec.rb +0 -24
- data/spec/reek/rake/task_spec.rb +0 -56
- data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +0 -22
- data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +0 -126
- data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +0 -51
- data/spec/reek/report/code_climate/code_climate_report_spec.rb +0 -56
- data/spec/reek/report/html_report_spec.rb +0 -19
- data/spec/reek/report/json_report_spec.rb +0 -58
- data/spec/reek/report/location_formatter_spec.rb +0 -32
- data/spec/reek/report/progress_formatter_spec.rb +0 -68
- data/spec/reek/report/text_report_spec.rb +0 -89
- data/spec/reek/report/xml_report_spec.rb +0 -24
- data/spec/reek/report/yaml_report_spec.rb +0 -55
- data/spec/reek/report_spec.rb +0 -28
- data/spec/reek/smell_configuration_spec.rb +0 -56
- data/spec/reek/smell_detectors/attribute_spec.rb +0 -197
- data/spec/reek/smell_detectors/base_detector_spec.rb +0 -50
- data/spec/reek/smell_detectors/boolean_parameter_spec.rb +0 -93
- data/spec/reek/smell_detectors/class_variable_spec.rb +0 -106
- data/spec/reek/smell_detectors/control_parameter_spec.rb +0 -300
- data/spec/reek/smell_detectors/data_clump_spec.rb +0 -134
- data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +0 -211
- data/spec/reek/smell_detectors/feature_envy_spec.rb +0 -295
- data/spec/reek/smell_detectors/instance_variable_assumption_spec.rb +0 -96
- data/spec/reek/smell_detectors/irresponsible_module_spec.rb +0 -226
- data/spec/reek/smell_detectors/long_parameter_list_spec.rb +0 -61
- data/spec/reek/smell_detectors/long_yield_list_spec.rb +0 -49
- data/spec/reek/smell_detectors/manual_dispatch_spec.rb +0 -75
- data/spec/reek/smell_detectors/missing_safe_method_spec.rb +0 -68
- data/spec/reek/smell_detectors/module_initialize_spec.rb +0 -77
- data/spec/reek/smell_detectors/nested_iterators_spec.rb +0 -333
- data/spec/reek/smell_detectors/nil_check_spec.rb +0 -100
- data/spec/reek/smell_detectors/repeated_conditional_spec.rb +0 -100
- data/spec/reek/smell_detectors/subclassed_from_core_class_spec.rb +0 -77
- data/spec/reek/smell_detectors/too_many_constants_spec.rb +0 -144
- data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +0 -132
- data/spec/reek/smell_detectors/too_many_methods_spec.rb +0 -54
- data/spec/reek/smell_detectors/too_many_statements_spec.rb +0 -90
- data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +0 -78
- data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +0 -78
- data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +0 -147
- data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +0 -201
- data/spec/reek/smell_detectors/unused_parameters_spec.rb +0 -114
- data/spec/reek/smell_detectors/unused_private_method_spec.rb +0 -205
- data/spec/reek/smell_detectors/utility_function_spec.rb +0 -309
- data/spec/reek/smell_warning_spec.rb +0 -137
- data/spec/reek/source/source_code_spec.rb +0 -79
- data/spec/reek/source/source_locator_spec.rb +0 -166
- data/spec/reek/spec/should_reek_of_spec.rb +0 -153
- data/spec/reek/spec/should_reek_only_of_spec.rb +0 -91
- data/spec/reek/spec/should_reek_spec.rb +0 -52
- data/spec/reek/spec/smell_matcher_spec.rb +0 -87
- data/spec/reek/tree_dresser_spec.rb +0 -46
- data/spec/spec_helper.rb +0 -110
- data/tasks/configuration.rake +0 -18
- data/tasks/console.rake +0 -5
- data/tasks/reek.rake +0 -6
- data/tasks/rubocop.rake +0 -11
- data/tasks/test.rake +0 -32
data/docs/Too-Many-Constants.md
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
## Introduction
|
2
|
-
|
3
|
-
_Too Many Constants_ is a case of [Large Class](Large-Class.md).
|
4
|
-
|
5
|
-
## Example
|
6
|
-
|
7
|
-
Given this configuration
|
8
|
-
|
9
|
-
```yaml
|
10
|
-
TooManyConstants:
|
11
|
-
max_constants: 3
|
12
|
-
```
|
13
|
-
|
14
|
-
and this code:
|
15
|
-
|
16
|
-
```Ruby
|
17
|
-
class Smelly
|
18
|
-
CONST_1 = :dummy
|
19
|
-
CONST_2 = :dummy
|
20
|
-
CONST_3 = :dummy
|
21
|
-
CONST_4 = :dummy
|
22
|
-
end
|
23
|
-
```
|
24
|
-
|
25
|
-
Reek would emit the following warning:
|
26
|
-
|
27
|
-
```
|
28
|
-
test.rb -- 1 warning:
|
29
|
-
[1]:TooManyConstants: Smelly has 4 constants
|
30
|
-
```
|
31
|
-
## Configuration
|
32
|
-
|
33
|
-
Reek's _Too Many Constants_ detector offers the [Basic Smell Options](Basic-Smell-Options.md), plus:
|
34
|
-
|
35
|
-
| Option | Value | Effect |
|
36
|
-
| -------------------------|---------|---------|
|
37
|
-
| `max_constants` | integer | The maximum number of constants that are permitted. Defaults to 5 |
|
@@ -1,43 +0,0 @@
|
|
1
|
-
## Introduction
|
2
|
-
|
3
|
-
_Too Many Instance Variables_ is a case of [Large Class](Large-Class.md).
|
4
|
-
|
5
|
-
## Example
|
6
|
-
|
7
|
-
Given this configuration
|
8
|
-
|
9
|
-
```yaml
|
10
|
-
TooManyInstanceVariables:
|
11
|
-
max_instance_variables: 3
|
12
|
-
```
|
13
|
-
|
14
|
-
and this code:
|
15
|
-
|
16
|
-
```Ruby
|
17
|
-
class Smelly
|
18
|
-
def initialize
|
19
|
-
@arg_1 = :dummy
|
20
|
-
@arg_2 = :dummy
|
21
|
-
@arg_3 = :dummy
|
22
|
-
@arg_4 = :dummy
|
23
|
-
end
|
24
|
-
end
|
25
|
-
```
|
26
|
-
|
27
|
-
Reek would emit the following warning:
|
28
|
-
|
29
|
-
```
|
30
|
-
test.rb -- 5 warnings:
|
31
|
-
[1]:TooManyInstanceVariables: Smelly has at least 4 instance variables
|
32
|
-
```
|
33
|
-
## Current Support in Reek
|
34
|
-
|
35
|
-
Reek only counts the instance variables you use explicitly like in the example above. Class macros like `attr_accessor` are disregarded.
|
36
|
-
|
37
|
-
## Configuration
|
38
|
-
|
39
|
-
Reek's _Too Many Instance Variables_ detector offers the [Basic Smell Options](Basic-Smell-Options.md), plus:
|
40
|
-
|
41
|
-
| Option | Value | Effect |
|
42
|
-
| -------------------------|---------|---------|
|
43
|
-
| `max_instance_variables` | integer | The maximum number of instance variables that are permitted. Defaults to 4 |
|
data/docs/Too-Many-Methods.md
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
## Introduction
|
2
|
-
|
3
|
-
_Too Many Methods_ is a case of [Large Class](Large-Class.md).
|
4
|
-
|
5
|
-
## Example
|
6
|
-
|
7
|
-
Given this configuration
|
8
|
-
|
9
|
-
```yaml
|
10
|
-
TooManyMethods:
|
11
|
-
max_methods: 3
|
12
|
-
```
|
13
|
-
|
14
|
-
and this code:
|
15
|
-
|
16
|
-
```Ruby
|
17
|
-
class Smelly
|
18
|
-
def one; end
|
19
|
-
def two; end
|
20
|
-
def three; end
|
21
|
-
def four; end
|
22
|
-
end
|
23
|
-
```
|
24
|
-
|
25
|
-
Reek would emit the following warning:
|
26
|
-
|
27
|
-
```
|
28
|
-
test.rb -- 1 warning:
|
29
|
-
[1]:TooManyMethods: Smelly has at least 4 methods
|
30
|
-
```
|
31
|
-
## Current Support in Reek
|
32
|
-
|
33
|
-
Reek counts all the methods it can find in a class — instance *and* class
|
34
|
-
methods. So given `max_methods` from above is 4, this:
|
35
|
-
|
36
|
-
```Ruby
|
37
|
-
class Smelly
|
38
|
-
class << self
|
39
|
-
def one; end
|
40
|
-
def two; end
|
41
|
-
end
|
42
|
-
|
43
|
-
def three; end
|
44
|
-
def four; end
|
45
|
-
end
|
46
|
-
```
|
47
|
-
|
48
|
-
would cause Reek to emit the same warning as in the example above.
|
49
|
-
|
50
|
-
## Configuration
|
51
|
-
|
52
|
-
Reek's _Too Many Methods_ detector offers the [Basic Smell Options](Basic-Smell-Options.md), plus:
|
53
|
-
|
54
|
-
| Option | Value | Effect |
|
55
|
-
| --------------|---------|---------|
|
56
|
-
| `max_methods` | integer | The maximum number of methods that are permitted. Defaults to 15 |
|
data/docs/Too-Many-Statements.md
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
# Too Many Statements
|
2
|
-
|
3
|
-
## Introduction
|
4
|
-
|
5
|
-
A method with _Too Many Statements_ is any method that has a large number of lines.
|
6
|
-
|
7
|
-
## Current Support in Reek
|
8
|
-
|
9
|
-
_Too Many Statements_ warns about any method that has more than 5 statements.
|
10
|
-
Reek's smell detector for _Too Many Statements_ counts +1 for every simple
|
11
|
-
statement in a method and +1 for every statement within a control structure
|
12
|
-
(`if`, `else`, `case`, `when`, `for`, `while`, `until`, `begin`, `rescue`) but
|
13
|
-
it doesn't count the control structure itself.
|
14
|
-
|
15
|
-
So the following method would score +6 in Reek's statement-counting algorithm:
|
16
|
-
|
17
|
-
```Ruby
|
18
|
-
def parse(arg, argv, &error)
|
19
|
-
if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0]))
|
20
|
-
return nil, block, nil # +1
|
21
|
-
end
|
22
|
-
opt = (val = parse_arg(val, &error))[1] # +2
|
23
|
-
val = conv_arg(*val) # +3
|
24
|
-
if opt and !arg
|
25
|
-
argv.shift # +4
|
26
|
-
else
|
27
|
-
val[0] = nil # +5
|
28
|
-
end
|
29
|
-
val # +6
|
30
|
-
end
|
31
|
-
```
|
32
|
-
|
33
|
-
(You might argue that the two assigments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)
|
34
|
-
|
35
|
-
## Configuration
|
36
|
-
|
37
|
-
Reek's _Too Many Statements_ detector supports the [Basic Smell Options](Basic-Smell-Options.md), plus:
|
38
|
-
|
39
|
-
| Option | Value | Effect |
|
40
|
-
| ---------------|-------------|---------|
|
41
|
-
| `max_statements` | integer | The maximum number of statements allowed in a method before a warning is issued. Defaults to 5. |
|
42
|
-
|
43
|
-
_Too Many Statements_'s default configuration is:
|
44
|
-
|
45
|
-
```yaml
|
46
|
-
---
|
47
|
-
TooManyStatements:
|
48
|
-
enabled: true
|
49
|
-
exclude:
|
50
|
-
- initialize
|
51
|
-
max_statements: 5
|
52
|
-
```
|
53
|
-
|
54
|
-
By default, `initialize` is not checked for length; any class's constructor can be as long as necessary.
|
@@ -1,94 +0,0 @@
|
|
1
|
-
# Uncommunicative Method Name
|
2
|
-
|
3
|
-
## Introduction
|
4
|
-
|
5
|
-
An _Uncommunicative Method Name_ is a method name that doesn't communicate its
|
6
|
-
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 Method Name_ checks for:
|
12
|
-
|
13
|
-
* single-character names
|
14
|
-
* any name ending with a number
|
15
|
-
* camelCaseMethodNames
|
16
|
-
|
17
|
-
## Configuration
|
18
|
-
|
19
|
-
Reek's _Uncommunicative Method 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 | The set of names that Reek will accept (and not report) even if they match one of the `reject` expressions. |
|
26
|
-
|
27
|
-
An example configuration could look like this:
|
28
|
-
|
29
|
-
```Yaml
|
30
|
-
---
|
31
|
-
UncommunicativeMethodName:
|
32
|
-
accept:
|
33
|
-
- x
|
34
|
-
- meth1
|
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 x; end # Should not be reported
|
46
|
-
def meth1; end # Should not be reported
|
47
|
-
def foobar; end # Should be reported
|
48
|
-
def awesome_helper; end # Should be reported
|
49
|
-
```
|
50
|
-
|
51
|
-
Reek would report:
|
52
|
-
|
53
|
-
```
|
54
|
-
smelly.rb -- 2 warnings:
|
55
|
-
[4]:UncommunicativeMethodName: awesome_helper has the name 'awesome_helper'
|
56
|
-
[3]:UncommunicativeMethodName: foobar has the name 'foobar'
|
57
|
-
```
|
58
|
-
|
59
|
-
## Advanced configuration
|
60
|
-
|
61
|
-
Sometimes just strings are not enough for configuration. E.g. consider this code sample:
|
62
|
-
|
63
|
-
```Ruby
|
64
|
-
class Klass
|
65
|
-
def foo; end
|
66
|
-
def foobar; end;
|
67
|
-
end
|
68
|
-
```
|
69
|
-
|
70
|
-
and now imagine that you want to reject the name "foo" but not "foobar". This wouldn't be possible with just using strings.
|
71
|
-
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.
|
72
|
-
Everything within the forward slashes will be loaded as a regex.
|
73
|
-
|
74
|
-
A possible configuration that allows "foobar" but rejects "foo" could look like this:
|
75
|
-
|
76
|
-
```Yaml
|
77
|
-
---
|
78
|
-
UncommunicativeMethodName:
|
79
|
-
reject:
|
80
|
-
- "/^foo$/"
|
81
|
-
```
|
82
|
-
|
83
|
-
## Reek 4
|
84
|
-
|
85
|
-
In Reek 4 you could also pass regexes to `accept` or `reject`, meaning this was perfectly valid as well:
|
86
|
-
|
87
|
-
```yaml
|
88
|
-
UncommunicativeMethodName:
|
89
|
-
accept:
|
90
|
-
- !ruby/regexp /foobar/
|
91
|
-
```
|
92
|
-
|
93
|
-
Support for this has been scrapped with Reek 5 to make the Reek configuration more yaml standard compliant.
|
94
|
-
You can still pass in regexes, you just have to wrap them into a string. Please see "Advanced configuration" above.
|
@@ -1,92 +0,0 @@
|
|
1
|
-
# Uncommunicative Module Name
|
2
|
-
|
3
|
-
## Introduction
|
4
|
-
|
5
|
-
An _Uncommunicative Module Name_ is a module name that doesn't communicate its
|
6
|
-
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 Module Name_ checks for:
|
12
|
-
|
13
|
-
* single-character names
|
14
|
-
* any name ending with a number
|
15
|
-
|
16
|
-
## Configuration
|
17
|
-
|
18
|
-
Reek's _Uncommunicative Module Name_ detector supports the [Basic Smell Options](Basic-Smell-Options.md), plus:
|
19
|
-
|
20
|
-
| Option | Value | Effect |
|
21
|
-
| ---------------|-------------|---------|
|
22
|
-
| `reject` | array of strings | The set of names that Reek uses to check for bad names. Defaults to single-letter names and names ending with a number. |
|
23
|
-
| `accept` | array or strings | The set of names that Reek will accept (and not report) even if they match one of the `reject` expressions. Empty by default.|
|
24
|
-
|
25
|
-
An example configuration could look like this:
|
26
|
-
|
27
|
-
```Yaml
|
28
|
-
---
|
29
|
-
UncommunicativeModuleName:
|
30
|
-
accept:
|
31
|
-
- lassy
|
32
|
-
- Util
|
33
|
-
reject:
|
34
|
-
- Helper
|
35
|
-
```
|
36
|
-
|
37
|
-
Reek will convert whatever you give it as a string to the corresponding regex, so "Helper" from above will be converted to /Helper/ internally.
|
38
|
-
|
39
|
-
Applying a configuration to a source file like this:
|
40
|
-
|
41
|
-
```Ruby
|
42
|
-
class Classy1; end # Should not be reported
|
43
|
-
class Util; end # Should not be reported
|
44
|
-
class BaseHelper; end # Should be reported
|
45
|
-
```
|
46
|
-
|
47
|
-
Reek would report:
|
48
|
-
|
49
|
-
```
|
50
|
-
smelly.rb -- 1 warning:
|
51
|
-
[3]:UncommunicativeModuleName: BaseHelper has the name 'BaseHelper'
|
52
|
-
```
|
53
|
-
|
54
|
-
## Advanced configuration
|
55
|
-
|
56
|
-
Sometimes just strings are not enough for configuration. E.g. consider this code sample:
|
57
|
-
|
58
|
-
```Ruby
|
59
|
-
class Klassy
|
60
|
-
# ...
|
61
|
-
end
|
62
|
-
|
63
|
-
class KlassyModule
|
64
|
-
# ...
|
65
|
-
end
|
66
|
-
```
|
67
|
-
|
68
|
-
and now imagine that you want to reject the name "Klassy" but not "KlassyModule". This wouldn't be possible with just using strings.
|
69
|
-
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.
|
70
|
-
Everything within the forward slashes will be loaded as a regex.
|
71
|
-
|
72
|
-
A possible configuration that allows "KlassyModule" but rejects "Klassy" could look like this:
|
73
|
-
|
74
|
-
```Yaml
|
75
|
-
---
|
76
|
-
UncommunicativeModuleName:
|
77
|
-
reject:
|
78
|
-
- "/^Klassy$/"
|
79
|
-
```
|
80
|
-
|
81
|
-
## Reek 4
|
82
|
-
|
83
|
-
In Reek 4 you could also pass regexes to `accept` or `reject`, meaning this was perfectly valid as well:
|
84
|
-
|
85
|
-
```yaml
|
86
|
-
UncommunicativeModuleName:
|
87
|
-
accept:
|
88
|
-
- !ruby/regexp /foobar/
|
89
|
-
```
|
90
|
-
|
91
|
-
Support for this has been scrapped with Reek 5 to make the Reek configuration more yaml standard compliant.
|
92
|
-
You can still pass in regexes, you just have to wrap them into a string. Please see "Advanced configuration" above.
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Uncommunicative Name
|
2
|
-
|
3
|
-
## Introduction
|
4
|
-
|
5
|
-
An _Uncommunicative Name_ is a name that doesn't communicate its intent well enough.
|
6
|
-
|
7
|
-
Poor names make it hard for the reader to build a mental picture of what's
|
8
|
-
going on in the code. They can also be mis-interpreted; and they hurt the flow
|
9
|
-
of reading, because the reader must slow down to interpret the names.
|
10
|
-
|
11
|
-
## Current Support in Reek
|
12
|
-
|
13
|
-
Reek offers four checks in this category:
|
14
|
-
|
15
|
-
* [Uncommunicative Method Name](Uncommunicative-Method-Name.md)
|
16
|
-
* [Uncommunicative Module Name](Uncommunicative-Module-Name.md)
|
17
|
-
* [Uncommunicative Parameter Name](Uncommunicative-Parameter-Name.md)
|
18
|
-
* [Uncommunicative Variable Name](Uncommunicative-Variable-Name.md)
|
@@ -1,90 +0,0 @@
|
|
1
|
-
# Uncommunicative Parameter Name
|
2
|
-
|
3
|
-
## Introduction
|
4
|
-
|
5
|
-
An _Uncommunicative Parameter Name_ is a parameter name that doesn't
|
6
|
-
communicate 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 Parameter Name_ checks for:
|
12
|
-
|
13
|
-
* single-character names
|
14
|
-
* any name ending with a number
|
15
|
-
* camelCaseParameterNames
|
16
|
-
|
17
|
-
## Configuration
|
18
|
-
|
19
|
-
Reek's _Uncommunicative Parameter Name_ detector supports the [Basic Smell Options](Basic-Smell-Options.md), plus:
|
20
|
-
|
21
|
-
| Option | Value | Effect |
|
22
|
-
| ---------|-------------|---------|
|
23
|
-
| `reject` | array of strings | The set of names that Reek uses to check for bad names. Defaults to single-letter names, names containing an uppercase letter, names with a number at the end and '_'. |
|
24
|
-
| `accept` | array of strings | The set of names that Reek will accept (and not report) even if they match one of the `reject` expressions. |
|
25
|
-
|
26
|
-
|
27
|
-
An example configuration could look like this:
|
28
|
-
|
29
|
-
```Yaml
|
30
|
-
---
|
31
|
-
UncommunicativeParameterName:
|
32
|
-
accept:
|
33
|
-
- x
|
34
|
-
- arg1
|
35
|
-
reject:
|
36
|
-
- foobar
|
37
|
-
```
|
38
|
-
|
39
|
-
Reek will convert whatever you give it as a string to the corresponding regex, so "foobar" from above will be converted to /foobar/ internally.
|
40
|
-
|
41
|
-
Applying a configuration to a source file like this:
|
42
|
-
|
43
|
-
```Ruby
|
44
|
-
def omg(x); x; end # Should not be reported
|
45
|
-
def omg(arg1); arg1; end # Should not be reported
|
46
|
-
def omg(foobar); foobar; end # Should be reported
|
47
|
-
```
|
48
|
-
|
49
|
-
Reek would report:
|
50
|
-
|
51
|
-
```
|
52
|
-
smelly.rb -- 1 warning:
|
53
|
-
[3]:UncommunicativeParameterName: omg has the parameter name 'foobar'
|
54
|
-
```
|
55
|
-
|
56
|
-
## Advanced configuration
|
57
|
-
|
58
|
-
Sometimes just strings are not enough for configuration. E.g. consider this code sample:
|
59
|
-
|
60
|
-
```Ruby
|
61
|
-
class Klass
|
62
|
-
def my_method(foo, foobar); end
|
63
|
-
end
|
64
|
-
```
|
65
|
-
|
66
|
-
and now imagine that you want to reject the name "foo" but not "foobar". This wouldn't be possible with just using strings.
|
67
|
-
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.
|
68
|
-
Everything within the forward slashes will be loaded as a regex.
|
69
|
-
|
70
|
-
A possible configuration that allows "foobar" but rejects "foo" could look like this:
|
71
|
-
|
72
|
-
```Yaml
|
73
|
-
---
|
74
|
-
UncommunicativeParameterName:
|
75
|
-
reject:
|
76
|
-
- "/^foo$/"
|
77
|
-
```
|
78
|
-
|
79
|
-
## Reek 4
|
80
|
-
|
81
|
-
In Reek 4 you could also pass regexes to `accept` or `reject`, meaning this was perfectly valid as well:
|
82
|
-
|
83
|
-
```yaml
|
84
|
-
UncommunicativeParameterName:
|
85
|
-
accept:
|
86
|
-
- !ruby/regexp /foobar/
|
87
|
-
```
|
88
|
-
|
89
|
-
Support for this has been scrapped with Reek 5 to make the Reek configuration more yaml standard compliant.
|
90
|
-
You can still pass in regexes, you just have to wrap them into a string. Please see "Advanced configuration" above.
|