reek 4.7.3 → 5.0.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/.codeclimate.yml +17 -12
- data/.rubocop.yml +18 -3
- data/.simplecov +1 -0
- data/.travis.yml +3 -4
- data/.yardopts +1 -1
- data/CHANGELOG.md +45 -0
- data/Gemfile +4 -4
- data/README.md +134 -104
- data/Rakefile +16 -3
- data/bin/reek +1 -3
- data/docs/API.md +2 -9
- data/docs/Basic-Smell-Options.md +51 -11
- data/docs/Code-Smells.md +1 -1
- data/docs/Command-Line-Options.md +14 -4
- data/docs/Duplicate-Method-Call.md +49 -1
- data/docs/Feature-Envy.md +44 -0
- data/docs/How-To-Write-New-Detectors.md +2 -3
- data/docs/Instance-Variable-Assumption.md +1 -1
- data/docs/{Prima-Donna-Method.md → Missing-Safe-Method.md} +11 -9
- data/docs/Rake-Task.md +1 -1
- data/docs/Reek-4-to-Reek-5-migration.md +193 -0
- data/docs/Reek-Driven-Development.md +1 -1
- data/docs/Uncommunicative-Method-Name.md +45 -6
- data/docs/Uncommunicative-Module-Name.md +49 -7
- data/docs/Uncommunicative-Parameter-Name.md +43 -5
- data/docs/Uncommunicative-Variable-Name.md +73 -2
- data/docs/Unused-Private-Method.md +2 -2
- data/docs/defaults.reek.yml +129 -0
- data/docs/yard_plugin.rb +1 -0
- data/features/command_line_interface/basic_usage.feature +2 -2
- data/features/command_line_interface/options.feature +46 -4
- data/features/command_line_interface/show_progress.feature +4 -4
- data/features/command_line_interface/smell_selection.feature +1 -1
- data/features/command_line_interface/smells_count.feature +6 -6
- data/features/command_line_interface/stdin.feature +30 -8
- data/features/configuration_files/accept_setting.feature +45 -28
- data/features/configuration_files/directory_specific_directives.feature +78 -73
- data/features/configuration_files/exclude_directives.feature +11 -10
- data/features/configuration_files/exclude_paths_directives.feature +4 -4
- data/features/configuration_files/masking_smells.feature +38 -9
- data/features/configuration_files/mix_accept_reject_setting.feature +31 -28
- data/features/configuration_files/reject_setting.feature +52 -41
- data/features/configuration_files/schema_validation.feature +59 -0
- data/features/configuration_files/unused_private_method.feature +18 -16
- data/features/configuration_loading.feature +53 -10
- data/features/configuration_via_source_comments/erroneous_source_comments.feature +2 -2
- data/features/configuration_via_source_comments/well_formed_source_comments.feature +2 -2
- data/features/locales.feature +2 -2
- data/features/rake_task/rake_task.feature +15 -15
- data/features/reports/json.feature +3 -3
- data/features/reports/reports.feature +34 -34
- data/features/reports/yaml.feature +3 -3
- data/features/rspec_matcher.feature +9 -1
- data/features/samples.feature +287 -287
- data/features/step_definitions/reek_steps.rb +4 -0
- data/features/step_definitions/sample_file_steps.rb +9 -4
- data/features/support/env.rb +2 -2
- data/features/todo_list.feature +26 -23
- data/lib/reek/ast/node.rb +40 -55
- data/lib/reek/ast/object_refs.rb +1 -1
- data/lib/reek/ast/reference_collector.rb +2 -4
- data/lib/reek/ast/sexp_extensions/case.rb +1 -1
- data/lib/reek/ast/sexp_extensions/if.rb +8 -1
- data/lib/reek/ast/sexp_extensions/logical_operators.rb +1 -1
- data/lib/reek/ast/sexp_extensions/methods.rb +4 -6
- data/lib/reek/cli/application.rb +4 -3
- data/lib/reek/cli/command/report_command.rb +1 -2
- data/lib/reek/cli/command/todo_list_command.rb +8 -8
- data/lib/reek/cli/options.rb +29 -14
- data/lib/reek/cli/silencer.rb +14 -3
- data/lib/reek/code_comment.rb +14 -16
- data/lib/reek/configuration/app_configuration.rb +32 -28
- data/lib/reek/configuration/configuration_converter.rb +110 -0
- data/lib/reek/configuration/configuration_file_finder.rb +15 -40
- data/lib/reek/configuration/configuration_validator.rb +12 -23
- data/lib/reek/configuration/default_directive.rb +17 -3
- data/lib/reek/configuration/directory_directives.rb +17 -11
- data/lib/reek/configuration/excluded_paths.rb +1 -1
- data/lib/reek/configuration/rake_task_converter.rb +29 -0
- data/lib/reek/configuration/schema.yml +210 -0
- data/lib/reek/configuration/schema_validator.rb +38 -0
- data/lib/reek/context/attribute_context.rb +1 -1
- data/lib/reek/context/code_context.rb +8 -11
- data/lib/reek/context/method_context.rb +7 -12
- data/lib/reek/context/module_context.rb +4 -4
- data/lib/reek/context_builder.rb +11 -11
- data/lib/reek/detector_repository.rb +6 -0
- data/lib/reek/documentation_link.rb +28 -0
- data/lib/reek/errors/bad_detector_configuration_key_in_comment_error.rb +13 -12
- data/lib/reek/errors/bad_detector_in_comment_error.rb +11 -10
- data/lib/reek/errors/base_error.rb +3 -0
- data/lib/reek/errors/config_file_error.rb +11 -0
- data/lib/reek/errors/encoding_error.rb +16 -11
- data/lib/reek/errors/garbage_detector_configuration_in_comment_error.rb +11 -10
- data/lib/reek/errors/incomprehensible_source_error.rb +20 -22
- data/lib/reek/errors/syntax_error.rb +41 -0
- data/lib/reek/examiner.rb +19 -25
- data/lib/reek/logging_error_handler.rb +7 -5
- data/lib/reek/rake/task.rb +3 -3
- data/lib/reek/report/base_report.rb +8 -12
- data/lib/reek/report/code_climate/code_climate_configuration.rb +1 -1
- data/lib/reek/report/code_climate/code_climate_configuration.yml +6 -10
- data/lib/reek/report/documentation_link_warning_formatter.rb +17 -0
- data/lib/reek/report/heading_formatter.rb +54 -0
- data/lib/reek/report/json_report.rb +1 -1
- data/lib/reek/report/location_formatter.rb +40 -0
- data/lib/reek/report/progress_formatter.rb +79 -0
- data/lib/reek/report/simple_warning_formatter.rb +34 -0
- data/lib/reek/report/text_report.rb +1 -2
- data/lib/reek/report/xml_report.rb +3 -3
- data/lib/reek/report/yaml_report.rb +1 -1
- data/lib/reek/report.rb +15 -10
- data/lib/reek/smell_configuration.rb +2 -2
- data/lib/reek/smell_detectors/attribute.rb +0 -1
- data/lib/reek/smell_detectors/base_detector.rb +9 -12
- data/lib/reek/smell_detectors/boolean_parameter.rb +0 -1
- data/lib/reek/smell_detectors/class_variable.rb +3 -11
- data/lib/reek/smell_detectors/control_parameter.rb +17 -32
- data/lib/reek/smell_detectors/data_clump.rb +3 -4
- data/lib/reek/smell_detectors/duplicate_method_call.rb +6 -7
- data/lib/reek/smell_detectors/feature_envy.rb +1 -1
- data/lib/reek/smell_detectors/instance_variable_assumption.rb +1 -10
- data/lib/reek/smell_detectors/irresponsible_module.rb +0 -1
- data/lib/reek/smell_detectors/long_parameter_list.rb +1 -2
- data/lib/reek/smell_detectors/long_yield_list.rb +2 -3
- data/lib/reek/smell_detectors/manual_dispatch.rb +3 -3
- data/lib/reek/smell_detectors/{prima_donna_method.rb → missing_safe_method.rb} +6 -7
- data/lib/reek/smell_detectors/module_initialize.rb +1 -2
- data/lib/reek/smell_detectors/nested_iterators.rb +6 -6
- data/lib/reek/smell_detectors/nil_check.rb +0 -1
- data/lib/reek/smell_detectors/repeated_conditional.rb +3 -4
- data/lib/reek/smell_detectors/subclassed_from_core_class.rb +0 -1
- data/lib/reek/smell_detectors/too_many_constants.rb +2 -3
- data/lib/reek/smell_detectors/too_many_instance_variables.rb +1 -2
- data/lib/reek/smell_detectors/too_many_methods.rb +1 -2
- data/lib/reek/smell_detectors/too_many_statements.rb +1 -2
- data/lib/reek/smell_detectors/uncommunicative_method_name.rb +2 -3
- data/lib/reek/smell_detectors/uncommunicative_module_name.rb +2 -3
- data/lib/reek/smell_detectors/uncommunicative_parameter_name.rb +2 -3
- data/lib/reek/smell_detectors/uncommunicative_variable_name.rb +6 -7
- data/lib/reek/smell_detectors/unused_parameters.rb +0 -1
- data/lib/reek/smell_detectors/unused_private_method.rb +0 -1
- data/lib/reek/smell_detectors/utility_function.rb +2 -3
- data/lib/reek/smell_detectors.rb +1 -2
- data/lib/reek/smell_warning.rb +15 -8
- data/lib/reek/source/source_code.rb +50 -72
- data/lib/reek/source/source_locator.rb +7 -7
- data/lib/reek/spec/should_reek.rb +2 -2
- data/lib/reek/spec/should_reek_of.rb +9 -16
- data/lib/reek/spec/should_reek_only_of.rb +4 -4
- data/lib/reek/spec.rb +6 -6
- data/lib/reek/tree_dresser.rb +5 -5
- data/lib/reek/version.rb +1 -1
- data/reek.gemspec +5 -5
- data/samples/checkstyle.xml +1 -1
- data/samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml +29 -0
- data/samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml +30 -0
- data/samples/configuration/full_configuration.reek +8 -4
- data/samples/configuration/full_mask.reek +5 -4
- data/samples/configuration/partial_mask.reek +3 -2
- data/samples/configuration/regular_configuration/.reek.yml +4 -0
- data/samples/paths.rb +5 -4
- data/samples/source_with_hidden_directories/.hidden/hidden.rb +1 -0
- data/samples/source_with_hidden_directories/not_hidden.rb +1 -0
- data/spec/factories/factories.rb +2 -13
- data/spec/reek/ast/node_spec.rb +103 -10
- data/spec/reek/ast/reference_collector_spec.rb +1 -1
- data/spec/reek/ast/sexp_extensions_spec.rb +2 -2
- data/spec/reek/cli/application_spec.rb +50 -38
- data/spec/reek/cli/command/todo_list_command_spec.rb +6 -4
- data/spec/reek/cli/silencer_spec.rb +28 -0
- data/spec/reek/code_comment_spec.rb +31 -38
- data/spec/reek/configuration/app_configuration_spec.rb +46 -33
- data/spec/reek/configuration/configuration_file_finder_spec.rb +133 -49
- data/spec/reek/configuration/default_directive_spec.rb +1 -1
- data/spec/reek/configuration/directory_directives_spec.rb +6 -7
- data/spec/reek/configuration/excluded_paths_spec.rb +6 -6
- data/spec/reek/configuration/rake_task_converter_spec.rb +33 -0
- data/spec/reek/configuration/schema_validator_spec.rb +165 -0
- data/spec/reek/context/code_context_spec.rb +60 -96
- data/spec/reek/context/ghost_context_spec.rb +1 -1
- data/spec/reek/context/root_context_spec.rb +1 -1
- data/spec/reek/documentation_link_spec.rb +20 -0
- data/spec/reek/errors/base_error_spec.rb +13 -0
- data/spec/reek/examiner_spec.rb +100 -30
- data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +82 -80
- data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +6 -6
- data/spec/reek/report/json_report_spec.rb +13 -46
- data/spec/reek/report/{formatter/location_formatter_spec.rb → location_formatter_spec.rb} +5 -5
- data/spec/reek/report/{formatter/progress_formatter_spec.rb → progress_formatter_spec.rb} +4 -4
- data/spec/reek/report/text_report_spec.rb +4 -4
- data/spec/reek/report/xml_report_spec.rb +3 -3
- data/spec/reek/report/yaml_report_spec.rb +9 -38
- data/spec/reek/report_spec.rb +3 -3
- data/spec/reek/smell_detectors/boolean_parameter_spec.rb +2 -2
- data/spec/reek/smell_detectors/class_variable_spec.rb +26 -32
- data/spec/reek/smell_detectors/control_parameter_spec.rb +34 -4
- data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +3 -3
- data/spec/reek/smell_detectors/feature_envy_spec.rb +47 -2
- data/spec/reek/smell_detectors/{prima_donna_method_spec.rb → missing_safe_method_spec.rb} +9 -9
- data/spec/reek/smell_detectors/module_initialize_spec.rb +14 -0
- data/spec/reek/smell_detectors/nested_iterators_spec.rb +1 -1
- data/spec/reek/smell_detectors/too_many_constants_spec.rb +3 -3
- data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +1 -1
- data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +6 -6
- data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +6 -4
- data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +6 -4
- data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +9 -9
- data/spec/reek/smell_detectors/unused_parameters_spec.rb +3 -3
- data/spec/reek/smell_detectors/unused_private_method_spec.rb +10 -10
- data/spec/reek/smell_detectors/utility_function_spec.rb +5 -5
- data/spec/reek/smell_warning_spec.rb +12 -8
- data/spec/reek/source/source_code_spec.rb +17 -43
- data/spec/reek/source/source_locator_spec.rb +17 -17
- data/spec/reek/spec/should_reek_of_spec.rb +7 -11
- data/spec/reek/spec/should_reek_only_of_spec.rb +2 -2
- data/spec/reek/spec/should_reek_spec.rb +3 -3
- data/spec/reek/spec/smell_matcher_spec.rb +3 -3
- data/spec/reek/tree_dresser_spec.rb +12 -17
- data/spec/spec_helper.rb +6 -17
- data/tasks/configuration.rake +8 -5
- metadata +71 -41
- data/defaults.reek +0 -131
- data/features/configuration_files/warn_about_multiple_configuration_files.feature +0 -44
- data/lib/reek/report/formatter/heading_formatter.rb +0 -52
- data/lib/reek/report/formatter/location_formatter.rb +0 -42
- data/lib/reek/report/formatter/progress_formatter.rb +0 -81
- data/lib/reek/report/formatter/simple_warning_formatter.rb +0 -35
- data/lib/reek/report/formatter/wiki_link_warning_formatter.rb +0 -36
- data/lib/reek/report/formatter.rb +0 -33
- data/lib/reek/smell_detectors/syntax.rb +0 -37
- data/samples/configuration/non_public_modifiers_mask.reek +0 -3
- data/samples/smelly_with_inline_mask.rb +0 -8
- data/samples/smelly_with_modifiers.rb +0 -12
- data/samples/source_with_hidden_directories/.hidden/uncommunicative_method_name.rb +0 -5
- data/samples/source_with_non_ruby_files/uncommunicative_parameter_name.rb +0 -6
- data/spec/reek/smell_detectors/syntax_spec.rb +0 -17
- /data/{samples/configuration/more_than_one_configuration_file/regular.reek → .reek.yml} +0 -0
- /data/samples/{clean.rb → clean_source/clean.rb} +0 -0
- /data/samples/{exceptions.reek → configuration/home/home.reek.yml} +0 -0
- /data/samples/configuration/{more_than_one_configuration_file/todo.reek → regular_configuration/empty_sub_directory/.gitignore} +0 -0
- /data/samples/{configuration/single_configuration_file/.reek → no_config_file/.keep} +0 -0
- /data/samples/{inline.rb → smelly_source/inline.rb} +0 -0
- /data/samples/{optparse.rb → smelly_source/optparse.rb} +0 -0
- /data/samples/{redcloth.rb → smelly_source/redcloth.rb} +0 -0
- /data/samples/{smelly.rb → smelly_source/smelly.rb} +0 -0
- /data/samples/{source_with_hidden_directories/uncommunicative_parameter_name.rb → source_with_non_ruby_files/ruby.rb} +0 -0
|
@@ -5,15 +5,15 @@ require_lib 'reek/source/source_locator'
|
|
|
5
5
|
|
|
6
6
|
RSpec.describe Reek::Source::SourceLocator do
|
|
7
7
|
describe '#sources' do
|
|
8
|
-
context 'applied to hidden directories' do
|
|
9
|
-
let(:path) {
|
|
8
|
+
context 'when applied to hidden directories' do
|
|
9
|
+
let(:path) { SAMPLES_DIR.join('source_with_hidden_directories') }
|
|
10
10
|
|
|
11
11
|
let(:expected_paths) do
|
|
12
|
-
[path.join('
|
|
12
|
+
[path.join('not_hidden.rb')]
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
let(:paths_that_are_expected_to_be_ignored) do
|
|
16
|
-
[path.join('.hidden/
|
|
16
|
+
[path.join('.hidden/hidden.rb')]
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
it 'does not scan hidden directories' do
|
|
@@ -30,21 +30,21 @@ RSpec.describe Reek::Source::SourceLocator do
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
# rubocop:disable RSpec/NestedGroups
|
|
33
|
-
context '
|
|
33
|
+
context 'with excluded paths' do
|
|
34
34
|
let(:configuration) do
|
|
35
|
-
test_configuration_for(
|
|
35
|
+
test_configuration_for(CONFIGURATION_DIR.join('with_excluded_paths.reek'))
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
let(:options) { instance_double('Reek::CLI::Options', force_exclusion?: false) }
|
|
39
39
|
|
|
40
40
|
context 'when the path is absolute' do
|
|
41
41
|
let(:path) do
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
SAMPLES_DIR.join('source_with_exclude_paths',
|
|
43
|
+
'ignore_me',
|
|
44
|
+
'uncommunicative_method_name.rb').expand_path
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
context '
|
|
47
|
+
context 'when options.force_exclusion? is true' do
|
|
48
48
|
before do
|
|
49
49
|
allow(options).to receive(:force_exclusion?).and_return(true)
|
|
50
50
|
end
|
|
@@ -55,7 +55,7 @@ RSpec.describe Reek::Source::SourceLocator do
|
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
context '
|
|
58
|
+
context 'when options.force_exclusion? is false' do
|
|
59
59
|
before do
|
|
60
60
|
allow(options).to receive(:force_exclusion?).and_return(false)
|
|
61
61
|
end
|
|
@@ -68,7 +68,7 @@ RSpec.describe Reek::Source::SourceLocator do
|
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
context 'when the path is a file name in an excluded directory' do
|
|
71
|
-
let(:path) {
|
|
71
|
+
let(:path) { SAMPLES_DIR.join('source_with_exclude_paths', 'ignore_me', 'uncommunicative_method_name.rb') }
|
|
72
72
|
|
|
73
73
|
context 'when options.force_exclusion? is true' do
|
|
74
74
|
before do
|
|
@@ -94,7 +94,7 @@ RSpec.describe Reek::Source::SourceLocator do
|
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
context 'when path is a directory' do
|
|
97
|
-
let(:path) {
|
|
97
|
+
let(:path) { SAMPLES_DIR.join('source_with_exclude_paths') }
|
|
98
98
|
|
|
99
99
|
let(:expected_paths) do
|
|
100
100
|
[path.join('nested/uncommunicative_parameter_name.rb')]
|
|
@@ -120,10 +120,10 @@ RSpec.describe Reek::Source::SourceLocator do
|
|
|
120
120
|
end
|
|
121
121
|
# rubocop:enable RSpec/NestedGroups
|
|
122
122
|
|
|
123
|
-
context 'non-Ruby paths' do
|
|
124
|
-
let(:path) {
|
|
123
|
+
context 'with non-Ruby paths' do
|
|
124
|
+
let(:path) { SAMPLES_DIR.join('source_with_non_ruby_files') }
|
|
125
125
|
let(:expected_sources) do
|
|
126
|
-
[path.join('
|
|
126
|
+
[path.join('ruby.rb')]
|
|
127
127
|
end
|
|
128
128
|
let(:paths_that_are_expected_to_be_ignored) do
|
|
129
129
|
[
|
|
@@ -145,7 +145,7 @@ RSpec.describe Reek::Source::SourceLocator do
|
|
|
145
145
|
end
|
|
146
146
|
end
|
|
147
147
|
|
|
148
|
-
context 'passing "." or "./" as argument' do
|
|
148
|
+
context 'when passing "." or "./" as argument' do
|
|
149
149
|
let(:expected_sources) do
|
|
150
150
|
[Pathname.new('spec/spec_helper.rb'), Pathname.new('lib/reek.rb')]
|
|
151
151
|
end
|
|
@@ -11,17 +11,13 @@ RSpec.describe Reek::Spec::ShouldReekOf do
|
|
|
11
11
|
expect(ruby).to reek_of(:DuplicateMethodCall)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
it 'reports duplicate calls by smell detector class' do
|
|
15
|
-
expect(ruby).to reek_of(Reek::SmellDetectors::DuplicateMethodCall)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
14
|
it 'does not report any feature envy' do
|
|
19
15
|
expect(ruby).not_to reek_of(:FeatureEnvy)
|
|
20
16
|
end
|
|
21
17
|
end
|
|
22
18
|
|
|
23
19
|
describe 'different sources of input' do
|
|
24
|
-
context 'checking code in a string' do
|
|
20
|
+
context 'when checking code in a string' do
|
|
25
21
|
let(:clean_code) { 'def good() true; end' }
|
|
26
22
|
let(:matcher) { described_class.new(:UncommunicativeVariableName, name: 'y') }
|
|
27
23
|
let(:smelly_code) { 'def x() y = 4; end' }
|
|
@@ -40,7 +36,7 @@ RSpec.describe Reek::Spec::ShouldReekOf do
|
|
|
40
36
|
end
|
|
41
37
|
end
|
|
42
38
|
|
|
43
|
-
context 'checking code in a File' do
|
|
39
|
+
context 'when checking code in a File' do
|
|
44
40
|
let(:matcher) { described_class.new(:UncommunicativeMethodName, name: 'x') }
|
|
45
41
|
|
|
46
42
|
it 'matches a smelly file' do
|
|
@@ -54,7 +50,7 @@ RSpec.describe Reek::Spec::ShouldReekOf do
|
|
|
54
50
|
end
|
|
55
51
|
|
|
56
52
|
describe 'smell types and smell details' do
|
|
57
|
-
context 'passing in smell_details with unknown parameter name' do
|
|
53
|
+
context 'when passing in smell_details with unknown parameter name' do
|
|
58
54
|
let(:matcher) { described_class.new(:UncommunicativeVariableName, foo: 'y') }
|
|
59
55
|
let(:smelly_code) { 'def x() y = 4; end' }
|
|
60
56
|
|
|
@@ -63,7 +59,7 @@ RSpec.describe Reek::Spec::ShouldReekOf do
|
|
|
63
59
|
end
|
|
64
60
|
end
|
|
65
61
|
|
|
66
|
-
context 'both are matching' do
|
|
62
|
+
context 'when both are matching' do
|
|
67
63
|
let(:matcher) { described_class.new(:UncommunicativeVariableName, name: 'y') }
|
|
68
64
|
let(:smelly_code) { 'def x() y = 4; end' }
|
|
69
65
|
|
|
@@ -72,7 +68,7 @@ RSpec.describe Reek::Spec::ShouldReekOf do
|
|
|
72
68
|
end
|
|
73
69
|
end
|
|
74
70
|
|
|
75
|
-
context 'no smell_type is matching' do
|
|
71
|
+
context 'when no smell_type is matching' do
|
|
76
72
|
let(:smelly_code) { 'def dummy() y = 4; end' }
|
|
77
73
|
|
|
78
74
|
let(:falsey_matcher) { described_class.new(:FeatureEnvy, name: 'y') }
|
|
@@ -97,7 +93,7 @@ RSpec.describe Reek::Spec::ShouldReekOf do
|
|
|
97
93
|
end
|
|
98
94
|
end
|
|
99
95
|
|
|
100
|
-
context 'smell type is matching but smell details are not' do
|
|
96
|
+
context 'when smell type is matching but smell details are not' do
|
|
101
97
|
let(:smelly_code) { 'def double_thing() @other.thing.foo + @other.thing.foo end' }
|
|
102
98
|
let(:matcher) { described_class.new(:DuplicateMethodCall, name: 'foo', count: 15) }
|
|
103
99
|
|
|
@@ -129,7 +125,7 @@ RSpec.describe Reek::Spec::ShouldReekOf do
|
|
|
129
125
|
end
|
|
130
126
|
end
|
|
131
127
|
|
|
132
|
-
context '
|
|
128
|
+
context 'with a smell that is disabled by default' do
|
|
133
129
|
it 'enables the smell detector to match automatically' do
|
|
134
130
|
default_config = Reek::SmellDetectors::UnusedPrivateMethod.default_config
|
|
135
131
|
src = 'class C; private; def foo; end; end'
|
|
@@ -21,7 +21,7 @@ RSpec.describe Reek::Spec::ShouldReekOnlyOf do
|
|
|
21
21
|
context 'when a match was expected' do
|
|
22
22
|
let(:source) { 'the_path/to_a/source_file.rb' }
|
|
23
23
|
|
|
24
|
-
before { allow(examiner).to receive(:
|
|
24
|
+
before { allow(examiner).to receive(:origin).and_return(source) }
|
|
25
25
|
|
|
26
26
|
it 'reports the source' do
|
|
27
27
|
expect(matcher.failure_message).to match(source)
|
|
@@ -91,7 +91,7 @@ RSpec.describe Reek::Spec::ShouldReekOnlyOf do
|
|
|
91
91
|
|
|
92
92
|
it 'reports the source when no match was expected' do
|
|
93
93
|
source = 'the_path/to_a/source_file.rb'
|
|
94
|
-
allow(examiner).to receive(:
|
|
94
|
+
allow(examiner).to receive(:origin).and_return(source)
|
|
95
95
|
expect(matcher.failure_message_when_negated).to match(source)
|
|
96
96
|
end
|
|
97
97
|
end
|
|
@@ -22,7 +22,7 @@ RSpec.describe Reek::Spec::ShouldReek do
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
describe 'checking code in a File' do
|
|
25
|
-
context '
|
|
25
|
+
context 'without masking' do
|
|
26
26
|
let(:matcher) { described_class.new }
|
|
27
27
|
|
|
28
28
|
it 'matches a smelly File' do
|
|
@@ -39,8 +39,8 @@ RSpec.describe Reek::Spec::ShouldReek do
|
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
context '
|
|
43
|
-
let(:path) {
|
|
42
|
+
context 'with masking' do
|
|
43
|
+
let(:path) { CONFIGURATION_DIR.join('full_mask.reek') }
|
|
44
44
|
let(:configuration) { test_configuration_for(path) }
|
|
45
45
|
let(:matcher) { described_class.new(configuration: configuration) }
|
|
46
46
|
|
|
@@ -10,7 +10,7 @@ RSpec.describe Reek::Spec::SmellMatcher do
|
|
|
10
10
|
end
|
|
11
11
|
let(:matcher) { described_class.new(smell_warning) }
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
describe '#matches?' do
|
|
14
14
|
it 'matches on class symbol' do
|
|
15
15
|
expect(matcher).to be_matches(:UncommunicativeVariableName)
|
|
16
16
|
end
|
|
@@ -50,7 +50,7 @@ RSpec.describe Reek::Spec::SmellMatcher do
|
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
describe '#matches_smell_type?' do
|
|
54
54
|
it 'matches on class symbol' do
|
|
55
55
|
expect(matcher).to be_matches_smell_type(:UncommunicativeVariableName)
|
|
56
56
|
end
|
|
@@ -60,7 +60,7 @@ RSpec.describe Reek::Spec::SmellMatcher do
|
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
describe '#matches_attributes?' do
|
|
64
64
|
it 'matches on params' do
|
|
65
65
|
expect(matcher).to be_matches_attributes(test: 'something')
|
|
66
66
|
end
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
require_lib 'reek/cli/silencer'
|
|
2
|
-
Reek::CLI::Silencer.silently do
|
|
3
|
-
require 'parser/ruby22'
|
|
4
|
-
end
|
|
5
|
-
|
|
6
1
|
require_relative '../spec_helper'
|
|
2
|
+
Reek::CLI::Silencer.without_warnings { require 'parser/ruby25' }
|
|
7
3
|
require_lib 'reek/tree_dresser'
|
|
8
4
|
|
|
9
5
|
RSpec.describe Reek::TreeDresser do
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
describe '#dress' do
|
|
7
|
+
let(:dresser) { described_class.new }
|
|
8
|
+
let(:sexp) do
|
|
9
|
+
Parser::Ruby25.parse('class Klazz; def meth(argument); argument.call_me; end; end')
|
|
10
|
+
end
|
|
11
|
+
let(:dressed_ast) { dresser.dress(sexp, {}) }
|
|
12
|
+
|
|
15
13
|
# The dressed AST looks like this:
|
|
16
14
|
# (class
|
|
17
15
|
# (const nil :Klazz) nil
|
|
@@ -20,14 +18,11 @@ RSpec.describe Reek::TreeDresser do
|
|
|
20
18
|
# (arg :argument))
|
|
21
19
|
# (send
|
|
22
20
|
# (lvar :argument) :call_me)))
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
let(:args_node) { def_node.children[1] }
|
|
28
|
-
let(:send_node) { def_node.children[2] }
|
|
21
|
+
let(:const_node) { dressed_ast.children.first }
|
|
22
|
+
let(:def_node) { dressed_ast.children.last }
|
|
23
|
+
let(:args_node) { def_node.children[1] }
|
|
24
|
+
let(:send_node) { def_node.children[2] }
|
|
29
25
|
|
|
30
|
-
context 'dresses the given sexp' do
|
|
31
26
|
it 'dresses `const` nodes properly' do
|
|
32
27
|
expect(const_node).to be_a Reek::AST::SexpExtensions::ConstNode
|
|
33
28
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -8,15 +8,13 @@ require_relative '../lib/reek/configuration/app_configuration'
|
|
|
8
8
|
|
|
9
9
|
require_relative '../samples/paths'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
rescue LoadError # rubocop:disable Lint/HandleExceptions
|
|
15
|
-
end
|
|
11
|
+
begin
|
|
12
|
+
Reek::CLI::Silencer.without_warnings { require 'pry-byebug' }
|
|
13
|
+
rescue LoadError # rubocop:disable Lint/HandleExceptions
|
|
16
14
|
end
|
|
17
15
|
|
|
18
|
-
require '
|
|
19
|
-
|
|
16
|
+
require 'factory_bot'
|
|
17
|
+
FactoryBot.find_definitions
|
|
20
18
|
|
|
21
19
|
# Simple helpers for our specs.
|
|
22
20
|
module Helpers
|
|
@@ -76,7 +74,7 @@ end
|
|
|
76
74
|
RSpec.configure do |config|
|
|
77
75
|
config.filter_run :focus
|
|
78
76
|
config.run_all_when_everything_filtered = true
|
|
79
|
-
config.include
|
|
77
|
+
config.include FactoryBot::Syntax::Methods
|
|
80
78
|
config.include Helpers
|
|
81
79
|
|
|
82
80
|
config.disable_monkey_patching!
|
|
@@ -85,15 +83,6 @@ RSpec.configure do |config|
|
|
|
85
83
|
mocks.verify_partial_doubles = true
|
|
86
84
|
mocks.verify_doubled_constant_names = true
|
|
87
85
|
end
|
|
88
|
-
|
|
89
|
-
# Avoid infinitely running tests. This is mainly useful when running a
|
|
90
|
-
# mutation tester. Set the DEBUG environment variable to something truthy
|
|
91
|
-
# like '1' to disable this and allow using pry without specs failing.
|
|
92
|
-
unless ENV['DEBUG']
|
|
93
|
-
config.around do |example|
|
|
94
|
-
Timeout.timeout(5, &example)
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
86
|
end
|
|
98
87
|
|
|
99
88
|
RSpec::Matchers.define_negated_matcher :not_reek_of, :reek_of
|
data/tasks/configuration.rake
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
require_relative '../lib/reek/detector_repository'
|
|
2
|
+
require_relative '../lib/reek/configuration/rake_task_converter'
|
|
3
|
+
require_relative '../lib/reek/configuration/app_configuration'
|
|
4
|
+
|
|
2
5
|
require 'yaml'
|
|
3
6
|
|
|
4
7
|
namespace :configuration do
|
|
5
8
|
desc 'Updates the default configuration file when smell defaults change'
|
|
6
9
|
task :update_default_configuration do
|
|
7
|
-
DEFAULT_SMELL_CONFIGURATION = 'defaults.reek'.freeze
|
|
10
|
+
DEFAULT_SMELL_CONFIGURATION = 'docs/defaults.reek.yml'.freeze
|
|
8
11
|
content = Reek::DetectorRepository.smell_types.each_with_object({}) do |klass, hash|
|
|
9
|
-
hash[klass.smell_type] = klass.default_config
|
|
12
|
+
hash[klass.smell_type] = Reek::Configuration::RakeTaskConverter.convert klass.default_config
|
|
13
|
+
end
|
|
14
|
+
File.open(DEFAULT_SMELL_CONFIGURATION, 'w') do |file|
|
|
15
|
+
YAML.dump({ Reek::Configuration::AppConfiguration::DETECTORS_KEY => content }, file)
|
|
10
16
|
end
|
|
11
|
-
File.open(DEFAULT_SMELL_CONFIGURATION, 'w') { |file| YAML.dump(content, file) }
|
|
12
17
|
end
|
|
13
18
|
end
|
|
14
|
-
|
|
15
|
-
task 'test:spec' => 'configuration:update_default_configuration'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: reek
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 5.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kevin Rutherford
|
|
@@ -11,7 +11,7 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date:
|
|
14
|
+
date: 2018-06-29 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: codeclimate-engine-rb
|
|
@@ -27,40 +27,60 @@ dependencies:
|
|
|
27
27
|
- - "~>"
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
29
|
version: 0.4.0
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: kwalify
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
requirements:
|
|
34
|
+
- - "~>"
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: 0.7.0
|
|
37
|
+
type: :runtime
|
|
38
|
+
prerelease: false
|
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
40
|
+
requirements:
|
|
41
|
+
- - "~>"
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
version: 0.7.0
|
|
30
44
|
- !ruby/object:Gem::Dependency
|
|
31
45
|
name: parser
|
|
32
46
|
requirement: !ruby/object:Gem::Requirement
|
|
33
47
|
requirements:
|
|
34
48
|
- - "<"
|
|
35
49
|
- !ruby/object:Gem::Version
|
|
36
|
-
version: '2.
|
|
50
|
+
version: '2.6'
|
|
37
51
|
- - ">="
|
|
38
52
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 2.
|
|
53
|
+
version: 2.5.0.0
|
|
40
54
|
type: :runtime
|
|
41
55
|
prerelease: false
|
|
42
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
57
|
requirements:
|
|
44
58
|
- - "<"
|
|
45
59
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '2.
|
|
60
|
+
version: '2.6'
|
|
47
61
|
- - ">="
|
|
48
62
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 2.
|
|
63
|
+
version: 2.5.0.0
|
|
50
64
|
- !ruby/object:Gem::Dependency
|
|
51
65
|
name: rainbow
|
|
52
66
|
requirement: !ruby/object:Gem::Requirement
|
|
53
67
|
requirements:
|
|
54
|
-
- - "
|
|
68
|
+
- - ">="
|
|
55
69
|
- !ruby/object:Gem::Version
|
|
56
70
|
version: '2.0'
|
|
71
|
+
- - "<"
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '4.0'
|
|
57
74
|
type: :runtime
|
|
58
75
|
prerelease: false
|
|
59
76
|
version_requirements: !ruby/object:Gem::Requirement
|
|
60
77
|
requirements:
|
|
61
|
-
- - "
|
|
78
|
+
- - ">="
|
|
62
79
|
- !ruby/object:Gem::Version
|
|
63
80
|
version: '2.0'
|
|
81
|
+
- - "<"
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: '4.0'
|
|
64
84
|
description: Reek is a tool that examines Ruby classes, modules and methods and reports
|
|
65
85
|
any code smells it finds.
|
|
66
86
|
email:
|
|
@@ -76,6 +96,7 @@ files:
|
|
|
76
96
|
- ".codeclimate.yml"
|
|
77
97
|
- ".dockerignore"
|
|
78
98
|
- ".gitignore"
|
|
99
|
+
- ".reek.yml"
|
|
79
100
|
- ".rubocop.yml"
|
|
80
101
|
- ".simplecov"
|
|
81
102
|
- ".travis.yml"
|
|
@@ -90,7 +111,6 @@ files:
|
|
|
90
111
|
- ataru_setup.rb
|
|
91
112
|
- bin/code_climate_reek
|
|
92
113
|
- bin/reek
|
|
93
|
-
- defaults.reek
|
|
94
114
|
- docs/API.md
|
|
95
115
|
- docs/Attribute.md
|
|
96
116
|
- docs/Basic-Smell-Options.md
|
|
@@ -111,12 +131,13 @@ files:
|
|
|
111
131
|
- docs/Long-Parameter-List.md
|
|
112
132
|
- docs/Long-Yield-List.md
|
|
113
133
|
- docs/Manual-Dispatch.md
|
|
134
|
+
- docs/Missing-Safe-Method.md
|
|
114
135
|
- docs/Module-Initialize.md
|
|
115
136
|
- docs/Nested-Iterators.md
|
|
116
137
|
- docs/Nil-Check.md
|
|
117
|
-
- docs/Prima-Donna-Method.md
|
|
118
138
|
- docs/RSpec-matchers.md
|
|
119
139
|
- docs/Rake-Task.md
|
|
140
|
+
- docs/Reek-4-to-Reek-5-migration.md
|
|
120
141
|
- docs/Reek-Driven-Development.md
|
|
121
142
|
- docs/Repeated-Conditional.md
|
|
122
143
|
- docs/Simulated-Polymorphism.md
|
|
@@ -137,6 +158,7 @@ files:
|
|
|
137
158
|
- docs/Utility-Function.md
|
|
138
159
|
- docs/Versioning-Policy.md
|
|
139
160
|
- docs/YAML-Reports.md
|
|
161
|
+
- docs/defaults.reek.yml
|
|
140
162
|
- docs/templates/default/docstring/html/public_api_marker.erb
|
|
141
163
|
- docs/templates/default/docstring/setup.rb
|
|
142
164
|
- docs/templates/default/fulldoc/html/css/common.css
|
|
@@ -155,8 +177,8 @@ files:
|
|
|
155
177
|
- features/configuration_files/masking_smells.feature
|
|
156
178
|
- features/configuration_files/mix_accept_reject_setting.feature
|
|
157
179
|
- features/configuration_files/reject_setting.feature
|
|
180
|
+
- features/configuration_files/schema_validation.feature
|
|
158
181
|
- features/configuration_files/unused_private_method.feature
|
|
159
|
-
- features/configuration_files/warn_about_multiple_configuration_files.feature
|
|
160
182
|
- features/configuration_loading.feature
|
|
161
183
|
- features/configuration_via_source_comments/erroneous_source_comments.feature
|
|
162
184
|
- features/configuration_via_source_comments/well_formed_source_comments.feature
|
|
@@ -210,11 +232,15 @@ files:
|
|
|
210
232
|
- lib/reek/cli/status.rb
|
|
211
233
|
- lib/reek/code_comment.rb
|
|
212
234
|
- lib/reek/configuration/app_configuration.rb
|
|
235
|
+
- lib/reek/configuration/configuration_converter.rb
|
|
213
236
|
- lib/reek/configuration/configuration_file_finder.rb
|
|
214
237
|
- lib/reek/configuration/configuration_validator.rb
|
|
215
238
|
- lib/reek/configuration/default_directive.rb
|
|
216
239
|
- lib/reek/configuration/directory_directives.rb
|
|
217
240
|
- lib/reek/configuration/excluded_paths.rb
|
|
241
|
+
- lib/reek/configuration/rake_task_converter.rb
|
|
242
|
+
- lib/reek/configuration/schema.yml
|
|
243
|
+
- lib/reek/configuration/schema_validator.rb
|
|
218
244
|
- lib/reek/context/attribute_context.rb
|
|
219
245
|
- lib/reek/context/class_context.rb
|
|
220
246
|
- lib/reek/context/code_context.rb
|
|
@@ -229,12 +255,15 @@ files:
|
|
|
229
255
|
- lib/reek/context/visibility_tracker.rb
|
|
230
256
|
- lib/reek/context_builder.rb
|
|
231
257
|
- lib/reek/detector_repository.rb
|
|
258
|
+
- lib/reek/documentation_link.rb
|
|
232
259
|
- lib/reek/errors/bad_detector_configuration_key_in_comment_error.rb
|
|
233
260
|
- lib/reek/errors/bad_detector_in_comment_error.rb
|
|
234
261
|
- lib/reek/errors/base_error.rb
|
|
262
|
+
- lib/reek/errors/config_file_error.rb
|
|
235
263
|
- lib/reek/errors/encoding_error.rb
|
|
236
264
|
- lib/reek/errors/garbage_detector_configuration_in_comment_error.rb
|
|
237
265
|
- lib/reek/errors/incomprehensible_source_error.rb
|
|
266
|
+
- lib/reek/errors/syntax_error.rb
|
|
238
267
|
- lib/reek/examiner.rb
|
|
239
268
|
- lib/reek/logging_error_handler.rb
|
|
240
269
|
- lib/reek/rake/task.rb
|
|
@@ -246,15 +275,14 @@ files:
|
|
|
246
275
|
- lib/reek/report/code_climate/code_climate_fingerprint.rb
|
|
247
276
|
- lib/reek/report/code_climate/code_climate_formatter.rb
|
|
248
277
|
- lib/reek/report/code_climate/code_climate_report.rb
|
|
249
|
-
- lib/reek/report/
|
|
250
|
-
- lib/reek/report/
|
|
251
|
-
- lib/reek/report/formatter/location_formatter.rb
|
|
252
|
-
- lib/reek/report/formatter/progress_formatter.rb
|
|
253
|
-
- lib/reek/report/formatter/simple_warning_formatter.rb
|
|
254
|
-
- lib/reek/report/formatter/wiki_link_warning_formatter.rb
|
|
278
|
+
- lib/reek/report/documentation_link_warning_formatter.rb
|
|
279
|
+
- lib/reek/report/heading_formatter.rb
|
|
255
280
|
- lib/reek/report/html_report.rb
|
|
256
281
|
- lib/reek/report/html_report/html_report.html.erb
|
|
257
282
|
- lib/reek/report/json_report.rb
|
|
283
|
+
- lib/reek/report/location_formatter.rb
|
|
284
|
+
- lib/reek/report/progress_formatter.rb
|
|
285
|
+
- lib/reek/report/simple_warning_formatter.rb
|
|
258
286
|
- lib/reek/report/text_report.rb
|
|
259
287
|
- lib/reek/report/xml_report.rb
|
|
260
288
|
- lib/reek/report/yaml_report.rb
|
|
@@ -273,13 +301,12 @@ files:
|
|
|
273
301
|
- lib/reek/smell_detectors/long_parameter_list.rb
|
|
274
302
|
- lib/reek/smell_detectors/long_yield_list.rb
|
|
275
303
|
- lib/reek/smell_detectors/manual_dispatch.rb
|
|
304
|
+
- lib/reek/smell_detectors/missing_safe_method.rb
|
|
276
305
|
- lib/reek/smell_detectors/module_initialize.rb
|
|
277
306
|
- lib/reek/smell_detectors/nested_iterators.rb
|
|
278
307
|
- lib/reek/smell_detectors/nil_check.rb
|
|
279
|
-
- lib/reek/smell_detectors/prima_donna_method.rb
|
|
280
308
|
- lib/reek/smell_detectors/repeated_conditional.rb
|
|
281
309
|
- lib/reek/smell_detectors/subclassed_from_core_class.rb
|
|
282
|
-
- lib/reek/smell_detectors/syntax.rb
|
|
283
310
|
- lib/reek/smell_detectors/too_many_constants.rb
|
|
284
311
|
- lib/reek/smell_detectors/too_many_instance_variables.rb
|
|
285
312
|
- lib/reek/smell_detectors/too_many_methods.rb
|
|
@@ -309,33 +336,32 @@ files:
|
|
|
309
336
|
- logo/reek.text.svg
|
|
310
337
|
- reek.gemspec
|
|
311
338
|
- samples/checkstyle.xml
|
|
312
|
-
- samples/clean.rb
|
|
339
|
+
- samples/clean_source/clean.rb
|
|
340
|
+
- samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml
|
|
341
|
+
- samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml
|
|
313
342
|
- samples/configuration/corrupt.reek
|
|
314
343
|
- samples/configuration/empty.reek
|
|
315
344
|
- samples/configuration/full_configuration.reek
|
|
316
345
|
- samples/configuration/full_mask.reek
|
|
317
|
-
- samples/configuration/
|
|
318
|
-
- samples/configuration/more_than_one_configuration_file/todo.reek
|
|
319
|
-
- samples/configuration/non_public_modifiers_mask.reek
|
|
346
|
+
- samples/configuration/home/home.reek.yml
|
|
320
347
|
- samples/configuration/partial_mask.reek
|
|
321
|
-
- samples/configuration/
|
|
348
|
+
- samples/configuration/regular_configuration/.reek.yml
|
|
349
|
+
- samples/configuration/regular_configuration/empty_sub_directory/.gitignore
|
|
322
350
|
- samples/configuration/with_excluded_paths.reek
|
|
323
|
-
- samples/
|
|
324
|
-
- samples/inline.rb
|
|
325
|
-
- samples/optparse.rb
|
|
351
|
+
- samples/no_config_file/.keep
|
|
326
352
|
- samples/paths.rb
|
|
327
|
-
- samples/
|
|
328
|
-
- samples/
|
|
329
|
-
- samples/
|
|
330
|
-
- samples/
|
|
353
|
+
- samples/smelly_source/inline.rb
|
|
354
|
+
- samples/smelly_source/optparse.rb
|
|
355
|
+
- samples/smelly_source/redcloth.rb
|
|
356
|
+
- samples/smelly_source/smelly.rb
|
|
331
357
|
- samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb
|
|
332
358
|
- samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb
|
|
333
359
|
- samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb
|
|
334
|
-
- samples/source_with_hidden_directories/.hidden/
|
|
335
|
-
- samples/source_with_hidden_directories/
|
|
360
|
+
- samples/source_with_hidden_directories/.hidden/hidden.rb
|
|
361
|
+
- samples/source_with_hidden_directories/not_hidden.rb
|
|
336
362
|
- samples/source_with_non_ruby_files/gibberish
|
|
337
363
|
- samples/source_with_non_ruby_files/python_source.py
|
|
338
|
-
- samples/source_with_non_ruby_files/
|
|
364
|
+
- samples/source_with_non_ruby_files/ruby.rb
|
|
339
365
|
- spec/factories/factories.rb
|
|
340
366
|
- spec/quality/reek_source_spec.rb
|
|
341
367
|
- spec/reek/ast/node_spec.rb
|
|
@@ -346,12 +372,15 @@ files:
|
|
|
346
372
|
- spec/reek/cli/command/report_command_spec.rb
|
|
347
373
|
- spec/reek/cli/command/todo_list_command_spec.rb
|
|
348
374
|
- spec/reek/cli/options_spec.rb
|
|
375
|
+
- spec/reek/cli/silencer_spec.rb
|
|
349
376
|
- spec/reek/code_comment_spec.rb
|
|
350
377
|
- spec/reek/configuration/app_configuration_spec.rb
|
|
351
378
|
- spec/reek/configuration/configuration_file_finder_spec.rb
|
|
352
379
|
- spec/reek/configuration/default_directive_spec.rb
|
|
353
380
|
- spec/reek/configuration/directory_directives_spec.rb
|
|
354
381
|
- spec/reek/configuration/excluded_paths_spec.rb
|
|
382
|
+
- spec/reek/configuration/rake_task_converter_spec.rb
|
|
383
|
+
- spec/reek/configuration/schema_validator_spec.rb
|
|
355
384
|
- spec/reek/context/code_context_spec.rb
|
|
356
385
|
- spec/reek/context/ghost_context_spec.rb
|
|
357
386
|
- spec/reek/context/method_context_spec.rb
|
|
@@ -360,6 +389,8 @@ files:
|
|
|
360
389
|
- spec/reek/context/statement_counter_spec.rb
|
|
361
390
|
- spec/reek/context_builder_spec.rb
|
|
362
391
|
- spec/reek/detector_repository_spec.rb
|
|
392
|
+
- spec/reek/documentation_link_spec.rb
|
|
393
|
+
- spec/reek/errors/base_error_spec.rb
|
|
363
394
|
- spec/reek/examiner_spec.rb
|
|
364
395
|
- spec/reek/logging_error_handler_spec.rb
|
|
365
396
|
- spec/reek/rake/task_spec.rb
|
|
@@ -367,10 +398,10 @@ files:
|
|
|
367
398
|
- spec/reek/report/code_climate/code_climate_fingerprint_spec.rb
|
|
368
399
|
- spec/reek/report/code_climate/code_climate_formatter_spec.rb
|
|
369
400
|
- spec/reek/report/code_climate/code_climate_report_spec.rb
|
|
370
|
-
- spec/reek/report/formatter/location_formatter_spec.rb
|
|
371
|
-
- spec/reek/report/formatter/progress_formatter_spec.rb
|
|
372
401
|
- spec/reek/report/html_report_spec.rb
|
|
373
402
|
- spec/reek/report/json_report_spec.rb
|
|
403
|
+
- spec/reek/report/location_formatter_spec.rb
|
|
404
|
+
- spec/reek/report/progress_formatter_spec.rb
|
|
374
405
|
- spec/reek/report/text_report_spec.rb
|
|
375
406
|
- spec/reek/report/xml_report_spec.rb
|
|
376
407
|
- spec/reek/report/yaml_report_spec.rb
|
|
@@ -389,13 +420,12 @@ files:
|
|
|
389
420
|
- spec/reek/smell_detectors/long_parameter_list_spec.rb
|
|
390
421
|
- spec/reek/smell_detectors/long_yield_list_spec.rb
|
|
391
422
|
- spec/reek/smell_detectors/manual_dispatch_spec.rb
|
|
423
|
+
- spec/reek/smell_detectors/missing_safe_method_spec.rb
|
|
392
424
|
- spec/reek/smell_detectors/module_initialize_spec.rb
|
|
393
425
|
- spec/reek/smell_detectors/nested_iterators_spec.rb
|
|
394
426
|
- spec/reek/smell_detectors/nil_check_spec.rb
|
|
395
|
-
- spec/reek/smell_detectors/prima_donna_method_spec.rb
|
|
396
427
|
- spec/reek/smell_detectors/repeated_conditional_spec.rb
|
|
397
428
|
- spec/reek/smell_detectors/subclassed_from_core_class_spec.rb
|
|
398
|
-
- spec/reek/smell_detectors/syntax_spec.rb
|
|
399
429
|
- spec/reek/smell_detectors/too_many_constants_spec.rb
|
|
400
430
|
- spec/reek/smell_detectors/too_many_instance_variables_spec.rb
|
|
401
431
|
- spec/reek/smell_detectors/too_many_methods_spec.rb
|
|
@@ -422,7 +452,7 @@ files:
|
|
|
422
452
|
- tasks/reek.rake
|
|
423
453
|
- tasks/rubocop.rake
|
|
424
454
|
- tasks/test.rake
|
|
425
|
-
homepage: https://github.com/troessner/reek
|
|
455
|
+
homepage: https://github.com/troessner/reek
|
|
426
456
|
licenses:
|
|
427
457
|
- MIT
|
|
428
458
|
metadata: {}
|
|
@@ -438,7 +468,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
438
468
|
requirements:
|
|
439
469
|
- - ">="
|
|
440
470
|
- !ruby/object:Gem::Version
|
|
441
|
-
version: 2.
|
|
471
|
+
version: 2.3.0
|
|
442
472
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
443
473
|
requirements:
|
|
444
474
|
- - ">="
|
|
@@ -446,7 +476,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
446
476
|
version: '0'
|
|
447
477
|
requirements: []
|
|
448
478
|
rubyforge_project:
|
|
449
|
-
rubygems_version: 2.
|
|
479
|
+
rubygems_version: 2.5.2.2
|
|
450
480
|
signing_key:
|
|
451
481
|
specification_version: 4
|
|
452
482
|
summary: Code smell detector for Ruby
|