reek 4.7.1 → 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 +36 -7
- data/.simplecov +1 -0
- data/.travis.yml +3 -9
- data/.yardopts +1 -1
- data/CHANGELOG.md +59 -0
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +5 -5
- 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 +7 -7
- 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 +3 -3
- 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 +80 -75
- 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 +3 -3
- data/features/configuration_via_source_comments/well_formed_source_comments.feature +2 -2
- data/features/locales.feature +32 -0
- data/features/rake_task/rake_task.feature +58 -18
- 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 +40 -0
- data/features/samples.feature +287 -287
- data/features/step_definitions/reek_steps.rb +2 -2
- data/features/step_definitions/sample_file_steps.rb +9 -4
- data/features/support/env.rb +2 -11
- data/features/todo_list.feature +26 -23
- data/lib/reek/ast/builder.rb +1 -1
- data/lib/reek/ast/node.rb +40 -58
- 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/ast/sexp_extensions/send.rb +0 -4
- 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 +31 -16
- data/lib/reek/cli/silencer.rb +14 -3
- data/lib/reek/code_comment.rb +14 -16
- data/lib/reek/configuration/app_configuration.rb +32 -27
- data/lib/reek/configuration/configuration_converter.rb +110 -0
- data/lib/reek/configuration/configuration_file_finder.rb +16 -41
- 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 +3 -3
- data/lib/reek/context/code_context.rb +47 -43
- data/lib/reek/context/ghost_context.rb +0 -2
- data/lib/reek/context/method_context.rb +22 -15
- data/lib/reek/context/module_context.rb +5 -9
- data/lib/reek/context/root_context.rb +0 -4
- data/lib/reek/context/send_context.rb +2 -2
- data/lib/reek/context_builder.rb +43 -44
- data/lib/reek/detector_repository.rb +11 -11
- data/lib/reek/documentation_link.rb +28 -0
- data/lib/reek/errors/bad_detector_configuration_key_in_comment_error.rb +14 -13
- data/lib/reek/errors/bad_detector_in_comment_error.rb +12 -11
- 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 +43 -0
- data/lib/reek/errors/garbage_detector_configuration_in_comment_error.rb +13 -12
- data/lib/reek/errors/incomprehensible_source_error.rb +22 -24
- data/lib/reek/errors/syntax_error.rb +41 -0
- data/lib/reek/examiner.rb +24 -26
- data/lib/reek/logging_error_handler.rb +7 -5
- data/lib/reek/rake/task.rb +8 -4
- 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 +5 -11
- data/lib/reek/smell_detectors/base_detector.rb +30 -26
- data/lib/reek/smell_detectors/boolean_parameter.rb +3 -5
- data/lib/reek/smell_detectors/class_variable.rb +5 -14
- data/lib/reek/smell_detectors/control_parameter.rb +18 -33
- data/lib/reek/smell_detectors/data_clump.rb +15 -9
- data/lib/reek/smell_detectors/duplicate_method_call.rb +23 -17
- data/lib/reek/smell_detectors/feature_envy.rb +9 -7
- data/lib/reek/smell_detectors/instance_variable_assumption.rb +14 -23
- data/lib/reek/smell_detectors/irresponsible_module.rb +5 -12
- data/lib/reek/smell_detectors/long_parameter_list.rb +10 -7
- data/lib/reek/smell_detectors/long_yield_list.rb +10 -7
- data/lib/reek/smell_detectors/manual_dispatch.rb +4 -5
- data/lib/reek/smell_detectors/{prima_donna_method.rb → missing_safe_method.rb} +20 -20
- data/lib/reek/smell_detectors/module_initialize.rb +3 -5
- data/lib/reek/smell_detectors/nested_iterators.rb +16 -24
- data/lib/reek/smell_detectors/nil_check.rb +8 -15
- data/lib/reek/smell_detectors/repeated_conditional.rb +13 -11
- data/lib/reek/smell_detectors/subclassed_from_core_class.rb +7 -8
- data/lib/reek/smell_detectors/too_many_constants.rb +10 -9
- data/lib/reek/smell_detectors/too_many_instance_variables.rb +10 -6
- data/lib/reek/smell_detectors/too_many_methods.rb +11 -7
- data/lib/reek/smell_detectors/too_many_statements.rb +10 -6
- data/lib/reek/smell_detectors/uncommunicative_method_name.rb +10 -11
- data/lib/reek/smell_detectors/uncommunicative_module_name.rb +14 -18
- data/lib/reek/smell_detectors/uncommunicative_parameter_name.rb +17 -22
- data/lib/reek/smell_detectors/uncommunicative_variable_name.rb +26 -27
- data/lib/reek/smell_detectors/unused_parameters.rb +4 -6
- data/lib/reek/smell_detectors/unused_private_method.rb +11 -18
- data/lib/reek/smell_detectors/utility_function.rb +12 -16
- data/lib/reek/smell_detectors.rb +1 -2
- data/lib/reek/smell_warning.rb +15 -8
- data/lib/reek/source/source_code.rb +57 -58
- data/lib/reek/source/source_locator.rb +8 -8
- 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 +8 -8
- data/lib/reek/version.rb +1 -1
- data/reek.gemspec +5 -7
- 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 +14 -34
- data/spec/reek/cli/application_spec.rb +52 -42
- 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 -51
- 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 +70 -106
- data/spec/reek/context/ghost_context_spec.rb +9 -9
- data/spec/reek/context/method_context_spec.rb +2 -2
- data/spec/reek/context/module_context_spec.rb +3 -3
- data/spec/reek/context/root_context_spec.rb +1 -1
- data/spec/reek/context_builder_spec.rb +20 -0
- 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 +136 -29
- data/spec/reek/rake/task_spec.rb +25 -2
- 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/base_detector_spec.rb +4 -5
- 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/irresponsible_module_spec.rb +0 -11
- data/spec/reek/smell_detectors/{prima_donna_method_spec.rb → missing_safe_method_spec.rb} +10 -10
- 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 +36 -15
- 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 +21 -10
- data/spec/reek/smell_detectors/utility_function_spec.rb +57 -5
- data/spec/reek/smell_warning_spec.rb +12 -8
- data/spec/reek/source/source_code_spec.rb +22 -21
- data/spec/reek/source/source_locator_spec.rb +17 -17
- data/spec/reek/spec/should_reek_of_spec.rb +25 -29
- data/spec/reek/spec/should_reek_only_of_spec.rb +2 -2
- data/spec/reek/spec/should_reek_spec.rb +8 -8
- data/spec/reek/spec/smell_matcher_spec.rb +23 -23
- data/spec/reek/tree_dresser_spec.rb +12 -17
- data/spec/spec_helper.rb +6 -17
- data/tasks/configuration.rake +8 -5
- metadata +74 -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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dcc26f0cc3bb682d6af4ccd125c9968049fa7659
|
|
4
|
+
data.tar.gz: 3f07f95ea9d5dc2d9a3228d9720aa991ac1f5232
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: caeb105aa52968eb387304da206083cf07394d1f378c01a6aabf040e2aa264d0016491e69dba31910fa64982cdc8bf9902b036b63639279422c93ad934a91725
|
|
7
|
+
data.tar.gz: 8af65a286c9207f04770b530865755aeeca35b4162d3db66c987b0e6d5c02438faeeee3251bef91ef5e91e4b75235ec2ae23f805a07bfc64d448e7e5066610d6
|
data/.codeclimate.yml
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
version: "2"
|
|
2
|
+
plugins:
|
|
2
3
|
rubocop:
|
|
3
4
|
enabled: true
|
|
4
5
|
reek:
|
|
5
6
|
enabled: true
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
7
|
+
duplication:
|
|
8
|
+
enabled: true
|
|
9
|
+
config:
|
|
10
|
+
languages:
|
|
11
|
+
ruby:
|
|
12
|
+
mass_threshold: 35
|
|
13
|
+
exclude_patterns:
|
|
14
|
+
- coverage/
|
|
15
|
+
- docs/
|
|
16
|
+
- features/
|
|
17
|
+
- logo/
|
|
18
|
+
- pkg/
|
|
19
|
+
- samples/
|
|
20
|
+
- spec/
|
|
21
|
+
- tmp/
|
data/.rubocop.yml
CHANGED
|
@@ -6,7 +6,7 @@ AllCops:
|
|
|
6
6
|
- 'samples/**/*'
|
|
7
7
|
- 'tmp/**/*'
|
|
8
8
|
- 'vendor/**/*'
|
|
9
|
-
TargetRubyVersion: 2.
|
|
9
|
+
TargetRubyVersion: 2.3
|
|
10
10
|
|
|
11
11
|
# Place . on the previous line
|
|
12
12
|
Layout/DotPosition:
|
|
@@ -36,6 +36,15 @@ Layout/MultilineOperationIndentation:
|
|
|
36
36
|
Lint/AmbiguousBlockAssociation:
|
|
37
37
|
Enabled: false
|
|
38
38
|
|
|
39
|
+
# Some of our source examples include interpolation explicitely.
|
|
40
|
+
Lint/InterpolationCheck:
|
|
41
|
+
Exclude:
|
|
42
|
+
- 'spec/**/*'
|
|
43
|
+
|
|
44
|
+
# We use :true and :false as AST node types.
|
|
45
|
+
Lint/BooleanSymbol:
|
|
46
|
+
Enabled: false
|
|
47
|
+
|
|
39
48
|
Lint/HandleExceptions:
|
|
40
49
|
Exclude:
|
|
41
50
|
- 'spec/reek/configuration/configuration_file_finder_spec.rb'
|
|
@@ -51,9 +60,21 @@ Metrics/ClassLength:
|
|
|
51
60
|
- lib/reek/context_builder.rb
|
|
52
61
|
- lib/reek/cli/options.rb
|
|
53
62
|
|
|
63
|
+
Style/SafeNavigation:
|
|
64
|
+
Exclude:
|
|
65
|
+
- lib/reek/ast/node.rb
|
|
66
|
+
- lib/reek/ast/sexp_extensions/module.rb
|
|
67
|
+
|
|
54
68
|
# FIXME: Lower the method length by fixing the biggest offenders
|
|
55
69
|
Metrics/MethodLength:
|
|
56
70
|
Max: 15
|
|
71
|
+
Exclude:
|
|
72
|
+
- 'lib/reek/cli/options.rb'
|
|
73
|
+
|
|
74
|
+
Metrics/AbcSize:
|
|
75
|
+
Exclude:
|
|
76
|
+
- 'lib/reek/cli/options.rb'
|
|
77
|
+
- 'lib/reek/configuration/configuration_converter.rb'
|
|
57
78
|
|
|
58
79
|
# Be rather lenient with line length
|
|
59
80
|
Metrics/LineLength:
|
|
@@ -63,6 +84,15 @@ Metrics/LineLength:
|
|
|
63
84
|
Metrics/ParameterLists:
|
|
64
85
|
CountKeywordArgs: false
|
|
65
86
|
|
|
87
|
+
Naming/AccessorMethodName:
|
|
88
|
+
Exclude:
|
|
89
|
+
- 'lib/reek/context/visibility_tracker.rb'
|
|
90
|
+
|
|
91
|
+
# EOS is a fine name to use in our specs
|
|
92
|
+
Naming/HeredocDelimiterNaming:
|
|
93
|
+
Exclude:
|
|
94
|
+
- 'spec/**/*'
|
|
95
|
+
|
|
66
96
|
# FIXME: Update specs to avoid offenses
|
|
67
97
|
RSpec/AnyInstance:
|
|
68
98
|
Exclude:
|
|
@@ -82,8 +112,8 @@ RSpec/MultipleDescribes:
|
|
|
82
112
|
Exclude:
|
|
83
113
|
- 'spec/reek/ast/sexp_extensions_spec.rb'
|
|
84
114
|
- 'spec/reek/code_comment_spec.rb'
|
|
85
|
-
- 'spec/reek/report/
|
|
86
|
-
- 'spec/reek/report/
|
|
115
|
+
- 'spec/reek/report/location_formatter_spec.rb'
|
|
116
|
+
- 'spec/reek/report/progress_formatter_spec.rb'
|
|
87
117
|
|
|
88
118
|
# FIXME: Update specs to avoid offenses
|
|
89
119
|
RSpec/MultipleExpectations:
|
|
@@ -99,7 +129,10 @@ RSpec/MultipleExpectations:
|
|
|
99
129
|
# FIXME: Update specs to avoid offenses
|
|
100
130
|
RSpec/NestedGroups:
|
|
101
131
|
Exclude:
|
|
132
|
+
- 'spec/reek/report/code_climate/code_climate_fingerprint_spec.rb'
|
|
102
133
|
- 'spec/reek/cli/application_spec.rb'
|
|
134
|
+
- 'spec/reek/configuration/schema_validator_spec.rb'
|
|
135
|
+
- 'spec/reek/configuration/configuration_file_finder_spec.rb'
|
|
103
136
|
|
|
104
137
|
# rubocop-rspec expects a CodeClimate namespace to go with the code_climate directory.
|
|
105
138
|
RSpec/FilePath:
|
|
@@ -109,10 +142,6 @@ RSpec/FilePath:
|
|
|
109
142
|
- 'spec/reek/report/code_climate/code_climate_formatter_spec.rb'
|
|
110
143
|
- 'spec/reek/report/code_climate/code_climate_report_spec.rb'
|
|
111
144
|
|
|
112
|
-
Style/AccessorMethodName:
|
|
113
|
-
Exclude:
|
|
114
|
-
- 'lib/reek/context/visibility_tracker.rb'
|
|
115
|
-
|
|
116
145
|
# Allow and/or for control flow only
|
|
117
146
|
Style/AndOr:
|
|
118
147
|
EnforcedStyle: conditionals
|
data/.simplecov
CHANGED
data/.travis.yml
CHANGED
|
@@ -5,26 +5,20 @@ language: ruby
|
|
|
5
5
|
bundler_args: --without debugging
|
|
6
6
|
script: bundle exec rake ci
|
|
7
7
|
rvm:
|
|
8
|
-
- 2.1
|
|
9
|
-
- 2.2
|
|
10
8
|
- 2.3
|
|
11
9
|
- 2.4
|
|
12
|
-
-
|
|
10
|
+
- 2.5
|
|
11
|
+
- jruby-9.1.15.0
|
|
13
12
|
- jruby-head
|
|
14
13
|
- ruby-head
|
|
15
14
|
- rubinius-3
|
|
16
15
|
matrix:
|
|
17
16
|
allow_failures:
|
|
18
|
-
- rvm: jruby-9.1.
|
|
17
|
+
- rvm: jruby-9.1.15.0
|
|
19
18
|
- rvm: jruby-head
|
|
20
19
|
- rvm: ruby-head
|
|
21
20
|
- rvm: rubinius-3
|
|
22
21
|
fast_finish: true
|
|
23
|
-
before_install:
|
|
24
|
-
- rvm use @global
|
|
25
|
-
- gem uninstall bundler -x
|
|
26
|
-
- gem install bundler --version=1.13.7
|
|
27
|
-
- bundler --version
|
|
28
22
|
notifications:
|
|
29
23
|
email:
|
|
30
24
|
- timo.roessner@googlemail.com
|
data/.yardopts
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,64 @@
|
|
|
1
1
|
# Change log
|
|
2
2
|
|
|
3
|
+
## 5.0.0 (2018-06-18)
|
|
4
|
+
|
|
5
|
+
*Breaking changes:*
|
|
6
|
+
|
|
7
|
+
* (David Fisher) Change PrimaDonnaMethod to MissingSafeMethod
|
|
8
|
+
* (mvz) Always include documentation in JSON and YAML
|
|
9
|
+
* (mvz) Remove Syntax smell detector
|
|
10
|
+
* (mvz) Remove deprecated Examiner#description (in favor of Examiner#origin)
|
|
11
|
+
* (mvz) Allow only detector names in configuration hash
|
|
12
|
+
* (mvz) Do not accept a class as parameter for reek_of
|
|
13
|
+
* (mvz) Allow only .reek.yml instead of any file name ending in .reek
|
|
14
|
+
* (troessner) Validate our configuration by using a schema
|
|
15
|
+
* (troessner) Scope detectors in the configuration under `detectors`
|
|
16
|
+
* (troessner) Move directory directives under a special key
|
|
17
|
+
* (troessner) Use strings not regexes in our configuration file
|
|
18
|
+
* (troessner) Replace `wiki-links` flag with `documentation` flag
|
|
19
|
+
* (troessner) Add yml extension to Reeks configuration file
|
|
20
|
+
* (troessner) Drop legacy code comment separator
|
|
21
|
+
* (troessner) Drop Ruby 2.2 support
|
|
22
|
+
* (troessner) Drop Ruby 2.1 support
|
|
23
|
+
|
|
24
|
+
*Non breaking changes:*
|
|
25
|
+
|
|
26
|
+
* (Paul Sadauskas) Add support for --stdin-filename
|
|
27
|
+
* (mvz) Generate versioned documentation links
|
|
28
|
+
* (mvz) Bugfix: Only report FeatureEnvy for instance methods
|
|
29
|
+
* (troessner) List all smells
|
|
30
|
+
|
|
31
|
+
## 4.8.2 (2018-06-26)
|
|
32
|
+
|
|
33
|
+
* (mvz) Only report FeatureEnvy for instance methods
|
|
34
|
+
* (mvz) Generate versioned documentation links
|
|
35
|
+
|
|
36
|
+
## 4.8.1 (2018-04-12)
|
|
37
|
+
|
|
38
|
+
* (mvz) Loosen dependency on rainbow
|
|
39
|
+
|
|
40
|
+
## 4.8.0 (2018-03-05)
|
|
41
|
+
|
|
42
|
+
* (pocke) Support Ruby 2.5
|
|
43
|
+
* (mvz) Print original exception class in certain error messages
|
|
44
|
+
* (mvz) Only include long exception message in CLI output
|
|
45
|
+
* (chastell) Add official support for Ruby 2.5
|
|
46
|
+
* (mvz) Do not detect ModuleInitialize for nested dynamic classes
|
|
47
|
+
|
|
48
|
+
## 4.7.3 (2017-11-05)
|
|
49
|
+
|
|
50
|
+
* (mvz) Handle UTF-8 files in all locales
|
|
51
|
+
* (troessner) Handle encoding and other errors when parsing the source
|
|
52
|
+
* (mvz) Report method source line in PrimaDonnaMethod
|
|
53
|
+
* (mvz) Pick up config file in reek matcher
|
|
54
|
+
* (mvz) Let REEK_SRC override set values in rake task
|
|
55
|
+
|
|
56
|
+
## 4.7.2 (2017-07-24)
|
|
57
|
+
|
|
58
|
+
* (mvz) Also report unused uncommunicative parameter names
|
|
59
|
+
* (mvz) Track visibility correctly when using method definition visibility modifiers
|
|
60
|
+
* (mvz) Handle method comments when using method definition visibility modifiers
|
|
61
|
+
|
|
3
62
|
## 4.7.1 (2017-06-12)
|
|
4
63
|
|
|
5
64
|
* (mvz) Improve IrresponsibleModule and fix some bugs along
|
data/CONTRIBUTING.md
CHANGED
|
@@ -111,7 +111,7 @@ regard than if it were run in a terminal.
|
|
|
111
111
|
|
|
112
112
|
#### Failing Cucumber Scenarios
|
|
113
113
|
|
|
114
|
-
If there is a failing scenario and you
|
|
114
|
+
If there is a failing scenario and you cannot figure out why it is failing,
|
|
115
115
|
just run the failing scenario: `bundle exec cucumber
|
|
116
116
|
features/failing_scenario.feature:line`. By doing so Aruba will leave its set
|
|
117
117
|
up in the `tmp/aruba` directory. You can then `cd` into this directory and run
|
data/Gemfile
CHANGED
|
@@ -8,16 +8,16 @@ group :development do
|
|
|
8
8
|
gem 'activesupport', '>= 4.2'
|
|
9
9
|
gem 'aruba', '~> 0.14.0'
|
|
10
10
|
gem 'ataru', '~> 0.2.0'
|
|
11
|
-
gem 'cucumber', '~>
|
|
12
|
-
gem '
|
|
11
|
+
gem 'cucumber', '~> 3.0'
|
|
12
|
+
gem 'factory_bot', '~> 4.0'
|
|
13
13
|
gem 'rake', '~> 12.0'
|
|
14
14
|
gem 'rspec', '~> 3.0'
|
|
15
|
-
gem 'simplecov', '~> 0.
|
|
15
|
+
gem 'simplecov', '~> 0.16.1'
|
|
16
16
|
gem 'yard', '~> 0.9.5'
|
|
17
17
|
|
|
18
18
|
if RUBY_VERSION >= '2.3'
|
|
19
|
-
gem 'rubocop', '~> 0.
|
|
20
|
-
gem 'rubocop-rspec', '~> 1.
|
|
19
|
+
gem 'rubocop', '~> 0.57.1'
|
|
20
|
+
gem 'rubocop-rspec', '~> 1.20'
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
platforms :mri do
|
data/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- [Overview](#overview)
|
|
8
8
|
- [Quickstart](#quickstart)
|
|
9
9
|
- [Example](#example)
|
|
10
|
-
- [Supported
|
|
10
|
+
- [Supported Ruby versions](#supported-ruby-versions)
|
|
11
11
|
- [Fixing Smell Warnings](#fixing-smell-warnings)
|
|
12
12
|
- [Sources](#sources)
|
|
13
13
|
- [Code smells](#code-smells)
|
|
@@ -39,13 +39,18 @@
|
|
|
39
39
|
* [](https://badge.fury.io/rb/reek)
|
|
40
40
|
* 
|
|
41
41
|
* 
|
|
42
|
-
* [](https://gemnasium.com/github.com/troessner/reek)
|
|
43
42
|
* [](https://inch-ci.org/github/troessner/reek)
|
|
44
43
|
* [](https://codeclimate.com/github/troessner/reek)
|
|
45
44
|
* [](https://codebeat.co/projects/github-com-troessner-reek)
|
|
46
45
|
* 
|
|
47
46
|
* 
|
|
48
47
|
|
|
48
|
+
## Reek 5 is out!
|
|
49
|
+
|
|
50
|
+
Reek 5 is out and with it a bunch of breaking changes. If you're a new user you can just
|
|
51
|
+
continue with the quickstart below. If you're a Reek 4 user and would like to upgrade to 5, don't
|
|
52
|
+
worry, this shouldn't take you more than 10 minutes. Check out our [Upgrade Guide](docs/Reek-4-to-Reek-5-migration.md).
|
|
53
|
+
|
|
49
54
|
## Quickstart
|
|
50
55
|
|
|
51
56
|
Reek is a tool that examines Ruby classes, modules and methods and reports any
|
|
@@ -84,25 +89,24 @@ end
|
|
|
84
89
|
Reek will report the following code smells in this file:
|
|
85
90
|
|
|
86
91
|
```
|
|
87
|
-
$ reek demo.rb
|
|
92
|
+
$ reek --no-documentation demo.rb
|
|
88
93
|
Inspecting 1 file(s):
|
|
89
94
|
S
|
|
90
95
|
|
|
91
96
|
demo.rb -- 2 warnings:
|
|
92
|
-
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
93
|
-
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
97
|
+
[4]:UncommunicativeMethodName: Smelly#x has the name 'x'
|
|
98
|
+
[5]:UncommunicativeVariableName: Smelly#x has the variable name 'y'
|
|
94
99
|
```
|
|
95
100
|
|
|
96
|
-
## Supported
|
|
101
|
+
## Supported Ruby versions
|
|
97
102
|
|
|
98
|
-
Reek is officially
|
|
103
|
+
Reek is officially supported for the following CRuby versions:
|
|
99
104
|
|
|
100
|
-
- 2.1
|
|
101
|
-
- 2.2
|
|
102
105
|
- 2.3
|
|
103
106
|
- 2.4
|
|
107
|
+
- 2.5
|
|
104
108
|
|
|
105
|
-
Other
|
|
109
|
+
Other Ruby implementations (like Rubinius or JRuby) are not officially supported but should work as well.
|
|
106
110
|
|
|
107
111
|
## Fixing Smell Warnings
|
|
108
112
|
|
|
@@ -253,12 +257,13 @@ For a summary of those CLI options see [Command-Line Options](docs/Command-Line-
|
|
|
253
257
|
#### Configuration loading
|
|
254
258
|
|
|
255
259
|
Configuring Reek via a configuration file is by far the most powerful way.
|
|
260
|
+
Reek expects this filename to be `.reek.yml` but you can override this via the CLI `-c` switch (see below).
|
|
256
261
|
|
|
257
|
-
There are three ways of passing Reek
|
|
262
|
+
There are three ways of passing Reek the configuration file:
|
|
258
263
|
|
|
259
264
|
1. Using the CLI `-c` switch (see [_Command-line interface_](#command-line-interface) above)
|
|
260
|
-
2. Having
|
|
261
|
-
3. Having
|
|
265
|
+
2. Having the configuration file either in your current working directory or in a parent directory (more on that later)
|
|
266
|
+
3. Having the configuration file in your home directory
|
|
262
267
|
|
|
263
268
|
The order in which Reek tries to find such a configuration
|
|
264
269
|
file is exactly the above: first it checks if we have given
|
|
@@ -276,43 +281,46 @@ of how many `*.reek` files you might have on your filesystem.
|
|
|
276
281
|
|
|
277
282
|
We put a lot of effort into making Reek's configuration as self explanatory as possible so the
|
|
278
283
|
best way to understand it is by looking at a simple
|
|
279
|
-
example (e.g.
|
|
284
|
+
example (e.g. `.reek.yml` in your project directory):
|
|
280
285
|
|
|
281
286
|
```yaml
|
|
282
287
|
---
|
|
283
288
|
|
|
284
289
|
### Generic smell configuration
|
|
285
290
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
#
|
|
292
|
-
# because you
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
#
|
|
300
|
-
#
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
291
|
+
detectors:
|
|
292
|
+
# You can disable smells completely
|
|
293
|
+
IrresponsibleModule:
|
|
294
|
+
enabled: false
|
|
295
|
+
|
|
296
|
+
# You can use filters to silence Reek warnings.
|
|
297
|
+
# Either because you simply disagree with Reek (we are not the police) or
|
|
298
|
+
# because you want to fix this at a later point in time.
|
|
299
|
+
NestedIterators:
|
|
300
|
+
exclude:
|
|
301
|
+
- "MyWorker#self.class_method" # should be refactored
|
|
302
|
+
- "AnotherWorker#instance_method" # should be refactored as well
|
|
303
|
+
|
|
304
|
+
# A lot of smells allow fine tuning their configuration. You can look up all available options
|
|
305
|
+
# in the corresponding smell documentation in /docs. In most cases you probably can just go
|
|
306
|
+
# with the defaults as documented in defaults.reek.yml.
|
|
307
|
+
DataClump:
|
|
308
|
+
max_copies: 3
|
|
309
|
+
min_clump_size: 3
|
|
304
310
|
|
|
305
311
|
### Directory specific configuration
|
|
306
312
|
|
|
307
313
|
# You can configure smells on a per-directory base.
|
|
308
314
|
# E.g. the classic Rails case: controllers smell of NestedIterators (see /docs/Nested-Iterators.md) and
|
|
309
315
|
# helpers smell of UtilityFunction (see docs/Utility-Function.md)
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
+
# Note that we only allow configuration on a directory level, not a file level, so all paths have to point to directories.
|
|
317
|
+
directories:
|
|
318
|
+
"web_app/app/controllers":
|
|
319
|
+
NestedIterators:
|
|
320
|
+
enabled: false
|
|
321
|
+
"web_app/app/helpers":
|
|
322
|
+
UtilityFunction:
|
|
323
|
+
enabled: false
|
|
316
324
|
|
|
317
325
|
### Excluding directories
|
|
318
326
|
|
|
@@ -322,6 +330,14 @@ exclude_paths:
|
|
|
322
330
|
- lib/rake/legacy_tasks
|
|
323
331
|
```
|
|
324
332
|
|
|
333
|
+
As you see above, Reek's configuration consists of 3 different sections denoted by 3 different keys:
|
|
334
|
+
|
|
335
|
+
* detectors
|
|
336
|
+
* directories
|
|
337
|
+
* exclude_paths
|
|
338
|
+
|
|
339
|
+
Whatever you add to your configuration should be scoped under one of those keys.
|
|
340
|
+
|
|
325
341
|
If you have a directory directive for which a default directive exists, the more specific
|
|
326
342
|
one (which is the directory directive) will take precedence.
|
|
327
343
|
|
|
@@ -329,15 +345,12 @@ This configuration for instance:
|
|
|
329
345
|
|
|
330
346
|
```yaml
|
|
331
347
|
---
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
max_statements: 5
|
|
337
|
-
|
|
338
|
-
"app/controllers":
|
|
348
|
+
detectors:
|
|
349
|
+
IrresponsibleModule:
|
|
350
|
+
enabled: false
|
|
351
|
+
|
|
339
352
|
TooManyStatements:
|
|
340
|
-
max_statements:
|
|
353
|
+
max_statements: 5
|
|
341
354
|
```
|
|
342
355
|
|
|
343
356
|
translates to:
|
|
@@ -346,16 +359,53 @@ translates to:
|
|
|
346
359
|
* TooManyStatements#max_statements is 10 in "app/controllers"
|
|
347
360
|
* TooManyStatements#max_statements is 5 everywhere else
|
|
348
361
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
types offer a configuration that goes beyond that of the basic smell options, for instance
|
|
362
|
+
Every smell detector supports our [Basic Smell Options](docs/Basic-Smell-Options.md). As you can see above,
|
|
363
|
+
certain smell types offer a configuration that goes beyond that of the basic smell options, for instance
|
|
352
364
|
[Data Clump](docs/Data-Clump.md).
|
|
353
365
|
All options that go beyond the [Basic Smell Options](docs/Basic-Smell-Options.md)
|
|
354
366
|
are documented in the corresponding smell type /docs page (if you want to get a quick overview over all possible
|
|
355
|
-
configurations you can also check out [the `
|
|
367
|
+
configurations you can also check out [the `defaults.reek.yml` file in this repository](docs/defaults.reek.yml).
|
|
356
368
|
|
|
357
369
|
Note that you do not need a configuration file at all.
|
|
358
|
-
If you're fine with all the [defaults](defaults.reek) we set you can skip this completely.
|
|
370
|
+
If you're fine with all the [defaults.reek.yml](docs/defaults.reek.yml) we set you can skip this completely.
|
|
371
|
+
|
|
372
|
+
Don't worry about introducing a mistake in your configuration file that might go unnoticed - Reek uses a
|
|
373
|
+
schema to validate your configuration against on start up and will faily loudly in case you
|
|
374
|
+
misspelled an option or used the wrong data type for a value like this:
|
|
375
|
+
|
|
376
|
+
```
|
|
377
|
+
Error: We found some problems with your configuration file: [/detectors/DetectorWithTypo] key 'DetectorWithTypo:' is undefined.
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
Reek takes one configuration file and one configuration file only with `.reek.yml` being the default name.
|
|
381
|
+
|
|
382
|
+
In case you have to have one or more configuration files in the directory (e.g. you're
|
|
383
|
+
toying around with different, mutually exclusive settings) you need to tell Reek
|
|
384
|
+
explicitly which file to use via `reek -c config.reek`.
|
|
385
|
+
|
|
386
|
+
### Source code comments
|
|
387
|
+
|
|
388
|
+
In case you need to suppress a smell warning and you can't or don't want to
|
|
389
|
+
use configuration files for whatever reasons you can also use special
|
|
390
|
+
source code comments like this:
|
|
391
|
+
|
|
392
|
+
```Ruby
|
|
393
|
+
# This method smells of :reek:NestedIterators
|
|
394
|
+
def smelly_method foo
|
|
395
|
+
foo.each {|bar| bar.each {|baz| baz.qux}}
|
|
396
|
+
end
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
You can even pass in smell specific configuration settings:
|
|
400
|
+
|
|
401
|
+
```Ruby
|
|
402
|
+
# :reek:NestedIterators { max_allowed_nesting: 2 }
|
|
403
|
+
def smelly_method foo
|
|
404
|
+
foo.each {|bar| bar.each {|baz| baz.qux}}
|
|
405
|
+
end
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
This is an incredibly powerful feature and further explained under [Smell Suppresion](docs/Smell-Suppression.md).
|
|
359
409
|
|
|
360
410
|
### Generating a 'todo' list
|
|
361
411
|
|
|
@@ -403,42 +453,6 @@ reek -c other_configuration.reek --todo lib/
|
|
|
403
453
|
`other_configuration.reek` will simply be ignored (as outlined before, Reek
|
|
404
454
|
is supposed to have one configuration file and one file only).
|
|
405
455
|
|
|
406
|
-
### Beware of multiple configuration files
|
|
407
|
-
|
|
408
|
-
Reek takes one configuration file and one configuration file only.
|
|
409
|
-
|
|
410
|
-
If you have more than one configuration file in the same directory Reek
|
|
411
|
-
will not know what configuration file to use. If this happens Reek will
|
|
412
|
-
print a warning on STDERR and exit with the failure exit status 1.
|
|
413
|
-
|
|
414
|
-
In case you have to have one or more configuration files in the directory (e.g. you're
|
|
415
|
-
toying around with different, mutually exclusive settings) you need to tell Reek
|
|
416
|
-
explicitly which file to use via `reek -c config.reek`.
|
|
417
|
-
|
|
418
|
-
### Source code comments
|
|
419
|
-
|
|
420
|
-
In case you need to suppress a smell warning and you can't or don't want to
|
|
421
|
-
use configuration files for whatever reasons you can also use special
|
|
422
|
-
source code comments like this:
|
|
423
|
-
|
|
424
|
-
```Ruby
|
|
425
|
-
# This method smells of :reek:NestedIterators
|
|
426
|
-
def smelly_method foo
|
|
427
|
-
foo.each {|bar| bar.each {|baz| baz.qux}}
|
|
428
|
-
end
|
|
429
|
-
```
|
|
430
|
-
|
|
431
|
-
You can even pass in smell specific configuration settings:
|
|
432
|
-
|
|
433
|
-
```Ruby
|
|
434
|
-
# :reek:NestedIterators { max_allowed_nesting: 2 }
|
|
435
|
-
def smelly_method foo
|
|
436
|
-
foo.each {|bar| bar.each {|baz| baz.qux}}
|
|
437
|
-
end
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
This is an incredible powerful feature and further explained under [Smell Suppresion](docs/Smell-Suppression.md).
|
|
441
|
-
|
|
442
456
|
## Usage
|
|
443
457
|
|
|
444
458
|
Besides the obvious
|
|
@@ -528,6 +542,20 @@ If you don't feel like getting your hands dirty with code there are still other
|
|
|
528
542
|
* Open up an [issue](https://github.com/troessner/reek/issues) and report bugs
|
|
529
543
|
* Suggest other improvements like additional smells for instance
|
|
530
544
|
|
|
545
|
+
### Running Code Climate locally
|
|
546
|
+
|
|
547
|
+
If you run into Code Climate issues (e.g., go over code duplication
|
|
548
|
+
threshold) you might want to be able to run Code Climate against
|
|
549
|
+
the Reek codebase locally. To do this, you need to do the following:
|
|
550
|
+
|
|
551
|
+
* [install Docker CE](https://docs.docker.com/engine/installation/)
|
|
552
|
+
* [install Code Climate CLI](https://github.com/codeclimate/codeclimate#installation)
|
|
553
|
+
* `gem install codeclimate`
|
|
554
|
+
* `codeclimate engines:install`
|
|
555
|
+
|
|
556
|
+
Now you can run various Code Climate engines,
|
|
557
|
+
e.g., `codeclimate analyze -e duplication`
|
|
558
|
+
|
|
531
559
|
## Output formats
|
|
532
560
|
|
|
533
561
|
Reek supports 5 output formats:
|
|
@@ -544,23 +572,24 @@ Making Reek "Rails"-friendly is fairly simple since we support directory specifi
|
|
|
544
572
|
Just add this to your configuration file:
|
|
545
573
|
|
|
546
574
|
```Yaml
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
575
|
+
directories:
|
|
576
|
+
"app/controllers":
|
|
577
|
+
IrresponsibleModule:
|
|
578
|
+
enabled: false
|
|
579
|
+
NestedIterators:
|
|
580
|
+
max_allowed_nesting: 2
|
|
581
|
+
UnusedPrivateMethod:
|
|
582
|
+
enabled: false
|
|
583
|
+
InstanceVariableAssumption:
|
|
584
|
+
enabled: false
|
|
585
|
+
"app/helpers":
|
|
586
|
+
IrresponsibleModule:
|
|
587
|
+
enabled: false
|
|
588
|
+
UtilityFunction:
|
|
589
|
+
enabled: false
|
|
590
|
+
"app/mailers":
|
|
591
|
+
InstanceVariableAssumption:
|
|
592
|
+
enabled: false
|
|
564
593
|
```
|
|
565
594
|
|
|
566
595
|
Be careful though, Reek does not merge your configuration entries, so if you already have a directory directive for "app/controllers" or "app/helpers" you need to update those directives instead of copying the above YAML sample into your configuration file.
|
|
@@ -573,6 +602,7 @@ Be careful though, Reek does not merge your configuration entries, so if you alr
|
|
|
573
602
|
* [TextMate Bundle](https://github.com/peeyush1234/reek.tmbundle)
|
|
574
603
|
* [Atom plugin](https://atom.io/packages/linter-reek)
|
|
575
604
|
* [SublimeLinter plugin](https://packagecontrol.io/packages/SublimeLinter-contrib-reek)
|
|
605
|
+
* [VS Code plugin](https://github.com/rubyide/vscode-ruby)
|
|
576
606
|
* [Emacs plugin](https://github.com/hanmoi-choi/reek-emacs)
|
|
577
607
|
|
|
578
608
|
### Projects that use or support us
|
data/Rakefile
CHANGED
|
@@ -3,6 +3,19 @@ require 'rake/clean'
|
|
|
3
3
|
|
|
4
4
|
Dir['tasks/**/*.rake'].each { |t| load t }
|
|
5
5
|
|
|
6
|
-
task
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
task :ci do
|
|
7
|
+
[
|
|
8
|
+
'test:spec',
|
|
9
|
+
'configuration:update_default_configuration',
|
|
10
|
+
'test:features',
|
|
11
|
+
:rubocop,
|
|
12
|
+
'test:quality',
|
|
13
|
+
:ataru
|
|
14
|
+
].each do |name|
|
|
15
|
+
puts "\n=== Running #{name}...\n"
|
|
16
|
+
Rake::Task[name].invoke
|
|
17
|
+
puts "\n=== Running #{name} -> Done\n"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
task default: :ci
|