reek 6.0.2 → 6.2.0
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/.github/dependabot.yml +13 -0
- data/.github/workflows/ruby.yml +57 -0
- data/.rubocop.yml +6 -12
- data/.rubocop_todo.yml +6 -4
- data/CHANGELOG.md +95 -0
- data/CONTRIBUTING.md +10 -10
- data/Dockerfile +1 -1
- data/Gemfile +8 -7
- data/README.md +29 -29
- data/bin/code_climate_reek +56 -8
- data/lib/reek/ast/ast_node_class_map.rb +1 -1
- data/lib/reek/ast/node.rb +1 -1
- data/lib/reek/ast/sexp_extensions/arguments.rb +20 -0
- data/lib/reek/ast/sexp_extensions/case.rb +1 -1
- data/lib/reek/ast/sexp_extensions/if.rb +1 -1
- data/lib/reek/ast/sexp_extensions/send.rb +22 -7
- data/lib/reek/cli/command/todo_list_command.rb +3 -3
- data/lib/reek/cli/options.rb +6 -6
- data/lib/reek/{report/code_climate → code_climate}/code_climate_configuration.rb +1 -1
- data/lib/reek/{report/code_climate → code_climate}/code_climate_configuration.yml +41 -41
- data/lib/reek/{report/code_climate → code_climate}/code_climate_fingerprint.rb +2 -2
- data/lib/reek/{report/code_climate → code_climate}/code_climate_formatter.rb +2 -4
- data/lib/reek/{report/code_climate → code_climate}/code_climate_report.rb +3 -3
- data/lib/reek/code_comment.rb +25 -20
- data/lib/reek/configuration/app_configuration.rb +5 -5
- data/lib/reek/configuration/configuration_converter.rb +1 -1
- data/lib/reek/configuration/configuration_file_finder.rb +5 -4
- data/lib/reek/configuration/default_directive.rb +1 -1
- data/lib/reek/configuration/directory_directives.rb +1 -1
- data/lib/reek/configuration/excluded_paths.rb +3 -2
- data/lib/reek/configuration/schema.rb +177 -0
- data/lib/reek/configuration/schema_validator.rb +12 -13
- data/lib/reek/context/attribute_context.rb +1 -1
- data/lib/reek/context/code_context.rb +1 -1
- data/lib/reek/context/method_context.rb +1 -1
- data/lib/reek/context/module_context.rb +4 -0
- data/lib/reek/context/refinement_context.rb +16 -0
- data/lib/reek/context/send_context.rb +7 -1
- data/lib/reek/context_builder.rb +17 -3
- data/lib/reek/documentation_link.rb +3 -5
- data/lib/reek/errors/bad_detector_configuration_key_in_comment_error.rb +2 -2
- data/lib/reek/errors/bad_detector_in_comment_error.rb +2 -2
- data/lib/reek/errors/encoding_error.rb +1 -1
- data/lib/reek/errors/garbage_detector_configuration_in_comment_error.rb +2 -2
- data/lib/reek/errors/incomprehensible_source_error.rb +1 -1
- data/lib/reek/errors/legacy_comment_separator_error.rb +2 -2
- data/lib/reek/errors/syntax_error.rb +1 -1
- data/lib/reek/rake/task.rb +5 -5
- data/lib/reek/smell_detectors/base_detector.rb +1 -1
- data/lib/reek/smell_detectors/class_variable.rb +2 -2
- data/lib/reek/smell_detectors/control_parameter_helpers/candidate.rb +6 -6
- data/lib/reek/smell_detectors/control_parameter_helpers/control_parameter_finder.rb +1 -1
- data/lib/reek/smell_detectors/duplicate_method_call.rb +5 -5
- data/lib/reek/smell_detectors/instance_variable_assumption.rb +8 -8
- data/lib/reek/smell_detectors/nested_iterators.rb +4 -3
- data/lib/reek/smell_detectors/unused_private_method.rb +3 -2
- data/lib/reek/smell_warning.rb +1 -1
- data/lib/reek/source/source_locator.rb +1 -3
- data/lib/reek/spec/should_reek_of.rb +11 -9
- data/lib/reek/spec.rb +1 -1
- data/lib/reek/version.rb +2 -2
- data/reek.gemspec +29 -25
- metadata +37 -250
- data/.travis.yml +0 -40
- 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 -37
- 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/lib/reek/configuration/schema.yml +0 -210
- 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 -16
- 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 -293
- 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/lib/reek/{report/code_climate.rb → code_climate.rb} +0 -0
|
@@ -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
|
-
"""
|
data/features/locales.feature
DELETED
|
@@ -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.2/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.2/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.2/docs/Irresponsible-Module.md"
|
|
57
|
-
}
|
|
58
|
-
]
|
|
59
|
-
"""
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
Feature: Correctly formatted reports
|
|
2
|
-
In order to get the most out of Reek
|
|
3
|
-
As a developer
|
|
4
|
-
I want to be able to parse Reek's output simply and consistently
|
|
5
|
-
|
|
6
|
-
Scenario Outline: two reports run together with indented smells
|
|
7
|
-
Given a directory called 'smelly' containing two smelly files
|
|
8
|
-
When I run reek <args>
|
|
9
|
-
Then the exit status indicates smells
|
|
10
|
-
And it reports:
|
|
11
|
-
"""
|
|
12
|
-
smelly/dirty_one.rb -- 2 warnings:
|
|
13
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
14
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
15
|
-
smelly/dirty_two.rb -- 2 warnings:
|
|
16
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
17
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
18
|
-
4 total warnings
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
Examples:
|
|
22
|
-
| args |
|
|
23
|
-
| smelly/dirty_one.rb smelly/dirty_two.rb |
|
|
24
|
-
| smelly |
|
|
25
|
-
|
|
26
|
-
Scenario Outline: No sorting (which means report each file as it is read in)
|
|
27
|
-
Given a directory called 'smelly' containing two smelly files
|
|
28
|
-
When I run reek <option> smelly
|
|
29
|
-
Then the exit status indicates smells
|
|
30
|
-
And it reports:
|
|
31
|
-
"""
|
|
32
|
-
smelly/dirty_one.rb -- 2 warnings:
|
|
33
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
34
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
35
|
-
smelly/dirty_two.rb -- 2 warnings:
|
|
36
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
37
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
38
|
-
4 total warnings
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
Examples:
|
|
42
|
-
| option |
|
|
43
|
-
| |
|
|
44
|
-
| --sort-by none |
|
|
45
|
-
| --sort-by n |
|
|
46
|
-
|
|
47
|
-
Scenario Outline: Sort by issue count
|
|
48
|
-
Given a directory called 'smelly' containing two smelly files
|
|
49
|
-
When I run reek <option> smelly
|
|
50
|
-
Then the exit status indicates smells
|
|
51
|
-
And it reports:
|
|
52
|
-
"""
|
|
53
|
-
smelly/dirty_two.rb -- 2 warnings:
|
|
54
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
55
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
56
|
-
smelly/dirty_one.rb -- 2 warnings:
|
|
57
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
58
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
59
|
-
4 total warnings
|
|
60
|
-
"""
|
|
61
|
-
|
|
62
|
-
Examples:
|
|
63
|
-
| option |
|
|
64
|
-
| --sort-by smelliness |
|
|
65
|
-
| --sort-by s |
|
|
66
|
-
|
|
67
|
-
Scenario: good files show no headings by default
|
|
68
|
-
Given a directory called 'clean' containing two clean files
|
|
69
|
-
When I run reek clean
|
|
70
|
-
Then it succeeds
|
|
71
|
-
And it reports:
|
|
72
|
-
"""
|
|
73
|
-
0 total warnings
|
|
74
|
-
"""
|
|
75
|
-
|
|
76
|
-
Scenario Outline: --empty-headings turns on headings for fragrant files
|
|
77
|
-
Given a directory called 'clean' containing two clean files
|
|
78
|
-
When I run reek <option> clean
|
|
79
|
-
Then it succeeds
|
|
80
|
-
And it reports:
|
|
81
|
-
"""
|
|
82
|
-
clean/clean_one.rb -- 0 warnings
|
|
83
|
-
clean/clean_two.rb -- 0 warnings
|
|
84
|
-
0 total warnings
|
|
85
|
-
"""
|
|
86
|
-
|
|
87
|
-
Examples:
|
|
88
|
-
| option |
|
|
89
|
-
| --empty-headings |
|
|
90
|
-
| -V |
|
|
91
|
-
|
|
92
|
-
Scenario Outline: --no-empty-headings turns off headings for fragrant files
|
|
93
|
-
Given a directory called 'clean' containing two clean files
|
|
94
|
-
When I run reek <option> clean
|
|
95
|
-
Then it succeeds
|
|
96
|
-
And it reports:
|
|
97
|
-
"""
|
|
98
|
-
0 total warnings
|
|
99
|
-
"""
|
|
100
|
-
|
|
101
|
-
Examples:
|
|
102
|
-
| option |
|
|
103
|
-
| --no-empty-headings |
|
|
104
|
-
| -V --no-empty-headings |
|
|
105
|
-
|
|
106
|
-
Scenario Outline: --no-line-numbers turns off line numbers
|
|
107
|
-
Given the smelly file 'smelly.rb'
|
|
108
|
-
When I run reek <option> smelly.rb
|
|
109
|
-
Then the exit status indicates smells
|
|
110
|
-
And it reports:
|
|
111
|
-
"""
|
|
112
|
-
smelly.rb -- 2 warnings:
|
|
113
|
-
UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
114
|
-
UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
115
|
-
"""
|
|
116
|
-
|
|
117
|
-
Examples:
|
|
118
|
-
| option |
|
|
119
|
-
| --no-line-numbers |
|
|
120
|
-
| --no-line-numbers -V |
|
|
121
|
-
| -V --no-line-numbers |
|
|
122
|
-
|
|
123
|
-
Scenario Outline: --line-numbers turns on line numbers
|
|
124
|
-
Given the smelly file 'smelly.rb'
|
|
125
|
-
When I run reek <option> smelly.rb
|
|
126
|
-
Then the exit status indicates smells
|
|
127
|
-
And it reports:
|
|
128
|
-
"""
|
|
129
|
-
smelly.rb -- 2 warnings:
|
|
130
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
131
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
132
|
-
"""
|
|
133
|
-
|
|
134
|
-
Examples:
|
|
135
|
-
| option |
|
|
136
|
-
| --line-numbers |
|
|
137
|
-
| --no-line-numbers --line-numbers |
|
|
138
|
-
| --no-line-numbers -n |
|
|
139
|
-
|
|
140
|
-
Scenario Outline: --single-line shows filename and one line number
|
|
141
|
-
Given the smelly file 'smelly.rb'
|
|
142
|
-
When I run reek <option> smelly.rb
|
|
143
|
-
Then the exit status indicates smells
|
|
144
|
-
And it reports:
|
|
145
|
-
"""
|
|
146
|
-
smelly.rb -- 2 warnings:
|
|
147
|
-
smelly.rb:4: UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
148
|
-
smelly.rb:5: UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
149
|
-
"""
|
|
150
|
-
|
|
151
|
-
Examples:
|
|
152
|
-
| option |
|
|
153
|
-
| -s |
|
|
154
|
-
| --single-line |
|
|
155
|
-
| -s -V |
|
|
156
|
-
| -V -s |
|
|
157
|
-
|
|
158
|
-
Scenario Outline: Extra slashes aren't added to directory names
|
|
159
|
-
Given a directory called 'smelly' containing two smelly files
|
|
160
|
-
When I run reek <args>
|
|
161
|
-
Then the exit status indicates smells
|
|
162
|
-
And it reports:
|
|
163
|
-
"""
|
|
164
|
-
smelly/dirty_one.rb -- 2 warnings:
|
|
165
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
166
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
167
|
-
smelly/dirty_two.rb -- 2 warnings:
|
|
168
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
169
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
170
|
-
4 total warnings
|
|
171
|
-
"""
|
|
172
|
-
|
|
173
|
-
Examples:
|
|
174
|
-
| args |
|
|
175
|
-
| smelly/ |
|
|
176
|
-
| smelly |
|
|
177
|
-
|
|
178
|
-
Scenario Outline: -U or --documentation adds helpful links to smell warnings
|
|
179
|
-
Given the smelly file 'smelly.rb'
|
|
180
|
-
When I run reek <option> smelly.rb
|
|
181
|
-
Then the exit status indicates smells
|
|
182
|
-
And it reports:
|
|
183
|
-
"""
|
|
184
|
-
smelly.rb -- 2 warnings:
|
|
185
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x' [https://github.com/troessner/reek/blob/v6.0.2/docs/Uncommunicative-Method-Name.md]
|
|
186
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y' [https://github.com/troessner/reek/blob/v6.0.2/docs/Uncommunicative-Variable-Name.md]
|
|
187
|
-
"""
|
|
188
|
-
|
|
189
|
-
Examples:
|
|
190
|
-
| option |
|
|
191
|
-
| -U |
|
|
192
|
-
| --documentation |
|
|
193
|
-
|
|
194
|
-
Scenario: --no-documentation drops links from smell warnings
|
|
195
|
-
Given the smelly file 'smelly.rb'
|
|
196
|
-
When I run reek --no-documentation smelly.rb
|
|
197
|
-
Then the exit status indicates smells
|
|
198
|
-
And it reports:
|
|
199
|
-
"""
|
|
200
|
-
smelly.rb -- 2 warnings:
|
|
201
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
202
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
203
|
-
"""
|
|
204
|
-
|
|
205
|
-
Scenario Outline: --documentation is independent of --line-numbers
|
|
206
|
-
Given the smelly file 'smelly.rb'
|
|
207
|
-
When I run reek <option> smelly.rb
|
|
208
|
-
Then the exit status indicates smells
|
|
209
|
-
And it reports:
|
|
210
|
-
"""
|
|
211
|
-
smelly.rb -- 2 warnings:
|
|
212
|
-
UncommunicativeMethodName: Smelly#x has the name 'x' [https://github.com/troessner/reek/blob/v6.0.2/docs/Uncommunicative-Method-Name.md]
|
|
213
|
-
UncommunicativeVariableName: Smelly#x has the variable name 'y' [https://github.com/troessner/reek/blob/v6.0.2/docs/Uncommunicative-Variable-Name.md]
|
|
214
|
-
"""
|
|
215
|
-
|
|
216
|
-
Examples:
|
|
217
|
-
| option |
|
|
218
|
-
| --no-line-numbers -U |
|
|
219
|
-
| --no-line-numbers --documentation |
|