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,100 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
require_lib 'reek/smell_detectors/nil_check'
|
3
|
-
|
4
|
-
RSpec.describe Reek::SmellDetectors::NilCheck do
|
5
|
-
it 'reports the right values' do
|
6
|
-
src = <<-RUBY
|
7
|
-
def alfa(bravo)
|
8
|
-
bravo.nil?
|
9
|
-
end
|
10
|
-
RUBY
|
11
|
-
|
12
|
-
expect(src).to reek_of(:NilCheck,
|
13
|
-
lines: [2],
|
14
|
-
context: 'alfa',
|
15
|
-
message: 'performs a nil-check',
|
16
|
-
source: 'string')
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'does count all occurences' do
|
20
|
-
src = <<-RUBY
|
21
|
-
def alfa(bravo, charlie)
|
22
|
-
bravo.nil?
|
23
|
-
charlie.nil?
|
24
|
-
end
|
25
|
-
RUBY
|
26
|
-
|
27
|
-
expect(src).to reek_of(:NilCheck,
|
28
|
-
lines: [2, 3],
|
29
|
-
context: 'alfa')
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'reports nothing when scope includes no nil checks' do
|
33
|
-
src = 'def alfa; end'
|
34
|
-
expect(src).not_to reek_of(:NilCheck)
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'reports when scope uses == nil' do
|
38
|
-
src = <<-RUBY
|
39
|
-
def alfa(bravo)
|
40
|
-
bravo == nil
|
41
|
-
end
|
42
|
-
RUBY
|
43
|
-
|
44
|
-
expect(src).to reek_of(:NilCheck)
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'reports when scope uses === nil' do
|
48
|
-
src = <<-RUBY
|
49
|
-
def alfa(bravo)
|
50
|
-
bravo === nil
|
51
|
-
end
|
52
|
-
RUBY
|
53
|
-
|
54
|
-
expect(src).to reek_of(:NilCheck)
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'reports when scope uses nil ==' do
|
58
|
-
src = <<-RUBY
|
59
|
-
def alfa(bravo)
|
60
|
-
nil == bravo
|
61
|
-
end
|
62
|
-
RUBY
|
63
|
-
|
64
|
-
expect(src).to reek_of(:NilCheck)
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'reports when scope uses a case-clause checking nil' do
|
68
|
-
src = <<-RUBY
|
69
|
-
def alfa(bravo)
|
70
|
-
case bravo
|
71
|
-
when nil then puts "Nil"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
RUBY
|
75
|
-
|
76
|
-
expect(src).to reek_of(:NilCheck)
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'does not report when scope uses &.' do
|
80
|
-
src = <<-RUBY
|
81
|
-
def alfa(bravo)
|
82
|
-
bravo&.charlie
|
83
|
-
end
|
84
|
-
RUBY
|
85
|
-
|
86
|
-
expect(src).not_to reek_of(:NilCheck)
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'reports all lines when scope uses multiple nilchecks' do
|
90
|
-
src = <<-RUBY
|
91
|
-
def alfa(bravo)
|
92
|
-
bravo.nil?
|
93
|
-
@charlie === nil
|
94
|
-
delta&.echo
|
95
|
-
end
|
96
|
-
RUBY
|
97
|
-
|
98
|
-
expect(src).to reek_of(:NilCheck, lines: [2, 3])
|
99
|
-
end
|
100
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
require_lib 'reek/smell_detectors/repeated_conditional'
|
3
|
-
|
4
|
-
RSpec.describe Reek::SmellDetectors::RepeatedConditional do
|
5
|
-
it 'reports the right values' do
|
6
|
-
src = <<-RUBY
|
7
|
-
class Alfa
|
8
|
-
attr_accessor :bravo
|
9
|
-
|
10
|
-
def charlie
|
11
|
-
puts "Repeat 1!" if bravo
|
12
|
-
end
|
13
|
-
|
14
|
-
def delta
|
15
|
-
puts "Repeat 2!" if bravo
|
16
|
-
end
|
17
|
-
|
18
|
-
def echo
|
19
|
-
puts "Repeat 3!" if bravo
|
20
|
-
end
|
21
|
-
end
|
22
|
-
RUBY
|
23
|
-
|
24
|
-
expect(src).to reek_of(:RepeatedConditional,
|
25
|
-
lines: [5, 9, 13],
|
26
|
-
context: 'Alfa',
|
27
|
-
message: "tests 'bravo' at least 3 times",
|
28
|
-
source: 'string',
|
29
|
-
name: 'bravo',
|
30
|
-
count: 3)
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'does count all occurences' do
|
34
|
-
src = <<-RUBY
|
35
|
-
class Alfa
|
36
|
-
attr_accessor :bravo
|
37
|
-
|
38
|
-
def charlie
|
39
|
-
puts "Repeat 1!" if bravo
|
40
|
-
puts "And again!" if bravo
|
41
|
-
end
|
42
|
-
|
43
|
-
def delta
|
44
|
-
puts "Repeat 2!" if bravo
|
45
|
-
end
|
46
|
-
|
47
|
-
def echo
|
48
|
-
puts "Repeat 3!" if bravo
|
49
|
-
end
|
50
|
-
end
|
51
|
-
RUBY
|
52
|
-
|
53
|
-
expect(src).to reek_of(:RepeatedConditional,
|
54
|
-
lines: [5, 6, 10, 14],
|
55
|
-
count: 4)
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'does not report two repeated conditionals' do
|
59
|
-
src = <<-RUBY
|
60
|
-
class Alfa
|
61
|
-
attr_accessor :bravo
|
62
|
-
|
63
|
-
def charlie
|
64
|
-
puts "Repeat 1!" if bravo
|
65
|
-
end
|
66
|
-
|
67
|
-
def delta
|
68
|
-
puts "Repeat 2!" if bravo
|
69
|
-
end
|
70
|
-
end
|
71
|
-
RUBY
|
72
|
-
|
73
|
-
expect(src).not_to reek_of(:RepeatedConditional)
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'reports repeated conditionals regardless of `if` or `case` statements' do
|
77
|
-
src = <<-RUBY
|
78
|
-
class Alfa
|
79
|
-
attr_accessor :bravo
|
80
|
-
|
81
|
-
def charlie
|
82
|
-
puts "Repeat 1!" if bravo
|
83
|
-
end
|
84
|
-
|
85
|
-
def delta
|
86
|
-
case bravo
|
87
|
-
when 1 then puts "Repeat 2!"
|
88
|
-
else 'nothing'
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def echo
|
93
|
-
puts "Repeat 3!" if bravo
|
94
|
-
end
|
95
|
-
end
|
96
|
-
RUBY
|
97
|
-
|
98
|
-
expect(src).to reek_of(:RepeatedConditional)
|
99
|
-
end
|
100
|
-
end
|
@@ -1,77 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
require_lib 'reek/smell_detectors/subclassed_from_core_class'
|
3
|
-
|
4
|
-
RSpec.describe Reek::SmellDetectors::SubclassedFromCoreClass do
|
5
|
-
it 'reports the right values' do
|
6
|
-
src = <<-RUBY
|
7
|
-
class Alfa < Hash
|
8
|
-
end
|
9
|
-
RUBY
|
10
|
-
|
11
|
-
expect(src).to reek_of(:SubclassedFromCoreClass,
|
12
|
-
lines: [1],
|
13
|
-
context: 'Alfa',
|
14
|
-
message: "inherits from core class 'Hash'",
|
15
|
-
source: 'string',
|
16
|
-
ancestor: 'Hash')
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'reports when inheriting from a core class inside a module' do
|
20
|
-
src = <<-RUBY
|
21
|
-
module Alfa
|
22
|
-
class Bravo < Hash
|
23
|
-
end
|
24
|
-
end
|
25
|
-
RUBY
|
26
|
-
|
27
|
-
expect(src).to reek_of(:SubclassedFromCoreClass, context: 'Alfa::Bravo')
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'does not report when not inheriting from a core class' do
|
31
|
-
src = <<-RUBY
|
32
|
-
class Alfa
|
33
|
-
end
|
34
|
-
RUBY
|
35
|
-
|
36
|
-
expect(src).not_to reek_of(:SubclassedFromCoreClass)
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'does not report on coincidental core class names in other namespaces' do
|
40
|
-
src = <<-RUBY
|
41
|
-
class Alfa < Bravo::Array
|
42
|
-
end
|
43
|
-
RUBY
|
44
|
-
|
45
|
-
expect(src).not_to reek_of(:SubclassedFromCoreClass)
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'reports if inner class inherit from a core class' do
|
49
|
-
src = <<-RUBY
|
50
|
-
class Alfa
|
51
|
-
Bravo = Class.new(Array)
|
52
|
-
end
|
53
|
-
RUBY
|
54
|
-
|
55
|
-
expect(src).to reek_of(:SubclassedFromCoreClass, context: 'Alfa::Bravo')
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'reports class which inherits from core class via Class.new' do
|
59
|
-
src = 'Alfa = Class.new(Array)'
|
60
|
-
expect(src).to reek_of(:SubclassedFromCoreClass)
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'does not report class which inherits from allowed class via Class.new' do
|
64
|
-
src = 'Alfa = Class.new(StandardError)'
|
65
|
-
expect(src).not_to reek_of(:SubclassedFromCoreClass)
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'does not report classes created with Struct.new' do
|
69
|
-
src = "Alfa = Struct.new('Array')"
|
70
|
-
expect(src).not_to reek_of(:SubclassedFromCoreClass)
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'does not report class created by another class constructor taking a core class as argument' do
|
74
|
-
src = 'Charlie = Delta.new(Array)'
|
75
|
-
expect(src).not_to reek_of(:SubclassedFromCoreClass)
|
76
|
-
end
|
77
|
-
end
|
@@ -1,144 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
require_lib 'reek/smell_detectors/too_many_constants'
|
3
|
-
|
4
|
-
RSpec.describe Reek::SmellDetectors::TooManyConstants do
|
5
|
-
let(:config) do
|
6
|
-
{ Reek::SmellDetectors::TooManyConstants::MAX_ALLOWED_CONSTANTS_KEY => 2 }
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'reports the right values' do
|
10
|
-
src = <<-RUBY
|
11
|
-
class Alfa
|
12
|
-
Bravo = Charlie = Delta = 1
|
13
|
-
end
|
14
|
-
RUBY
|
15
|
-
|
16
|
-
expect(src).to reek_of(:TooManyConstants,
|
17
|
-
lines: [1],
|
18
|
-
context: 'Alfa',
|
19
|
-
message: 'has 3 constants',
|
20
|
-
source: 'string',
|
21
|
-
count: 3).with_config(config)
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'does not report for non-excessive constants' do
|
25
|
-
src = <<-RUBY
|
26
|
-
class Alfa
|
27
|
-
Bravo = Charlie = 1
|
28
|
-
end
|
29
|
-
RUBY
|
30
|
-
|
31
|
-
expect(src).not_to reek_of(:TooManyConstants).with_config(config)
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'does not report when increasing default' do
|
35
|
-
src = <<-RUBY
|
36
|
-
# :reek:TooManyConstants { max_constants: 3 }
|
37
|
-
class Alfa
|
38
|
-
Bravo = Charlie = Delta = 1
|
39
|
-
end
|
40
|
-
RUBY
|
41
|
-
|
42
|
-
expect(src).not_to reek_of(:TooManyConstants).with_config(config)
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'does not report when disabled' do
|
46
|
-
src = <<-RUBY
|
47
|
-
# :reek:TooManyConstants { enabled: false }
|
48
|
-
class Alfa
|
49
|
-
Bravo = Charlie = Delta = 1
|
50
|
-
end
|
51
|
-
RUBY
|
52
|
-
|
53
|
-
expect(src).not_to reek_of(:TooManyConstants).with_config(config)
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'does not account class definition' do
|
57
|
-
src = <<-RUBY
|
58
|
-
class Alfa
|
59
|
-
Bravo = Charlie = 1
|
60
|
-
Delta = Class.new(StandardError)
|
61
|
-
end
|
62
|
-
RUBY
|
63
|
-
|
64
|
-
expect(src).not_to reek_of(:TooManyConstants).with_config(config)
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'does not account struct definition' do
|
68
|
-
src = <<-RUBY
|
69
|
-
class Alfa
|
70
|
-
Bravo = Charlie = 1
|
71
|
-
Delta = Struct.new
|
72
|
-
end
|
73
|
-
RUBY
|
74
|
-
|
75
|
-
expect(src).not_to reek_of(:TooManyConstants).with_config(config)
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'counts each constant only once' do
|
79
|
-
src = <<-RUBY
|
80
|
-
class Alfa
|
81
|
-
Bravo = Charlie = 1
|
82
|
-
end
|
83
|
-
|
84
|
-
class Delta
|
85
|
-
Echo = Foxtrot = 1
|
86
|
-
end
|
87
|
-
|
88
|
-
class Golf
|
89
|
-
Hotel = India = 1
|
90
|
-
end
|
91
|
-
RUBY
|
92
|
-
|
93
|
-
expect(src).not_to reek_of(:TooManyConstants).with_config(config)
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'does not report outer module when inner module suppressed' do
|
97
|
-
src = <<-RUBY
|
98
|
-
module Alfa
|
99
|
-
# ignore :reek:TooManyConstants
|
100
|
-
module Bravo
|
101
|
-
Charlie = Delta = Echo = 1
|
102
|
-
end
|
103
|
-
end
|
104
|
-
RUBY
|
105
|
-
|
106
|
-
expect(src).not_to reek_of(:TooManyConstants).with_config(config)
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'counts each constant only once for each namespace' do
|
110
|
-
src = <<-RUBY
|
111
|
-
module Alfa
|
112
|
-
Bravo = Charlie = 1
|
113
|
-
|
114
|
-
class Delta
|
115
|
-
Echo = 1
|
116
|
-
end
|
117
|
-
end
|
118
|
-
RUBY
|
119
|
-
|
120
|
-
expect(src).not_to reek_of(:TooManyConstants).with_config(config)
|
121
|
-
end
|
122
|
-
|
123
|
-
it 'reports for excessive constants inside a module' do
|
124
|
-
src = <<-RUBY
|
125
|
-
module Alfa
|
126
|
-
Bravo = Charlie = Delta = 1
|
127
|
-
end
|
128
|
-
RUBY
|
129
|
-
|
130
|
-
expect(src).to reek_of(:TooManyConstants, context: 'Alfa').with_config(config)
|
131
|
-
end
|
132
|
-
|
133
|
-
it 'reports the full class name' do
|
134
|
-
src = <<-RUBY
|
135
|
-
module Alfa
|
136
|
-
class Bravo
|
137
|
-
Charlie = Delta = Echo = 1
|
138
|
-
end
|
139
|
-
end
|
140
|
-
RUBY
|
141
|
-
|
142
|
-
expect(src).to reek_of(:TooManyConstants, context: 'Alfa::Bravo').with_config(config)
|
143
|
-
end
|
144
|
-
end
|
@@ -1,132 +0,0 @@
|
|
1
|
-
require_relative '../../spec_helper'
|
2
|
-
require_lib 'reek/smell_detectors/too_many_instance_variables'
|
3
|
-
|
4
|
-
RSpec.describe Reek::SmellDetectors::TooManyInstanceVariables do
|
5
|
-
let(:config) do
|
6
|
-
{ Reek::SmellDetectors::TooManyInstanceVariables::MAX_ALLOWED_IVARS_KEY => 2 }
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'reports the right values' do
|
10
|
-
src = <<-RUBY
|
11
|
-
class Alfa
|
12
|
-
def bravo
|
13
|
-
@charlie = @delta = @echo = 1
|
14
|
-
end
|
15
|
-
end
|
16
|
-
RUBY
|
17
|
-
|
18
|
-
expect(src).to reek_of(:TooManyInstanceVariables,
|
19
|
-
lines: [1],
|
20
|
-
context: 'Alfa',
|
21
|
-
message: 'has at least 3 instance variables',
|
22
|
-
source: 'string',
|
23
|
-
count: 3).with_config(config)
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'does not report for non-excessive ivars' do
|
27
|
-
src = <<-RUBY
|
28
|
-
class Alfa
|
29
|
-
def bravo
|
30
|
-
@charlie = @delta = 1
|
31
|
-
end
|
32
|
-
end
|
33
|
-
RUBY
|
34
|
-
|
35
|
-
expect(src).not_to reek_of(:TooManyInstanceVariables).with_config(config)
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'has a configurable maximum' do
|
39
|
-
src = <<-RUBY
|
40
|
-
# :reek:TooManyInstanceVariables { max_instance_variables: 3 }
|
41
|
-
class Alfa
|
42
|
-
def bravo
|
43
|
-
@charlie = @delta = @echo = 1
|
44
|
-
end
|
45
|
-
end
|
46
|
-
RUBY
|
47
|
-
|
48
|
-
expect(src).not_to reek_of(:TooManyInstanceVariables).with_config(config)
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'counts each ivar only once' do
|
52
|
-
src = <<-RUBY
|
53
|
-
class Alfa
|
54
|
-
def bravo
|
55
|
-
@charlie = @delta = 1
|
56
|
-
@charlie = @delta = 1
|
57
|
-
end
|
58
|
-
end
|
59
|
-
RUBY
|
60
|
-
|
61
|
-
expect(src).not_to reek_of(:TooManyInstanceVariables).with_config(config)
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'does not report memoized bravo' do
|
65
|
-
src = <<-RUBY
|
66
|
-
class Alfa
|
67
|
-
def bravo
|
68
|
-
@charlie = @delta = 1
|
69
|
-
@echo ||= 1
|
70
|
-
end
|
71
|
-
end
|
72
|
-
RUBY
|
73
|
-
|
74
|
-
expect(src).not_to reek_of(:TooManyInstanceVariables).with_config(config)
|
75
|
-
end
|
76
|
-
|
77
|
-
it 'does not count ivars across inner classes' do
|
78
|
-
src = <<-RUBY
|
79
|
-
class Alfa
|
80
|
-
class Bravo
|
81
|
-
def charlie
|
82
|
-
@delta = @echo = 1
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
class Hotel
|
87
|
-
def india
|
88
|
-
@juliett = 1
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
RUBY
|
93
|
-
|
94
|
-
expect(src).not_to reek_of(:TooManyInstanceVariables).with_config(config)
|
95
|
-
end
|
96
|
-
|
97
|
-
it 'does not count ivars across inner modules and classes' do
|
98
|
-
src = <<-RUBY
|
99
|
-
class Alfa
|
100
|
-
class Bravo
|
101
|
-
def charlie
|
102
|
-
@delta = @echo = 1
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
module Foxtrot
|
107
|
-
def golf
|
108
|
-
@hotel = 1
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
RUBY
|
113
|
-
|
114
|
-
expect(src).not_to reek_of(:TooManyInstanceVariables).with_config(config)
|
115
|
-
end
|
116
|
-
|
117
|
-
it 'reports excessive ivars across different methods' do
|
118
|
-
src = <<-RUBY
|
119
|
-
class Alfa
|
120
|
-
def bravo
|
121
|
-
@charlie = @delta = 1
|
122
|
-
end
|
123
|
-
|
124
|
-
def golf
|
125
|
-
@hotel = 1
|
126
|
-
end
|
127
|
-
end
|
128
|
-
RUBY
|
129
|
-
|
130
|
-
expect(src).to reek_of(:TooManyInstanceVariables).with_config(config)
|
131
|
-
end
|
132
|
-
end
|