reek 6.0.2 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +13 -0
- data/.github/workflows/ruby.yml +57 -0
- data/.rubocop.yml +6 -12
- data/.rubocop_todo.yml +6 -4
- data/CHANGELOG.md +95 -0
- data/CONTRIBUTING.md +10 -10
- data/Dockerfile +1 -1
- data/Gemfile +8 -7
- data/README.md +29 -29
- data/bin/code_climate_reek +56 -8
- data/lib/reek/ast/ast_node_class_map.rb +1 -1
- data/lib/reek/ast/node.rb +1 -1
- data/lib/reek/ast/sexp_extensions/arguments.rb +20 -0
- data/lib/reek/ast/sexp_extensions/case.rb +1 -1
- data/lib/reek/ast/sexp_extensions/if.rb +1 -1
- data/lib/reek/ast/sexp_extensions/send.rb +22 -7
- data/lib/reek/cli/command/todo_list_command.rb +3 -3
- data/lib/reek/cli/options.rb +6 -6
- data/lib/reek/{report/code_climate → code_climate}/code_climate_configuration.rb +1 -1
- data/lib/reek/{report/code_climate → code_climate}/code_climate_configuration.yml +41 -41
- data/lib/reek/{report/code_climate → code_climate}/code_climate_fingerprint.rb +2 -2
- data/lib/reek/{report/code_climate → code_climate}/code_climate_formatter.rb +2 -4
- data/lib/reek/{report/code_climate → code_climate}/code_climate_report.rb +3 -3
- data/lib/reek/code_comment.rb +25 -20
- data/lib/reek/configuration/app_configuration.rb +5 -5
- data/lib/reek/configuration/configuration_converter.rb +1 -1
- data/lib/reek/configuration/configuration_file_finder.rb +5 -4
- data/lib/reek/configuration/default_directive.rb +1 -1
- data/lib/reek/configuration/directory_directives.rb +1 -1
- data/lib/reek/configuration/excluded_paths.rb +3 -2
- data/lib/reek/configuration/schema.rb +177 -0
- data/lib/reek/configuration/schema_validator.rb +12 -13
- data/lib/reek/context/attribute_context.rb +1 -1
- data/lib/reek/context/code_context.rb +1 -1
- data/lib/reek/context/method_context.rb +1 -1
- data/lib/reek/context/module_context.rb +4 -0
- data/lib/reek/context/refinement_context.rb +16 -0
- data/lib/reek/context/send_context.rb +7 -1
- data/lib/reek/context_builder.rb +17 -3
- data/lib/reek/documentation_link.rb +3 -5
- data/lib/reek/errors/bad_detector_configuration_key_in_comment_error.rb +2 -2
- data/lib/reek/errors/bad_detector_in_comment_error.rb +2 -2
- data/lib/reek/errors/encoding_error.rb +1 -1
- data/lib/reek/errors/garbage_detector_configuration_in_comment_error.rb +2 -2
- data/lib/reek/errors/incomprehensible_source_error.rb +1 -1
- data/lib/reek/errors/legacy_comment_separator_error.rb +2 -2
- data/lib/reek/errors/syntax_error.rb +1 -1
- data/lib/reek/rake/task.rb +5 -5
- data/lib/reek/smell_detectors/base_detector.rb +1 -1
- data/lib/reek/smell_detectors/class_variable.rb +2 -2
- data/lib/reek/smell_detectors/control_parameter_helpers/candidate.rb +6 -6
- data/lib/reek/smell_detectors/control_parameter_helpers/control_parameter_finder.rb +1 -1
- data/lib/reek/smell_detectors/duplicate_method_call.rb +5 -5
- data/lib/reek/smell_detectors/instance_variable_assumption.rb +8 -8
- data/lib/reek/smell_detectors/nested_iterators.rb +4 -3
- data/lib/reek/smell_detectors/unused_private_method.rb +3 -2
- data/lib/reek/smell_warning.rb +1 -1
- data/lib/reek/source/source_locator.rb +1 -3
- data/lib/reek/spec/should_reek_of.rb +11 -9
- data/lib/reek/spec.rb +1 -1
- data/lib/reek/version.rb +2 -2
- data/reek.gemspec +29 -25
- metadata +37 -250
- data/.travis.yml +0 -40
- data/docs/API.md +0 -174
- data/docs/Attribute.md +0 -39
- data/docs/Basic-Smell-Options.md +0 -85
- data/docs/Boolean-Parameter.md +0 -54
- data/docs/Class-Variable.md +0 -40
- data/docs/Code-Smells.md +0 -39
- data/docs/Command-Line-Options.md +0 -119
- data/docs/Control-Couple.md +0 -26
- data/docs/Control-Parameter.md +0 -32
- data/docs/Data-Clump.md +0 -46
- data/docs/Duplicate-Method-Call.md +0 -264
- data/docs/Feature-Envy.md +0 -93
- data/docs/How-To-Write-New-Detectors.md +0 -132
- data/docs/How-reek-works-internally.md +0 -114
- data/docs/Instance-Variable-Assumption.md +0 -163
- data/docs/Irresponsible-Module.md +0 -47
- data/docs/Large-Class.md +0 -16
- data/docs/Long-Parameter-List.md +0 -39
- data/docs/Long-Yield-List.md +0 -37
- data/docs/Manual-Dispatch.md +0 -30
- data/docs/Missing-Safe-Method.md +0 -92
- data/docs/Module-Initialize.md +0 -62
- data/docs/Nested-Iterators.md +0 -59
- data/docs/Nil-Check.md +0 -47
- data/docs/RSpec-matchers.md +0 -129
- data/docs/Rake-Task.md +0 -66
- data/docs/Reek-4-to-Reek-5-migration.md +0 -188
- data/docs/Reek-Driven-Development.md +0 -46
- data/docs/Repeated-Conditional.md +0 -47
- data/docs/Simulated-Polymorphism.md +0 -16
- data/docs/Smell-Suppression.md +0 -96
- data/docs/Style-Guide.md +0 -19
- data/docs/Subclassed-From-Core-Class.md +0 -79
- data/docs/Too-Many-Constants.md +0 -37
- data/docs/Too-Many-Instance-Variables.md +0 -43
- data/docs/Too-Many-Methods.md +0 -56
- data/docs/Too-Many-Statements.md +0 -54
- data/docs/Uncommunicative-Method-Name.md +0 -94
- data/docs/Uncommunicative-Module-Name.md +0 -92
- data/docs/Uncommunicative-Name.md +0 -18
- data/docs/Uncommunicative-Parameter-Name.md +0 -90
- data/docs/Uncommunicative-Variable-Name.md +0 -96
- data/docs/Unused-Parameters.md +0 -28
- data/docs/Unused-Private-Method.md +0 -101
- data/docs/Utility-Function.md +0 -56
- data/docs/Versioning-Policy.md +0 -7
- data/docs/YAML-Reports.md +0 -93
- data/docs/defaults.reek.yml +0 -129
- data/docs/templates/default/docstring/html/public_api_marker.erb +0 -3
- data/docs/templates/default/docstring/setup.rb +0 -37
- data/docs/templates/default/fulldoc/html/css/common.css +0 -1
- data/docs/yard_plugin.rb +0 -17
- data/features/command_line_interface/basic_usage.feature +0 -15
- data/features/command_line_interface/options.feature +0 -123
- data/features/command_line_interface/show_progress.feature +0 -33
- data/features/command_line_interface/smell_selection.feature +0 -15
- data/features/command_line_interface/smells_count.feature +0 -38
- data/features/command_line_interface/stdin.feature +0 -65
- data/features/configuration_files/accept_setting.feature +0 -87
- data/features/configuration_files/directory_specific_directives.feature +0 -274
- data/features/configuration_files/exclude_directives.feature +0 -35
- data/features/configuration_files/exclude_paths_directives.feature +0 -42
- data/features/configuration_files/masking_smells.feature +0 -94
- data/features/configuration_files/mix_accept_reject_setting.feature +0 -84
- data/features/configuration_files/reject_setting.feature +0 -89
- data/features/configuration_files/schema_validation.feature +0 -59
- data/features/configuration_files/show_configuration_file.feature +0 -44
- data/features/configuration_files/unused_private_method.feature +0 -68
- data/features/configuration_loading.feature +0 -91
- data/features/configuration_via_source_comments/erroneous_source_comments.feature +0 -68
- data/features/configuration_via_source_comments/well_formed_source_comments.feature +0 -116
- data/features/locales.feature +0 -32
- data/features/programmatic_access.feature +0 -41
- data/features/rake_task/rake_task.feature +0 -138
- data/features/reports/codeclimate.feature +0 -59
- data/features/reports/json.feature +0 -59
- data/features/reports/reports.feature +0 -219
- data/features/reports/yaml.feature +0 -52
- data/features/rspec_matcher.feature +0 -41
- data/features/samples.feature +0 -305
- data/features/step_definitions/.rubocop.yml +0 -5
- data/features/step_definitions/reek_steps.rb +0 -102
- data/features/step_definitions/sample_file_steps.rb +0 -63
- data/features/support/env.rb +0 -33
- data/features/todo_list.feature +0 -108
- data/lib/reek/configuration/schema.yml +0 -210
- data/samples/checkstyle.xml +0 -7
- data/samples/clean_source/clean.rb +0 -6
- data/samples/configuration/accepts_rejects_and_excludes_for_detectors.reek.yml +0 -29
- data/samples/configuration/accepts_rejects_and_excludes_for_directory_directives.reek.yml +0 -30
- data/samples/configuration/corrupt.reek +0 -1
- data/samples/configuration/empty.reek +0 -0
- data/samples/configuration/full_configuration.reek +0 -13
- data/samples/configuration/full_mask.reek +0 -6
- data/samples/configuration/home/home.reek.yml +0 -4
- data/samples/configuration/partial_mask.reek +0 -4
- data/samples/configuration/regular_configuration/.reek.yml +0 -4
- data/samples/configuration/regular_configuration/empty_sub_directory/.gitignore +0 -0
- data/samples/configuration/with_excluded_paths.reek +0 -5
- data/samples/no_config_file/.keep +0 -0
- data/samples/paths.rb +0 -5
- data/samples/smelly_source/inline.rb +0 -704
- data/samples/smelly_source/optparse.rb +0 -1788
- data/samples/smelly_source/redcloth.rb +0 -1130
- data/samples/smelly_source/ruby.rb +0 -368
- data/samples/smelly_source/smelly.rb +0 -7
- data/samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb +0 -5
- data/samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb +0 -2
- data/samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb +0 -6
- data/samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb +0 -6
- data/samples/source_with_hidden_directories/.hidden/hidden.rb +0 -1
- data/samples/source_with_hidden_directories/not_hidden.rb +0 -1
- data/samples/source_with_non_ruby_files/gibberish +0 -1
- data/samples/source_with_non_ruby_files/python_source.py +0 -1
- data/samples/source_with_non_ruby_files/ruby.rb +0 -6
- data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +0 -15
- data/spec/quality/documentation_spec.rb +0 -41
- data/spec/quality/reek_source_spec.rb +0 -11
- data/spec/reek/ast/node_spec.rb +0 -211
- data/spec/reek/ast/object_refs_spec.rb +0 -83
- data/spec/reek/ast/reference_collector_spec.rb +0 -47
- data/spec/reek/ast/sexp_extensions_spec.rb +0 -498
- data/spec/reek/cli/application_spec.rb +0 -168
- data/spec/reek/cli/command/report_command_spec.rb +0 -44
- data/spec/reek/cli/command/todo_list_command_spec.rb +0 -86
- data/spec/reek/cli/options_spec.rb +0 -51
- data/spec/reek/cli/silencer_spec.rb +0 -28
- data/spec/reek/code_comment_spec.rb +0 -184
- data/spec/reek/configuration/app_configuration_spec.rb +0 -195
- data/spec/reek/configuration/configuration_file_finder_spec.rb +0 -230
- data/spec/reek/configuration/default_directive_spec.rb +0 -13
- data/spec/reek/configuration/directory_directives_spec.rb +0 -122
- data/spec/reek/configuration/excluded_paths_spec.rb +0 -16
- data/spec/reek/configuration/rake_task_converter_spec.rb +0 -33
- data/spec/reek/configuration/schema_validator_spec.rb +0 -165
- data/spec/reek/context/code_context_spec.rb +0 -192
- data/spec/reek/context/ghost_context_spec.rb +0 -60
- data/spec/reek/context/method_context_spec.rb +0 -72
- data/spec/reek/context/module_context_spec.rb +0 -55
- data/spec/reek/context/root_context_spec.rb +0 -12
- data/spec/reek/context/statement_counter_spec.rb +0 -24
- data/spec/reek/context_builder_spec.rb +0 -457
- data/spec/reek/detector_repository_spec.rb +0 -22
- data/spec/reek/documentation_link_spec.rb +0 -20
- data/spec/reek/errors/base_error_spec.rb +0 -13
- data/spec/reek/examiner_spec.rb +0 -309
- data/spec/reek/logging_error_handler_spec.rb +0 -24
- data/spec/reek/rake/task_spec.rb +0 -56
- data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +0 -22
- data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +0 -126
- data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +0 -51
- data/spec/reek/report/code_climate/code_climate_report_spec.rb +0 -56
- data/spec/reek/report/html_report_spec.rb +0 -19
- data/spec/reek/report/json_report_spec.rb +0 -58
- data/spec/reek/report/location_formatter_spec.rb +0 -32
- data/spec/reek/report/progress_formatter_spec.rb +0 -68
- data/spec/reek/report/text_report_spec.rb +0 -89
- data/spec/reek/report/xml_report_spec.rb +0 -24
- data/spec/reek/report/yaml_report_spec.rb +0 -55
- data/spec/reek/report_spec.rb +0 -28
- data/spec/reek/smell_configuration_spec.rb +0 -56
- data/spec/reek/smell_detectors/attribute_spec.rb +0 -197
- data/spec/reek/smell_detectors/base_detector_spec.rb +0 -50
- data/spec/reek/smell_detectors/boolean_parameter_spec.rb +0 -93
- data/spec/reek/smell_detectors/class_variable_spec.rb +0 -106
- data/spec/reek/smell_detectors/control_parameter_spec.rb +0 -300
- data/spec/reek/smell_detectors/data_clump_spec.rb +0 -134
- data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +0 -211
- data/spec/reek/smell_detectors/feature_envy_spec.rb +0 -295
- data/spec/reek/smell_detectors/instance_variable_assumption_spec.rb +0 -96
- data/spec/reek/smell_detectors/irresponsible_module_spec.rb +0 -226
- data/spec/reek/smell_detectors/long_parameter_list_spec.rb +0 -61
- data/spec/reek/smell_detectors/long_yield_list_spec.rb +0 -49
- data/spec/reek/smell_detectors/manual_dispatch_spec.rb +0 -75
- data/spec/reek/smell_detectors/missing_safe_method_spec.rb +0 -68
- data/spec/reek/smell_detectors/module_initialize_spec.rb +0 -77
- data/spec/reek/smell_detectors/nested_iterators_spec.rb +0 -333
- data/spec/reek/smell_detectors/nil_check_spec.rb +0 -100
- data/spec/reek/smell_detectors/repeated_conditional_spec.rb +0 -100
- data/spec/reek/smell_detectors/subclassed_from_core_class_spec.rb +0 -77
- data/spec/reek/smell_detectors/too_many_constants_spec.rb +0 -144
- data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +0 -132
- data/spec/reek/smell_detectors/too_many_methods_spec.rb +0 -54
- data/spec/reek/smell_detectors/too_many_statements_spec.rb +0 -90
- data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +0 -78
- data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +0 -78
- data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +0 -147
- data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +0 -201
- data/spec/reek/smell_detectors/unused_parameters_spec.rb +0 -114
- data/spec/reek/smell_detectors/unused_private_method_spec.rb +0 -205
- data/spec/reek/smell_detectors/utility_function_spec.rb +0 -293
- data/spec/reek/smell_warning_spec.rb +0 -137
- data/spec/reek/source/source_code_spec.rb +0 -79
- data/spec/reek/source/source_locator_spec.rb +0 -166
- data/spec/reek/spec/should_reek_of_spec.rb +0 -153
- data/spec/reek/spec/should_reek_only_of_spec.rb +0 -91
- data/spec/reek/spec/should_reek_spec.rb +0 -52
- data/spec/reek/spec/smell_matcher_spec.rb +0 -87
- data/spec/reek/tree_dresser_spec.rb +0 -46
- data/spec/spec_helper.rb +0 -110
- data/tasks/configuration.rake +0 -18
- data/tasks/console.rake +0 -5
- data/tasks/reek.rake +0 -6
- data/tasks/rubocop.rake +0 -11
- data/tasks/test.rake +0 -32
- /data/lib/reek/{report/code_climate.rb → code_climate.rb} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6c025e0e50af37b8dc3c118f97752c18155f59d48c08332961527d24b2e8f50c
|
|
4
|
+
data.tar.gz: e681b629a371e90fcfeb0f8f62669e3d26ba7a4c8ba34322cda546424be9c71a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 304af91b9ff40fc9385991e130ae3cd28b928d4ac8bd896693edbd802c0b414a261c9ecf4bf3a5290590516ae97596a7fe39ed0cc0a388916f443201ff99c604
|
|
7
|
+
data.tar.gz: 4e7267ff76b9c9d99f996245245b9157bbae85927bf22f146883715254c7bc013821e9b7786500daf410344b1ef0a81fb61165979e5d2a74059bd06deeb656d4
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Documentation for all configuration options:
|
|
2
|
+
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
|
3
|
+
|
|
4
|
+
version: 2
|
|
5
|
+
updates:
|
|
6
|
+
- package-ecosystem: "bundler"
|
|
7
|
+
directory: "/"
|
|
8
|
+
schedule:
|
|
9
|
+
interval: "daily"
|
|
10
|
+
- package-ecosystem: "github-actions"
|
|
11
|
+
directory: "/"
|
|
12
|
+
schedule:
|
|
13
|
+
interval: "monthly"
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and
|
|
2
|
+
# run tests with Rake
|
|
3
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
|
4
|
+
|
|
5
|
+
name: CI
|
|
6
|
+
|
|
7
|
+
"on":
|
|
8
|
+
push:
|
|
9
|
+
branches: [master]
|
|
10
|
+
pull_request:
|
|
11
|
+
branches: [master]
|
|
12
|
+
schedule:
|
|
13
|
+
- cron: '16 4 12 * *'
|
|
14
|
+
|
|
15
|
+
env:
|
|
16
|
+
CUCUMBER_PUBLISH_QUIET: true
|
|
17
|
+
RUBYOPTS: "--disable-did-you-mean"
|
|
18
|
+
jobs:
|
|
19
|
+
test:
|
|
20
|
+
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
|
|
23
|
+
strategy:
|
|
24
|
+
matrix:
|
|
25
|
+
ruby: ["3.0", "3.1", "3.2", "jruby-9.4", "3.3"]
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v4
|
|
29
|
+
- name: Set up Ruby
|
|
30
|
+
uses: ruby/setup-ruby@v1
|
|
31
|
+
with:
|
|
32
|
+
ruby-version: ${{ matrix.ruby }}
|
|
33
|
+
bundler-cache: true
|
|
34
|
+
- name: Run specs
|
|
35
|
+
run: bundle exec rake test:spec
|
|
36
|
+
- name: Run performance tests
|
|
37
|
+
run: bundle exec rake test:performance
|
|
38
|
+
- name: Update default configuration
|
|
39
|
+
run: bundle exec rake configuration:update_default_configuration
|
|
40
|
+
- name: Run cucumber features
|
|
41
|
+
run: bundle exec rake test:features
|
|
42
|
+
- name: Run code quality specs
|
|
43
|
+
run: bundle exec rake test:quality
|
|
44
|
+
|
|
45
|
+
rubocop:
|
|
46
|
+
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/checkout@v4
|
|
51
|
+
- name: Set up Ruby
|
|
52
|
+
uses: ruby/setup-ruby@v1
|
|
53
|
+
with:
|
|
54
|
+
ruby-version: "3.3"
|
|
55
|
+
bundler-cache: true
|
|
56
|
+
- name: Run RuboCop
|
|
57
|
+
run: bundle exec rubocop -P
|
data/.rubocop.yml
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
|
2
2
|
|
|
3
|
+
inherit_mode:
|
|
4
|
+
merge:
|
|
5
|
+
- Exclude
|
|
6
|
+
|
|
3
7
|
require:
|
|
4
8
|
- rubocop-rspec
|
|
5
9
|
- rubocop-performance
|
|
@@ -7,10 +11,8 @@ require:
|
|
|
7
11
|
AllCops:
|
|
8
12
|
Exclude:
|
|
9
13
|
- 'samples/**/*'
|
|
10
|
-
- 'tmp/**/*'
|
|
11
|
-
- 'vendor/**/*'
|
|
12
14
|
NewCops: enable
|
|
13
|
-
TargetRubyVersion:
|
|
15
|
+
TargetRubyVersion: 3.0
|
|
14
16
|
|
|
15
17
|
# Tables are nice
|
|
16
18
|
Layout/HashAlignment:
|
|
@@ -46,7 +48,7 @@ Layout/MultilineOperationIndentation:
|
|
|
46
48
|
Lint/AmbiguousBlockAssociation:
|
|
47
49
|
Enabled: false
|
|
48
50
|
|
|
49
|
-
# Some of our source examples include interpolation
|
|
51
|
+
# Some of our source examples include interpolation explicitly.
|
|
50
52
|
Lint/InterpolationCheck:
|
|
51
53
|
Exclude:
|
|
52
54
|
- 'spec/**/*'
|
|
@@ -78,14 +80,6 @@ RSpec/DescribeClass:
|
|
|
78
80
|
RSpec/ExampleLength:
|
|
79
81
|
Enabled: false
|
|
80
82
|
|
|
81
|
-
# rubocop-rspec expects a CodeClimate namespace to go with the code_climate directory.
|
|
82
|
-
RSpec/FilePath:
|
|
83
|
-
Exclude:
|
|
84
|
-
- 'spec/reek/report/code_climate/code_climate_configuration_spec.rb'
|
|
85
|
-
- 'spec/reek/report/code_climate/code_climate_fingerprint_spec.rb'
|
|
86
|
-
- 'spec/reek/report/code_climate/code_climate_formatter_spec.rb'
|
|
87
|
-
- 'spec/reek/report/code_climate/code_climate_report_spec.rb'
|
|
88
|
-
|
|
89
83
|
# Allow and/or for control flow only
|
|
90
84
|
Style/AndOr:
|
|
91
85
|
EnforcedStyle: conditionals
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
2
|
# `rubocop --auto-gen-config`
|
|
3
|
-
# on
|
|
3
|
+
# on 2021-01-03 18:17:11 UTC using RuboCop version 1.7.0.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
@@ -13,22 +13,24 @@ Lint/MissingSuper:
|
|
|
13
13
|
- 'lib/reek/smell_detectors/base_detector.rb'
|
|
14
14
|
|
|
15
15
|
# Offense count: 2
|
|
16
|
+
# Configuration parameters: IgnoredPatterns.
|
|
17
|
+
# IgnoredPatterns: (?-mix:(exactly|at_least|at_most)\(\d+\)\.times)
|
|
16
18
|
Lint/UnreachableLoop:
|
|
17
19
|
Exclude:
|
|
18
20
|
- 'spec/reek/ast/node_spec.rb'
|
|
19
21
|
|
|
20
22
|
# Offense count: 2
|
|
21
|
-
# Configuration parameters: IgnoredMethods.
|
|
23
|
+
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
|
|
22
24
|
Metrics/AbcSize:
|
|
23
25
|
Max: 21
|
|
24
26
|
|
|
25
27
|
# Offense count: 1
|
|
26
28
|
# Configuration parameters: CountComments, CountAsOne.
|
|
27
29
|
Metrics/ClassLength:
|
|
28
|
-
Max:
|
|
30
|
+
Max: 170
|
|
29
31
|
|
|
30
32
|
# Offense count: 13
|
|
31
|
-
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods.
|
|
33
|
+
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
|
|
32
34
|
Metrics/MethodLength:
|
|
33
35
|
Max: 16
|
|
34
36
|
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,100 @@
|
|
|
1
1
|
# Change log
|
|
2
2
|
|
|
3
|
+
## 6.2.0 (2023-12-31)
|
|
4
|
+
|
|
5
|
+
### Features and bugfixes
|
|
6
|
+
|
|
7
|
+
* Code Climate: add config `target_ruby_version` to support different versions
|
|
8
|
+
of Ruby syntax ([#1694] by [dantevvp])
|
|
9
|
+
* Treat `Data.define` as a class definition ([#1725] by [mvz])
|
|
10
|
+
* Fix Instance Variable Assumption false positive ([#1737] by [JuanVqz])
|
|
11
|
+
* Add `Tempfile.create` to ignored iterators list ([#1747] by [mateusdeap])
|
|
12
|
+
* Improve configuration schema validation. This also replaces the kwalify
|
|
13
|
+
dependency with dry-schema ([#1749] by [fbuys])
|
|
14
|
+
|
|
15
|
+
### Dependencies
|
|
16
|
+
|
|
17
|
+
* Add missing dependency rexml ([#1703] by [tricknotes])
|
|
18
|
+
* Drop support for Ruby 2.6 and 2.7 ([#1716] and [#1755] by [mvz])
|
|
19
|
+
* Add support for Ruby 3.3 ([#1756] and [#1755] by [mvz])
|
|
20
|
+
|
|
21
|
+
### Documentation
|
|
22
|
+
|
|
23
|
+
* Fix the badges in our README ([#1711] by [troessner])
|
|
24
|
+
* Remove non working link in CONTRIBUTING.md ([#1738] by [JuanVqz])
|
|
25
|
+
* Add downloads badge ([#1750] by [troessner])
|
|
26
|
+
|
|
27
|
+
### Internal
|
|
28
|
+
|
|
29
|
+
* Rename Code Climate related classes ([#1735] by [mvz])
|
|
30
|
+
* Fix `cucumber_opts` warning ([#1736] by [JuanVqz])
|
|
31
|
+
* Fix editor highlighting for fenced code blocks in documentation ([#1745] by [JuanVqz])
|
|
32
|
+
|
|
33
|
+
[JuanVqz]: https://github.com/JuanVqz
|
|
34
|
+
[dantevvp]: https://github.com/dantevvp
|
|
35
|
+
[fbuys]: https://github.com/fbuys
|
|
36
|
+
[mateusdeap]: https://github.com/mateusdeap
|
|
37
|
+
[mvz]: https://github.com/mvz
|
|
38
|
+
[tricknotes]: https://github.com/tricknotes
|
|
39
|
+
[troessner]: https://github.com/troessner
|
|
40
|
+
|
|
41
|
+
[#1694]: https://github.com/troessner/reek/pull/1694
|
|
42
|
+
[#1703]: https://github.com/troessner/reek/pull/1703
|
|
43
|
+
[#1711]: https://github.com/troessner/reek/pull/1711
|
|
44
|
+
[#1725]: https://github.com/troessner/reek/pull/1725
|
|
45
|
+
[#1735]: https://github.com/troessner/reek/pull/1735
|
|
46
|
+
[#1736]: https://github.com/troessner/reek/pull/1736
|
|
47
|
+
[#1737]: https://github.com/troessner/reek/pull/1737
|
|
48
|
+
[#1738]: https://github.com/troessner/reek/pull/1738
|
|
49
|
+
[#1745]: https://github.com/troessner/reek/pull/1745
|
|
50
|
+
[#1749]: https://github.com/troessner/reek/pull/1749
|
|
51
|
+
[#1747]: https://github.com/troessner/reek/pull/1747
|
|
52
|
+
[#1750]: https://github.com/troessner/reek/pull/1750
|
|
53
|
+
[#1756]: https://github.com/troessner/reek/pull/1756
|
|
54
|
+
[#1755]: https://github.com/troessner/reek/pull/1755
|
|
55
|
+
|
|
56
|
+
## 6.1.4 (2023-01-13)
|
|
57
|
+
|
|
58
|
+
* (mvz) Update parser dependency to the 3.2.x series
|
|
59
|
+
|
|
60
|
+
## 6.1.3 (2022-12-29)
|
|
61
|
+
|
|
62
|
+
* (gonubana) Allow failing safely when trying to recursively find a configuration
|
|
63
|
+
|
|
64
|
+
## 6.1.2 (2022-11-21)
|
|
65
|
+
|
|
66
|
+
* (mvz) Add support for keyword nil arguments
|
|
67
|
+
|
|
68
|
+
## 6.1.1 (2022-04-20)
|
|
69
|
+
|
|
70
|
+
* (ydah) UnusedPrivateMethod to be detect use of methods via `Method#to_proc`
|
|
71
|
+
|
|
72
|
+
## 6.1.0 (2022-01-14)
|
|
73
|
+
|
|
74
|
+
* (mvz) Drop support for Ruby 2.4 and 2.5
|
|
75
|
+
* (mvz) Support Ruby 3.0 and 3.1
|
|
76
|
+
* (mvz) Support argument forwarding after regular arguments
|
|
77
|
+
|
|
78
|
+
## 6.0.6 (2021-08-12)
|
|
79
|
+
|
|
80
|
+
* (mvz) Remove explicit dependency on psych. This fixes an issue where
|
|
81
|
+
installing Reek would unintentionally pull in psych 4.0
|
|
82
|
+
|
|
83
|
+
## 6.0.5 (2021-08-01)
|
|
84
|
+
|
|
85
|
+
* (dependabot) Loosen dependency on psych
|
|
86
|
+
* (Nicolás Ferrari) Fix bugs when used by codeclimate
|
|
87
|
+
|
|
88
|
+
## 6.0.4 (2021-04-27)
|
|
89
|
+
|
|
90
|
+
* (Nicolás Ferrari) Add build-base to Dockerfile
|
|
91
|
+
* (Masataka Pocke Kuwabara and Daniel Santos Dantas) Reduce gem package size
|
|
92
|
+
|
|
93
|
+
## 6.0.3 (2021-01-11)
|
|
94
|
+
|
|
95
|
+
* (mvz) Require parser 3.0
|
|
96
|
+
* (mvz) In a refinement, assign smells to the refined module or class
|
|
97
|
+
|
|
3
98
|
## 6.0.2 (2020-10-17)
|
|
4
99
|
|
|
5
100
|
* (mvz) Loosen dependency on psych. This should resolve installation problems on
|
data/CONTRIBUTING.md
CHANGED
|
@@ -27,6 +27,9 @@ version, Ruby platform (MRI, JRuby, etc.), operating system.
|
|
|
27
27
|
Try to provide a minimal example that reproduces the issue.
|
|
28
28
|
Extra kudos if you can write it as a failing test. :)
|
|
29
29
|
|
|
30
|
+
Make sure any code examples and output are properly formatted
|
|
31
|
+
using [code blocks](https://github.github.com/gfm/#fenced-code-blocks).
|
|
32
|
+
|
|
30
33
|
## Contributing features, bugfixes, documentation
|
|
31
34
|
|
|
32
35
|
### Getting started
|
|
@@ -59,11 +62,8 @@ demonstrate that your fix was needed.
|
|
|
59
62
|
|
|
60
63
|
Reek uses [Rspec](http://rspec.info/) for unit and functional testing.
|
|
61
64
|
|
|
62
|
-
We're trying to follow [betterspecs](http://betterspecs.org/).
|
|
63
|
-
|
|
64
|
-
[shared examples](https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples)
|
|
65
|
-
because we find them rather harming than helpful. You can find an excellent
|
|
66
|
-
cheat sheet on how to write idiomatic Rspec
|
|
65
|
+
We're trying to follow [betterspecs](http://betterspecs.org/).
|
|
66
|
+
You can find an excellent cheat sheet on how to write idiomatic Rspec
|
|
67
67
|
[here](http://www.rubypigeon.com/posts/rspec-core-cheat-sheet).
|
|
68
68
|
|
|
69
69
|
We do not use the popular "foo" / "bar" naming when it comes to the question
|
|
@@ -71,7 +71,7 @@ We do not use the popular "foo" / "bar" naming when it comes to the question
|
|
|
71
71
|
[military alphabet](https://en.wikipedia.org/wiki/NATO_phonetic_alphabet) in
|
|
72
72
|
ascending order which means that we would write this
|
|
73
73
|
|
|
74
|
-
```
|
|
74
|
+
```ruby
|
|
75
75
|
class Foo
|
|
76
76
|
def bar(baz)
|
|
77
77
|
baz.quux
|
|
@@ -81,7 +81,7 @@ end
|
|
|
81
81
|
|
|
82
82
|
rather like this:
|
|
83
83
|
|
|
84
|
-
```
|
|
84
|
+
```ruby
|
|
85
85
|
class Alfa
|
|
86
86
|
def bravo(charlie)
|
|
87
87
|
charlie.delta
|
|
@@ -139,7 +139,7 @@ Once you’re happy with your feature / fix – or want to
|
|
|
139
139
|
share it as a work-in-progress and request comments – once
|
|
140
140
|
again make sure all of the tests pass. This will also run
|
|
141
141
|
[RuboCop](https://github.com/bbatsov/rubocop) – fix any
|
|
142
|
-
|
|
142
|
+
offenses RuboCop finds (or discuss them in the pull request):
|
|
143
143
|
|
|
144
144
|
```
|
|
145
145
|
bundle exec rake
|
|
@@ -199,11 +199,11 @@ In this example we assume the current version is 5.3.1 and you want to update to
|
|
|
199
199
|
* Update the version in `lib/reek/version.rb`
|
|
200
200
|
* List all relevant changes in `CHANGELOG.md`
|
|
201
201
|
* Update the version number in our cucumber features, otherwise the build will fail. You can do this quite easily via
|
|
202
|
-
```
|
|
202
|
+
```bash
|
|
203
203
|
find features/ -type f -exec sed -i '' 's/v5.3.1/v5.3.2/g' {} +
|
|
204
204
|
```
|
|
205
205
|
* Push the branch, create a pull request, have it reviewed and merged
|
|
206
206
|
* Pull the latest master and then do a
|
|
207
|
-
```
|
|
207
|
+
```bash
|
|
208
208
|
bundle exec rake release
|
|
209
209
|
```
|
data/Dockerfile
CHANGED
data/Gemfile
CHANGED
|
@@ -5,18 +5,19 @@ gemspec
|
|
|
5
5
|
ruby RUBY_VERSION
|
|
6
6
|
|
|
7
7
|
group :development do
|
|
8
|
-
gem 'aruba', '~> 1
|
|
8
|
+
gem 'aruba', '~> 2.1'
|
|
9
|
+
gem 'bigdecimal', '>= 2.0.0', '< 4.0'
|
|
9
10
|
gem 'codeclimate-engine-rb', '~> 0.4.0'
|
|
10
|
-
gem 'cucumber',
|
|
11
|
+
gem 'cucumber', '~> 9.0'
|
|
11
12
|
gem 'kramdown', '~> 2.1'
|
|
12
13
|
gem 'kramdown-parser-gfm', '~> 1.0'
|
|
13
14
|
gem 'rake', '~> 13.0'
|
|
14
15
|
gem 'rspec', '~> 3.0'
|
|
15
16
|
gem 'rspec-benchmark', '~> 0.6.0'
|
|
16
|
-
gem 'rubocop', '~>
|
|
17
|
-
gem 'rubocop-performance', '~> 1.
|
|
18
|
-
gem 'rubocop-rspec', '~>
|
|
19
|
-
gem 'simplecov',
|
|
17
|
+
gem 'rubocop', '~> 1.59.0'
|
|
18
|
+
gem 'rubocop-performance', '~> 1.20.0'
|
|
19
|
+
gem 'rubocop-rspec', '~> 2.25.0'
|
|
20
|
+
gem 'simplecov', '>= 0.18.0', '< 0.23.0'
|
|
20
21
|
gem 'yard', '~> 0.9.5'
|
|
21
22
|
|
|
22
23
|
platforms :mri do
|
|
@@ -25,5 +26,5 @@ group :development do
|
|
|
25
26
|
end
|
|
26
27
|
|
|
27
28
|
group :debugging do
|
|
28
|
-
gem 'pry', '~> 0.
|
|
29
|
+
gem 'pry', '~> 0.14.0'
|
|
29
30
|
end
|
data/README.md
CHANGED
|
@@ -35,15 +35,15 @@
|
|
|
35
35
|
|
|
36
36
|
## Overview
|
|
37
37
|
|
|
38
|
-
*
|
|
38
|
+
* 
|
|
39
|
+
* 
|
|
39
40
|
* [](https://badge.fury.io/rb/reek)
|
|
40
|
-
* 
|
|
41
|
-
* 
|
|
41
|
+
* 
|
|
42
|
+
* 
|
|
42
43
|
* [](https://inch-ci.org/github/troessner/reek)
|
|
43
44
|
* [](https://codeclimate.com/github/troessner/reek)
|
|
44
45
|
* [](https://codebeat.co/projects/github-com-troessner-reek)
|
|
45
|
-
|
|
46
|
-
* 
|
|
46
|
+
|
|
47
47
|
|
|
48
48
|
## Quickstart
|
|
49
49
|
|
|
@@ -56,13 +56,13 @@ or [that one](https://troessner.svbtle.com/the-latest-and-greatest-additions-to-
|
|
|
56
56
|
|
|
57
57
|
Install it via rubygems:
|
|
58
58
|
|
|
59
|
-
```
|
|
59
|
+
```bash
|
|
60
60
|
gem install reek
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
and run it like this:
|
|
64
64
|
|
|
65
|
-
```
|
|
65
|
+
```bash
|
|
66
66
|
reek [options] [dir_or_source_file]*
|
|
67
67
|
```
|
|
68
68
|
|
|
@@ -70,7 +70,7 @@ reek [options] [dir_or_source_file]*
|
|
|
70
70
|
|
|
71
71
|
Imagine a source file `demo.rb` containing:
|
|
72
72
|
|
|
73
|
-
```
|
|
73
|
+
```ruby
|
|
74
74
|
# Smelly class
|
|
75
75
|
class Smelly
|
|
76
76
|
# This will reek of UncommunicativeMethodName
|
|
@@ -94,7 +94,7 @@ demo.rb -- 2 warnings:
|
|
|
94
94
|
|
|
95
95
|
## Supported Ruby versions
|
|
96
96
|
|
|
97
|
-
Reek is officially supported for CRuby 2.
|
|
97
|
+
Reek is officially supported for CRuby 2.6 through 3.1 and for JRuby 9.3.
|
|
98
98
|
Other Ruby implementations (like Rubinius) are not officially supported but
|
|
99
99
|
should work as well.
|
|
100
100
|
|
|
@@ -111,7 +111,7 @@ language and business logic.
|
|
|
111
111
|
That said, an example might help you get going. Have a look at this sample of a
|
|
112
112
|
Ruby on Rails model (be aware that this is truncated, not working code):
|
|
113
113
|
|
|
114
|
-
```
|
|
114
|
+
```ruby
|
|
115
115
|
class ShoppingCart < ActiveRecord::Base
|
|
116
116
|
has_many :items
|
|
117
117
|
|
|
@@ -140,7 +140,7 @@ would report:
|
|
|
140
140
|
Fixing this is pretty straightforward. Put the gross price calculation for a single item
|
|
141
141
|
where it belongs, which would be the `Item` class:
|
|
142
142
|
|
|
143
|
-
```
|
|
143
|
+
```ruby
|
|
144
144
|
class ShoppingCart < ActiveRecord::Base
|
|
145
145
|
has_many :items
|
|
146
146
|
|
|
@@ -165,7 +165,7 @@ those first when you have a warning that you don't know how to deal with.
|
|
|
165
165
|
|
|
166
166
|
There are multiple ways you can have Reek work on sources, the most common one just being
|
|
167
167
|
|
|
168
|
-
```
|
|
168
|
+
```bash
|
|
169
169
|
reek lib/
|
|
170
170
|
```
|
|
171
171
|
|
|
@@ -173,25 +173,25 @@ If you don't pass any source arguments to Reek it just takes the current working
|
|
|
173
173
|
|
|
174
174
|
So
|
|
175
175
|
|
|
176
|
-
```
|
|
176
|
+
```bash
|
|
177
177
|
reek
|
|
178
178
|
```
|
|
179
179
|
|
|
180
180
|
is the exact same thing as being explicit:
|
|
181
181
|
|
|
182
|
-
```
|
|
182
|
+
```bash
|
|
183
183
|
reek .
|
|
184
184
|
```
|
|
185
185
|
|
|
186
186
|
Additionally you can pipe code to Reek like this:
|
|
187
187
|
|
|
188
|
-
```
|
|
188
|
+
```bash
|
|
189
189
|
echo "class C; def m; end; end" | reek
|
|
190
190
|
```
|
|
191
191
|
|
|
192
192
|
This would print out:
|
|
193
193
|
|
|
194
|
-
```
|
|
194
|
+
```bash
|
|
195
195
|
$stdin -- 3 warnings:
|
|
196
196
|
[1]:C has no descriptive comment (IrresponsibleModule)
|
|
197
197
|
[1]:C has the name 'C' (UncommunicativeModuleName)
|
|
@@ -219,7 +219,7 @@ for up to date details of exactly what Reek will check in your code.
|
|
|
219
219
|
because it is [kind of controversial](https://github.com/troessner/reek/issues/844) which means
|
|
220
220
|
you have to explicitly activate it in your configuration via
|
|
221
221
|
|
|
222
|
-
```
|
|
222
|
+
```yaml
|
|
223
223
|
UnusedPrivateMethod:
|
|
224
224
|
enabled: true
|
|
225
225
|
```
|
|
@@ -228,7 +228,7 @@ UnusedPrivateMethod:
|
|
|
228
228
|
as well that can turn out to be really unforgiving.
|
|
229
229
|
As a consequence, we made it possible to disable it for non-public methods like this:
|
|
230
230
|
|
|
231
|
-
```
|
|
231
|
+
```yaml
|
|
232
232
|
---
|
|
233
233
|
UtilityFunction:
|
|
234
234
|
public_methods_only: true
|
|
@@ -240,7 +240,7 @@ UtilityFunction:
|
|
|
240
240
|
|
|
241
241
|
For a basic overview, run
|
|
242
242
|
|
|
243
|
-
```
|
|
243
|
+
```ruby
|
|
244
244
|
reek --help
|
|
245
245
|
```
|
|
246
246
|
|
|
@@ -328,7 +328,7 @@ directories:
|
|
|
328
328
|
exclude_paths:
|
|
329
329
|
- lib/legacy
|
|
330
330
|
- lib/rake/legacy_tasks
|
|
331
|
-
- lib/smelly.rb
|
|
331
|
+
- lib/smelly.rb
|
|
332
332
|
```
|
|
333
333
|
|
|
334
334
|
As you see above, Reek's configuration consists of 3 different sections denoted by 3 different keys:
|
|
@@ -395,7 +395,7 @@ In case you need to suppress a smell warning and you can't or don't want to
|
|
|
395
395
|
use configuration files for whatever reasons you can also use special
|
|
396
396
|
source code comments like this:
|
|
397
397
|
|
|
398
|
-
```
|
|
398
|
+
```ruby
|
|
399
399
|
# This method smells of :reek:NestedIterators
|
|
400
400
|
def smelly_method foo
|
|
401
401
|
foo.each {|bar| bar.each {|baz| baz.qux}}
|
|
@@ -404,14 +404,14 @@ end
|
|
|
404
404
|
|
|
405
405
|
You can even pass in smell specific configuration settings:
|
|
406
406
|
|
|
407
|
-
```
|
|
407
|
+
```ruby
|
|
408
408
|
# :reek:NestedIterators { max_allowed_nesting: 2 }
|
|
409
409
|
def smelly_method foo
|
|
410
410
|
foo.each {|bar| bar.each {|baz| baz.qux}}
|
|
411
411
|
end
|
|
412
412
|
```
|
|
413
413
|
|
|
414
|
-
This is an incredibly powerful feature and further explained under [Smell
|
|
414
|
+
This is an incredibly powerful feature and further explained under [Smell Suppression](docs/Smell-Suppression.md).
|
|
415
415
|
|
|
416
416
|
#### Debugging trouble with the configuration
|
|
417
417
|
|
|
@@ -432,7 +432,7 @@ codebase this might not be an option.
|
|
|
432
432
|
Fortunately Reek provides a 'todo' flag which you can use to generate a configuration that will
|
|
433
433
|
suppress all smell warnings for the current codebase:
|
|
434
434
|
|
|
435
|
-
```
|
|
435
|
+
```bash
|
|
436
436
|
reek --todo lib/
|
|
437
437
|
```
|
|
438
438
|
|
|
@@ -447,7 +447,7 @@ If for whatever reasons you decide to put '.reek.yml' somewhere else where
|
|
|
447
447
|
Reek won't pick it up automatically you need to tell Reek explicitly to do so
|
|
448
448
|
via:
|
|
449
449
|
|
|
450
|
-
```
|
|
450
|
+
```bash
|
|
451
451
|
reek -c whatever/.reek.yml lib/
|
|
452
452
|
```
|
|
453
453
|
|
|
@@ -461,7 +461,7 @@ and instead abort execution. It also will not take **any** other configuration f
|
|
|
461
461
|
|
|
462
462
|
This means that when you run
|
|
463
463
|
|
|
464
|
-
```
|
|
464
|
+
```bash
|
|
465
465
|
reek -c other_configuration.reek --todo lib/
|
|
466
466
|
```
|
|
467
467
|
|
|
@@ -474,7 +474,7 @@ but keep in mind that this is not the intended use case of this feature.
|
|
|
474
474
|
|
|
475
475
|
Besides the obvious
|
|
476
476
|
|
|
477
|
-
```
|
|
477
|
+
```bash
|
|
478
478
|
reek [options] [dir_or_source_file]*
|
|
479
479
|
```
|
|
480
480
|
|
|
@@ -523,7 +523,7 @@ bundle exec rake console
|
|
|
523
523
|
You can also use Pry while running the tests by adding the following at the
|
|
524
524
|
point where you want to start debugging:
|
|
525
525
|
|
|
526
|
-
```
|
|
526
|
+
```ruby
|
|
527
527
|
require 'pry'
|
|
528
528
|
binding.pry
|
|
529
529
|
```
|
|
@@ -569,7 +569,7 @@ Reek supports 5 output formats:
|
|
|
569
569
|
Making Reek "Rails"-friendly is fairly simple since we support directory specific configurations (`directory directives` in Reek talk).
|
|
570
570
|
Just add this to your configuration file:
|
|
571
571
|
|
|
572
|
-
```
|
|
572
|
+
```yaml
|
|
573
573
|
directories:
|
|
574
574
|
"app/controllers":
|
|
575
575
|
IrresponsibleModule:
|