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
@@ -1,96 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
|
3
|
-
require_lib 'reek/smell_detectors/instance_variable_assumption'
|
4
|
-
|
5
|
-
RSpec.describe Reek::SmellDetectors::InstanceVariableAssumption do
|
6
|
-
it 'reports the right values' do
|
7
|
-
src = <<-RUBY
|
8
|
-
class Alfa
|
9
|
-
def bravo
|
10
|
-
@charlie
|
11
|
-
end
|
12
|
-
end
|
13
|
-
RUBY
|
14
|
-
|
15
|
-
expect(src).to reek_of(:InstanceVariableAssumption,
|
16
|
-
lines: [1],
|
17
|
-
context: 'Alfa',
|
18
|
-
message: "assumes too much for instance variable '@charlie'",
|
19
|
-
source: 'string',
|
20
|
-
assumption: '@charlie')
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'does count all occurences' do
|
24
|
-
src = <<-RUBY
|
25
|
-
class Alfa
|
26
|
-
def bravo
|
27
|
-
@charlie
|
28
|
-
end
|
29
|
-
|
30
|
-
def delta
|
31
|
-
@echo
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
RUBY
|
36
|
-
|
37
|
-
expect(src).
|
38
|
-
to reek_of(:InstanceVariableAssumption, lines: [1], assumption: '@charlie').
|
39
|
-
and reek_of(:InstanceVariableAssumption, lines: [1], assumption: '@echo')
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'does not report an empty class' do
|
43
|
-
src = <<-RUBY
|
44
|
-
class Alfa
|
45
|
-
end
|
46
|
-
RUBY
|
47
|
-
|
48
|
-
expect(src).not_to reek_of(:InstanceVariableAssumption)
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'does not report when lazy initializing' do
|
52
|
-
src = <<-RUBY
|
53
|
-
class Alfa
|
54
|
-
def bravo
|
55
|
-
@charlie ||= 1
|
56
|
-
end
|
57
|
-
end
|
58
|
-
RUBY
|
59
|
-
|
60
|
-
expect(src).not_to reek_of(:InstanceVariableAssumption)
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'reports variable even if others are initialized' do
|
64
|
-
src = <<-RUBY
|
65
|
-
class Alfa
|
66
|
-
def initialize
|
67
|
-
@bravo = 1
|
68
|
-
end
|
69
|
-
|
70
|
-
def charlie
|
71
|
-
[@bravo, @delta]
|
72
|
-
end
|
73
|
-
end
|
74
|
-
RUBY
|
75
|
-
|
76
|
-
expect(src).to reek_of(:InstanceVariableAssumption, assumption: '@delta')
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'reports inner class even if outer class initializes the variable' do
|
80
|
-
src = <<-RUBY
|
81
|
-
class Alfa
|
82
|
-
def initialize
|
83
|
-
@bravo = 1
|
84
|
-
end
|
85
|
-
|
86
|
-
class Charlie
|
87
|
-
def delta
|
88
|
-
@bravo
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
RUBY
|
93
|
-
|
94
|
-
expect(src).to reek_of(:InstanceVariableAssumption, context: 'Alfa::Charlie')
|
95
|
-
end
|
96
|
-
end
|
@@ -1,226 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
require_lib 'reek/smell_detectors/irresponsible_module'
|
3
|
-
|
4
|
-
RSpec.describe Reek::SmellDetectors::IrresponsibleModule do
|
5
|
-
it 'reports the right values' do
|
6
|
-
src = <<-RUBY
|
7
|
-
class Alfa
|
8
|
-
end
|
9
|
-
RUBY
|
10
|
-
|
11
|
-
expect(src).to reek_of(:IrresponsibleModule,
|
12
|
-
lines: [1],
|
13
|
-
context: 'Alfa',
|
14
|
-
message: 'has no descriptive comment',
|
15
|
-
source: 'string')
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'does count all occurences' do
|
19
|
-
src = <<-RUBY
|
20
|
-
class Alfa
|
21
|
-
# Method is necessary because we don't count namespace classes.
|
22
|
-
def bravo; end
|
23
|
-
class Charlie
|
24
|
-
end
|
25
|
-
end
|
26
|
-
RUBY
|
27
|
-
|
28
|
-
expect(src).
|
29
|
-
to reek_of(:IrresponsibleModule, lines: [1], context: 'Alfa').
|
30
|
-
and reek_of(:IrresponsibleModule, lines: [4], context: 'Alfa::Charlie')
|
31
|
-
end
|
32
|
-
|
33
|
-
%w(class module).each do |scope|
|
34
|
-
it "reports a #{scope} without a comment" do
|
35
|
-
src = <<-RUBY
|
36
|
-
#{scope} Alfa
|
37
|
-
end
|
38
|
-
RUBY
|
39
|
-
|
40
|
-
expect(src).to reek_of(:IrresponsibleModule)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "does not report a #{scope} having a comment" do
|
44
|
-
src = <<-RUBY
|
45
|
-
# Do not report me, I'm responsible!
|
46
|
-
#{scope} Alfa; end
|
47
|
-
RUBY
|
48
|
-
|
49
|
-
expect(src).not_to reek_of(:IrresponsibleModule)
|
50
|
-
end
|
51
|
-
|
52
|
-
it "reports a #{scope} with an empty comment" do
|
53
|
-
src = <<-RUBY
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#{scope} Alfa; end
|
58
|
-
RUBY
|
59
|
-
|
60
|
-
expect(src).to reek_of(:IrresponsibleModule)
|
61
|
-
end
|
62
|
-
|
63
|
-
it "reports a #{scope} with a preceding comment with intermittent material" do
|
64
|
-
src = <<-RUBY
|
65
|
-
# This is a comment that should not be related to Bravo
|
66
|
-
|
67
|
-
require 'alfa'
|
68
|
-
|
69
|
-
#{scope} Bravo
|
70
|
-
end
|
71
|
-
RUBY
|
72
|
-
|
73
|
-
expect(src).to reek_of(:IrresponsibleModule)
|
74
|
-
end
|
75
|
-
|
76
|
-
it "reports a #{scope} with only a trailing comment" do
|
77
|
-
src = <<-RUBY
|
78
|
-
#{scope} Alfa
|
79
|
-
end # This belongs to Alfa but doesn't count
|
80
|
-
RUBY
|
81
|
-
|
82
|
-
expect(src).to reek_of(:IrresponsibleModule)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "does not report #{scope} used only as a namespace" do
|
86
|
-
src = <<-RUBY
|
87
|
-
#{scope} Alfa
|
88
|
-
# Describes Bravo
|
89
|
-
#{scope} Bravo
|
90
|
-
def charlie
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
RUBY
|
95
|
-
|
96
|
-
expect(src).not_to reek_of(:IrresponsibleModule, context: 'Alfa')
|
97
|
-
end
|
98
|
-
|
99
|
-
it "does not report #{scope} used only as a namespace for several nested moduless" do
|
100
|
-
src = <<-RUBY
|
101
|
-
#{scope} Alfa
|
102
|
-
# Describes Bravo
|
103
|
-
class Bravo
|
104
|
-
def charlie
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
# Describes Delta
|
109
|
-
module Delta
|
110
|
-
end
|
111
|
-
end
|
112
|
-
RUBY
|
113
|
-
|
114
|
-
expect(src).not_to reek_of(:IrresponsibleModule, context: 'Alfa')
|
115
|
-
end
|
116
|
-
|
117
|
-
it "reports #{scope} that is used as a namespace but also has methods" do
|
118
|
-
src = <<-RUBY
|
119
|
-
#{scope} Alfa
|
120
|
-
def bravo
|
121
|
-
end
|
122
|
-
|
123
|
-
# Describes Charlie
|
124
|
-
#{scope} Charlie
|
125
|
-
end
|
126
|
-
end
|
127
|
-
RUBY
|
128
|
-
|
129
|
-
expect(src).to reek_of(:IrresponsibleModule, context: 'Alfa')
|
130
|
-
end
|
131
|
-
|
132
|
-
it "reports #{scope} that is used as a namespace but also has singleton methods" do
|
133
|
-
src = <<-RUBY
|
134
|
-
#{scope} Alfa
|
135
|
-
def self.bravo
|
136
|
-
end
|
137
|
-
|
138
|
-
# Describes Charlie
|
139
|
-
#{scope} Charlie
|
140
|
-
end
|
141
|
-
end
|
142
|
-
RUBY
|
143
|
-
|
144
|
-
expect(src).to reek_of(:IrresponsibleModule, context: 'Alfa')
|
145
|
-
end
|
146
|
-
|
147
|
-
it "does not report a namespace #{scope} that has a nested class through assignment" do
|
148
|
-
src = <<-RUBY
|
149
|
-
#{scope} Alfa
|
150
|
-
# Bravo is responsible
|
151
|
-
Bravo = Class.new Charlie do
|
152
|
-
def delta; end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
RUBY
|
156
|
-
|
157
|
-
expect(src).not_to reek_of(:IrresponsibleModule, context: 'Alfa')
|
158
|
-
end
|
159
|
-
|
160
|
-
it "does not report #{scope} only containing constants" do
|
161
|
-
src = <<-RUBY
|
162
|
-
#{scope} Alfa
|
163
|
-
Bravo = 23
|
164
|
-
end
|
165
|
-
RUBY
|
166
|
-
|
167
|
-
expect(src).not_to reek_of(:IrresponsibleModule, context: 'Alfa')
|
168
|
-
end
|
169
|
-
|
170
|
-
it "reports #{scope} that contains method calls" do
|
171
|
-
src = <<-RUBY
|
172
|
-
#{scope} Alfa
|
173
|
-
bravo :charlie
|
174
|
-
end
|
175
|
-
RUBY
|
176
|
-
|
177
|
-
expect(src).to reek_of(:IrresponsibleModule, context: 'Alfa')
|
178
|
-
end
|
179
|
-
|
180
|
-
it "reports #{scope} that contains non-constant assignments" do
|
181
|
-
src = <<-RUBY
|
182
|
-
#{scope} Alfa
|
183
|
-
bravo = charlie
|
184
|
-
end
|
185
|
-
RUBY
|
186
|
-
|
187
|
-
expect(src).to reek_of(:IrresponsibleModule, context: 'Alfa')
|
188
|
-
end
|
189
|
-
|
190
|
-
it "reports an irresponsible #{scope} defined through assignment" do
|
191
|
-
src = <<-RUBY
|
192
|
-
# Alfa is responsible, but Bravo is not
|
193
|
-
#{scope} Alfa
|
194
|
-
Bravo = Class.new Charlie # Only "class" is supposed to reek here.
|
195
|
-
end
|
196
|
-
RUBY
|
197
|
-
|
198
|
-
expect(src).to reek_of(:IrresponsibleModule, context: 'Alfa::Bravo')
|
199
|
-
end
|
200
|
-
|
201
|
-
it 'reports structs defined through assignment' do
|
202
|
-
src = <<-RUBY
|
203
|
-
# Alfa is responsible, but Bravo is not
|
204
|
-
#{scope} Alfa
|
205
|
-
Bravo = Struct.new(:charlie)
|
206
|
-
end
|
207
|
-
RUBY
|
208
|
-
|
209
|
-
expect(src).to reek_of(:IrresponsibleModule, context: 'Alfa::Bravo')
|
210
|
-
end
|
211
|
-
|
212
|
-
it 'does not report constants that are not classes' do
|
213
|
-
src = <<-RUBY
|
214
|
-
# Alfa is responsible
|
215
|
-
#{scope} Alfa
|
216
|
-
Bravo = 23
|
217
|
-
Charlie = Hash.new
|
218
|
-
Delta = ''.freeze
|
219
|
-
Echo = Class.new.new
|
220
|
-
end
|
221
|
-
RUBY
|
222
|
-
|
223
|
-
expect(src).not_to reek_of(:IrresponsibleModule)
|
224
|
-
end
|
225
|
-
end
|
226
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
require_lib 'reek/smell_detectors/long_parameter_list'
|
3
|
-
|
4
|
-
RSpec.describe Reek::SmellDetectors::LongParameterList do
|
5
|
-
it 'reports the right values' do
|
6
|
-
src = <<-RUBY
|
7
|
-
class Alfa
|
8
|
-
def bravo(charlie, delta, echo, foxtrot)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
RUBY
|
12
|
-
|
13
|
-
expect(src).to reek_of(:LongParameterList,
|
14
|
-
lines: [2],
|
15
|
-
context: 'Alfa#bravo',
|
16
|
-
message: 'has 4 parameters',
|
17
|
-
source: 'string',
|
18
|
-
count: 4)
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'does count all occurences' do
|
22
|
-
src = <<-RUBY
|
23
|
-
class Alfa
|
24
|
-
def bravo(charlie, delta, echo, foxtrot)
|
25
|
-
end
|
26
|
-
|
27
|
-
def golf(hotel, india, juliett, kilo)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
RUBY
|
31
|
-
|
32
|
-
expect(src).
|
33
|
-
to reek_of(:LongParameterList, lines: [2], context: 'Alfa#bravo').
|
34
|
-
and reek_of(:LongParameterList, lines: [5], context: 'Alfa#golf')
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'reports nothing for 3 parameters' do
|
38
|
-
src = 'def alfa(bravo, charlie, delta); end'
|
39
|
-
expect(src).not_to reek_of(:LongParameterList)
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'does not count an optional block' do
|
43
|
-
src = 'def alfa(bravo, charlie, delta, &block); end'
|
44
|
-
expect(src).not_to reek_of(:LongParameterList)
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'does not report inner block with too many parameters' do
|
48
|
-
src = <<-RUBY
|
49
|
-
def alfa(bravo)
|
50
|
-
bravo.each { |charlie, delta, echo, foxtrot| }
|
51
|
-
end
|
52
|
-
RUBY
|
53
|
-
|
54
|
-
expect(src).not_to reek_of(:LongParameterList)
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'reports 4 parameters with default parameters' do
|
58
|
-
src = 'def alfa(bravo = 1, charlie = 2, delta = 3, echo = 4); end'
|
59
|
-
expect(src).to reek_of(:LongParameterList)
|
60
|
-
end
|
61
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
require_lib 'reek/smell_detectors/long_yield_list'
|
3
|
-
|
4
|
-
RSpec.describe Reek::SmellDetectors::LongYieldList do
|
5
|
-
it 'reports the right values' do
|
6
|
-
src = <<-RUBY
|
7
|
-
class Alfa
|
8
|
-
def bravo(charlie, delta, echo, foxtrot)
|
9
|
-
yield charlie, delta, echo, foxtrot
|
10
|
-
end
|
11
|
-
end
|
12
|
-
RUBY
|
13
|
-
|
14
|
-
expect(src).to reek_of(:LongYieldList,
|
15
|
-
lines: [3],
|
16
|
-
context: 'Alfa#bravo',
|
17
|
-
message: 'yields 4 parameters',
|
18
|
-
source: 'string',
|
19
|
-
count: 4)
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'does count all occurences' do
|
23
|
-
src = <<-RUBY
|
24
|
-
class Alfa
|
25
|
-
def bravo(charlie, delta, echo, foxtrot)
|
26
|
-
yield charlie, delta, echo, foxtrot
|
27
|
-
end
|
28
|
-
|
29
|
-
def golf(hotel, india, juliett, kilo)
|
30
|
-
yield hotel, india, juliett, kilo
|
31
|
-
end
|
32
|
-
end
|
33
|
-
RUBY
|
34
|
-
|
35
|
-
expect(src).
|
36
|
-
to reek_of(:LongYieldList, lines: [3], context: 'Alfa#bravo').
|
37
|
-
and reek_of(:LongYieldList, lines: [7], context: 'Alfa#golf')
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'does not report yield with 3 parameters' do
|
41
|
-
src = <<-RUBY
|
42
|
-
def alfa(bravo, charlie, delta)
|
43
|
-
yield bravo, charlie, delta
|
44
|
-
end
|
45
|
-
RUBY
|
46
|
-
|
47
|
-
expect(src).not_to reek_of(:LongYieldList)
|
48
|
-
end
|
49
|
-
end
|
@@ -1,75 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
require_lib 'reek/smell_detectors/too_many_constants'
|
3
|
-
|
4
|
-
RSpec.describe Reek::SmellDetectors::ManualDispatch do
|
5
|
-
it 'reports the right values' do
|
6
|
-
src = <<-RUBY
|
7
|
-
class Alfa
|
8
|
-
def bravo(charlie)
|
9
|
-
true if charlie.respond_to?(:to_a)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
RUBY
|
13
|
-
|
14
|
-
expect(src).to reek_of(:ManualDispatch,
|
15
|
-
lines: [3],
|
16
|
-
context: 'Alfa#bravo',
|
17
|
-
message: 'manually dispatches method call',
|
18
|
-
source: 'string')
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'does count all occurences' do
|
22
|
-
src = <<-RUBY
|
23
|
-
class Alfa
|
24
|
-
def bravo(charlie)
|
25
|
-
true if charlie.respond_to?(:to_a)
|
26
|
-
end
|
27
|
-
|
28
|
-
def delta(echo)
|
29
|
-
true if echo.respond_to?(:to_a)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
RUBY
|
33
|
-
|
34
|
-
expect(src).
|
35
|
-
to reek_of(:ManualDispatch, lines: [3], context: 'Alfa#bravo').
|
36
|
-
and reek_of(:ManualDispatch, lines: [7], context: 'Alfa#delta')
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'reports manual dispatch smell when using #respond_to? on implicit self' do
|
40
|
-
src = <<-RUBY
|
41
|
-
class Alfa
|
42
|
-
def bravo
|
43
|
-
charlie if respond_to?(:delta)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
RUBY
|
47
|
-
|
48
|
-
expect(src).to reek_of(:ManualDispatch)
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'reports manual dispatch within a conditional' do
|
52
|
-
src = <<-RUBY
|
53
|
-
class Alfa
|
54
|
-
def bravo
|
55
|
-
charlie.respond_to?(:delta) && charlie.echo
|
56
|
-
end
|
57
|
-
end
|
58
|
-
RUBY
|
59
|
-
|
60
|
-
expect(src).to reek_of(:ManualDispatch)
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'reports occurences in a single method as one smell warning' do
|
64
|
-
src = <<-RUBY
|
65
|
-
class Alfa
|
66
|
-
def bravo(charlie, delta)
|
67
|
-
return true if charlie.respond_to?(:to_a)
|
68
|
-
true if delta.respond_to?(:to_a)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
RUBY
|
72
|
-
|
73
|
-
expect(src).to reek_of(:ManualDispatch, lines: [3, 4], context: 'Alfa#bravo')
|
74
|
-
end
|
75
|
-
end
|