rubocop 1.9.1 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -13
- data/assets/output.html.erb +1 -1
- data/config/default.yml +67 -17
- data/config/obsoletion.yml +4 -0
- data/lib/rubocop.rb +4 -0
- data/lib/rubocop/cli/command/execute_runner.rb +1 -1
- data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
- data/lib/rubocop/comment_config.rb +43 -94
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +2 -1
- data/lib/rubocop/cop/bundler/gem_comment.rb +1 -0
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -0
- data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -0
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
- data/lib/rubocop/cop/gemspec/date_assignment.rb +57 -0
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +2 -0
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -0
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +2 -0
- data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +2 -0
- data/lib/rubocop/cop/generator.rb +2 -2
- data/lib/rubocop/cop/internal_affairs.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/example_description.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +2 -0
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +151 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +2 -0
- data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -0
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +3 -0
- data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +4 -0
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -0
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +11 -8
- data/lib/rubocop/cop/layout/argument_alignment.rb +6 -5
- data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
- data/lib/rubocop/cop/layout/assignment_indentation.rb +6 -3
- data/lib/rubocop/cop/layout/block_alignment.rb +1 -0
- data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
- data/lib/rubocop/cop/layout/class_structure.rb +1 -0
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +14 -15
- data/lib/rubocop/cop/layout/comment_indentation.rb +16 -16
- data/lib/rubocop/cop/layout/else_alignment.rb +9 -6
- data/lib/rubocop/cop/layout/extra_spacing.rb +2 -2
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +12 -6
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +9 -6
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +22 -15
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/indentation_consistency.rb +9 -6
- data/lib/rubocop/cop/layout/indentation_style.rb +27 -30
- data/lib/rubocop/cop/layout/indentation_width.rb +20 -9
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +26 -0
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +6 -5
- data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +1 -1
- data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -0
- data/lib/rubocop/cop/lint/constant_definition_in_block.rb +2 -0
- data/lib/rubocop/cop/lint/constant_resolution.rb +1 -0
- data/lib/rubocop/cop/lint/debugger.rb +60 -14
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +14 -4
- data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -0
- data/lib/rubocop/cop/lint/duplicate_require.rb +3 -2
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
- data/lib/rubocop/cop/lint/else_layout.rb +1 -1
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +1 -0
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +1 -0
- data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +1 -0
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -0
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -0
- data/lib/rubocop/cop/lint/multiple_comparison.rb +5 -4
- data/lib/rubocop/cop/lint/nested_method_definition.rb +3 -0
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -0
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +7 -0
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -0
- data/lib/rubocop/cop/lint/number_conversion.rb +9 -0
- data/lib/rubocop/cop/lint/raise_exception.rb +2 -0
- data/lib/rubocop/cop/lint/rand_one.rb +1 -0
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -0
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -0
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +7 -3
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -0
- data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -0
- data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -0
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -0
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -0
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +1 -0
- data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -0
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -0
- data/lib/rubocop/cop/lint/struct_new_override.rb +1 -0
- data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
- data/lib/rubocop/cop/lint/symbol_conversion.rb +89 -2
- data/lib/rubocop/cop/lint/to_enum_arguments.rb +3 -0
- data/lib/rubocop/cop/lint/unified_integer.rb +1 -0
- data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +5 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -0
- data/lib/rubocop/cop/lint/unreachable_loop.rb +1 -0
- data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -0
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -0
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +4 -0
- data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -0
- data/lib/rubocop/cop/lint/useless_times.rb +3 -0
- data/lib/rubocop/cop/metrics/module_length.rb +1 -0
- data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -0
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +6 -4
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -0
- data/lib/rubocop/cop/mixin/alignment.rb +10 -3
- data/lib/rubocop/cop/mixin/comments_help.rb +5 -1
- data/lib/rubocop/cop/mixin/def_node.rb +1 -0
- data/lib/rubocop/cop/mixin/documentation_comment.rb +1 -1
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -0
- data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -0
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -0
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +1 -0
- data/lib/rubocop/cop/mixin/line_length_help.rb +11 -6
- data/lib/rubocop/cop/mixin/method_complexity.rb +1 -0
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +3 -1
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +4 -3
- data/lib/rubocop/cop/mixin/negative_conditional.rb +3 -0
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -3
- data/lib/rubocop/cop/mixin/rational_literal.rb +1 -0
- data/lib/rubocop/cop/mixin/safe_assignment.rb +5 -0
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +4 -6
- data/lib/rubocop/cop/mixin/visibility_help.rb +1 -0
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -0
- data/lib/rubocop/cop/naming/constant_name.rb +2 -0
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +6 -0
- data/lib/rubocop/cop/naming/method_name.rb +3 -0
- data/lib/rubocop/cop/naming/predicate_name.rb +1 -0
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
- data/lib/rubocop/cop/registry.rb +10 -1
- data/lib/rubocop/cop/security/eval.rb +1 -0
- data/lib/rubocop/cop/security/json_load.rb +1 -0
- data/lib/rubocop/cop/security/marshal_load.rb +1 -0
- data/lib/rubocop/cop/security/open.rb +1 -0
- data/lib/rubocop/cop/security/yaml_load.rb +1 -0
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -1
- data/lib/rubocop/cop/style/alias.rb +1 -0
- data/lib/rubocop/cop/style/arguments_forwarding.rb +3 -0
- data/lib/rubocop/cop/style/array_coercion.rb +2 -0
- data/lib/rubocop/cop/style/array_join.rb +1 -0
- data/lib/rubocop/cop/style/attr.rb +1 -0
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +62 -0
- data/lib/rubocop/cop/style/case_equality.rb +2 -1
- data/lib/rubocop/cop/style/case_like_if.rb +15 -4
- data/lib/rubocop/cop/style/class_equality_comparison.rb +3 -0
- data/lib/rubocop/cop/style/collection_compact.rb +2 -0
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -0
- data/lib/rubocop/cop/style/command_literal.rb +1 -1
- data/lib/rubocop/cop/style/conditional_assignment.rb +2 -0
- data/lib/rubocop/cop/style/constant_visibility.rb +28 -0
- data/lib/rubocop/cop/style/date_time.rb +3 -0
- data/lib/rubocop/cop/style/dir.rb +1 -0
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +30 -3
- data/lib/rubocop/cop/style/documentation_method.rb +1 -0
- data/lib/rubocop/cop/style/double_negation.rb +3 -2
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -0
- data/lib/rubocop/cop/style/each_with_object.rb +1 -0
- data/lib/rubocop/cop/style/empty_literal.rb +9 -0
- data/lib/rubocop/cop/style/endless_method.rb +1 -0
- data/lib/rubocop/cop/style/eval_with_location.rb +89 -27
- data/lib/rubocop/cop/style/even_odd.rb +1 -0
- data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -0
- data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -1
- data/lib/rubocop/cop/style/exponential_notation.rb +6 -7
- data/lib/rubocop/cop/style/float_division.rb +4 -0
- data/lib/rubocop/cop/style/format_string.rb +2 -0
- data/lib/rubocop/cop/style/format_string_token.rb +1 -0
- data/lib/rubocop/cop/style/global_std_stream.rb +1 -0
- data/lib/rubocop/cop/style/hash_conversion.rb +105 -0
- data/lib/rubocop/cop/style/hash_each_methods.rb +1 -0
- data/lib/rubocop/cop/style/hash_except.rb +1 -0
- data/lib/rubocop/cop/style/hash_like_case.rb +1 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +16 -15
- data/lib/rubocop/cop/style/hash_transform_keys.rb +4 -0
- data/lib/rubocop/cop/style/hash_transform_values.rb +4 -0
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -0
- data/lib/rubocop/cop/style/inverse_methods.rb +2 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +40 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +20 -2
- data/lib/rubocop/cop/style/min_max.rb +1 -0
- data/lib/rubocop/cop/style/mixin_usage.rb +2 -0
- data/lib/rubocop/cop/style/module_function.rb +5 -0
- data/lib/rubocop/cop/style/multiple_comparison.rb +21 -2
- data/lib/rubocop/cop/style/mutable_constant.rb +3 -0
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +16 -2
- data/lib/rubocop/cop/style/nil_comparison.rb +3 -0
- data/lib/rubocop/cop/style/nil_lambda.rb +1 -0
- data/lib/rubocop/cop/style/non_nil_check.rb +7 -0
- data/lib/rubocop/cop/style/numeric_predicate.rb +3 -0
- data/lib/rubocop/cop/style/option_hash.rb +1 -0
- data/lib/rubocop/cop/style/or_assignment.rb +2 -0
- data/lib/rubocop/cop/style/parallel_assignment.rb +6 -0
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -0
- data/lib/rubocop/cop/style/proc.rb +1 -0
- data/lib/rubocop/cop/style/random_with_offset.rb +5 -0
- data/lib/rubocop/cop/style/redundant_assignment.rb +1 -0
- data/lib/rubocop/cop/style/redundant_begin.rb +33 -4
- data/lib/rubocop/cop/style/redundant_conditional.rb +2 -0
- data/lib/rubocop/cop/style/redundant_exception.rb +2 -0
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -0
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -0
- data/lib/rubocop/cop/style/redundant_freeze.rb +1 -0
- data/lib/rubocop/cop/style/redundant_parentheses.rb +13 -0
- data/lib/rubocop/cop/style/redundant_return.rb +4 -0
- data/lib/rubocop/cop/style/redundant_self.rb +7 -3
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -0
- data/lib/rubocop/cop/style/redundant_sort.rb +1 -0
- data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +1 -1
- data/lib/rubocop/cop/style/rescue_modifier.rb +17 -14
- data/lib/rubocop/cop/style/rescue_standard_error.rb +2 -0
- data/lib/rubocop/cop/style/return_nil.rb +6 -0
- data/lib/rubocop/cop/style/safe_navigation.rb +2 -0
- data/lib/rubocop/cop/style/sample.rb +1 -0
- data/lib/rubocop/cop/style/signal_exception.rb +3 -0
- data/lib/rubocop/cop/style/single_argument_dig.rb +1 -0
- data/lib/rubocop/cop/style/slicing_with_range.rb +1 -0
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +16 -0
- data/lib/rubocop/cop/style/special_global_vars.rb +3 -3
- data/lib/rubocop/cop/style/stderr_puts.rb +1 -0
- data/lib/rubocop/cop/style/string_chars.rb +38 -0
- data/lib/rubocop/cop/style/string_concatenation.rb +1 -0
- data/lib/rubocop/cop/style/string_hash_keys.rb +2 -0
- data/lib/rubocop/cop/style/strip.rb +1 -0
- data/lib/rubocop/cop/style/struct_inheritance.rb +3 -0
- data/lib/rubocop/cop/style/symbol_proc.rb +25 -1
- data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -0
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +5 -0
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +1 -1
- data/lib/rubocop/cop/style/trivial_accessors.rb +1 -0
- data/lib/rubocop/cop/style/unless_logical_operators.rb +105 -0
- data/lib/rubocop/cop/style/unpack_first.rb +1 -0
- data/lib/rubocop/cop/style/yoda_condition.rb +1 -0
- data/lib/rubocop/cop/style/zero_length_predicate.rb +5 -0
- data/lib/rubocop/directive_comment.rb +64 -9
- data/lib/rubocop/ext/regexp_parser.rb +3 -6
- data/lib/rubocop/formatter/offense_count_formatter.rb +1 -1
- data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -1
- data/lib/rubocop/magic_comment.rb +1 -1
- data/lib/rubocop/name_similarity.rb +1 -1
- data/lib/rubocop/target_finder.rb +1 -0
- data/lib/rubocop/target_ruby.rb +21 -13
- data/lib/rubocop/version.rb +1 -1
- metadata +13 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4f019dc65a23e4fdd32592747afcbee2cf60dff91484b26714f587b9f70a178
|
4
|
+
data.tar.gz: 85f0e9d193e2165646764047f5422cb7942c87a147c96ff8e4a05b186eaea3c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5064fb48121769e10df9fe4dd7295151f15c2a3ae5f67fbb2869302a7ad268dfd3ed20e7a3242bf59ef68c1c6cf4e92452fedab08971702d29dba06516250de8
|
7
|
+
data.tar.gz: 3b01830b9394f8336bdc415d90e2805f2817eb9fa9686a11392ef8009c4a58dd4b04e40c4a8005e90204774e85b38a6885c315581d55c56bf4a847c71c570447
|
data/README.md
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
<p align="center">
|
2
|
-
<img src="https://raw.githubusercontent.com/rubocop
|
2
|
+
<img src="https://raw.githubusercontent.com/rubocop/rubocop/master/logo/rubo-logo-horizontal.png" alt="RuboCop Logo"/>
|
3
3
|
</p>
|
4
4
|
|
5
5
|
----------
|
6
|
-
[![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop
|
6
|
+
[![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)
|
7
7
|
[![Gem Version](https://badge.fury.io/rb/rubocop.svg)](https://badge.fury.io/rb/rubocop)
|
8
|
-
[![CircleCI Status](https://circleci.com/gh/rubocop
|
9
|
-
[![Actions Status](https://github.com/rubocop
|
10
|
-
[![Test Coverage](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/test_coverage)](https://codeclimate.com/github/rubocop
|
11
|
-
[![Maintainability](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/maintainability)](https://codeclimate.com/github/rubocop
|
8
|
+
[![CircleCI Status](https://circleci.com/gh/rubocop/rubocop/tree/master.svg?style=svg)](https://circleci.com/gh/rubocop/rubocop/tree/master)
|
9
|
+
[![Actions Status](https://github.com/rubocop/rubocop/workflows/CI/badge.svg?branch=master)](https://github.com/rubocop/rubocop/actions?query=workflow%3ACI)
|
10
|
+
[![Test Coverage](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/test_coverage)](https://codeclimate.com/github/rubocop/rubocop/test_coverage)
|
11
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/maintainability)](https://codeclimate.com/github/rubocop/rubocop/maintainability)
|
12
12
|
[![SemVer](https://api.dependabot.com/badges/compatibility_score?dependency-name=rubocop&package-manager=bundler&version-scheme=semver)](https://dependabot.com/compatibility-score.html?dependency-name=rubocop&package-manager=bundler&version-scheme=semver)
|
13
13
|
|
14
14
|
> Role models are important. <br/>
|
@@ -20,7 +20,7 @@ Guide](https://rubystyle.guide). Apart from reporting the problems discovered in
|
|
20
20
|
RuboCop can also automatically fix many of them for you.
|
21
21
|
|
22
22
|
RuboCop is extremely flexible and most aspects of its behavior can be tweaked via various
|
23
|
-
[configuration options](https://github.com/rubocop
|
23
|
+
[configuration options](https://github.com/rubocop/rubocop/blob/master/config/default.yml).
|
24
24
|
|
25
25
|
----------
|
26
26
|
[![Patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://www.patreon.com/bbatsov)
|
@@ -51,10 +51,10 @@ To prevent an unwanted RuboCop update you might want to use a conservative versi
|
|
51
51
|
in your `Gemfile`:
|
52
52
|
|
53
53
|
```rb
|
54
|
-
gem 'rubocop', '~> 1.
|
54
|
+
gem 'rubocop', '~> 1.12', require: false
|
55
55
|
```
|
56
56
|
|
57
|
-
See [versioning](https://docs.rubocop.org/rubocop/
|
57
|
+
See [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) for further details.
|
58
58
|
|
59
59
|
## Quickstart
|
60
60
|
|
@@ -82,7 +82,7 @@ See the [compatibility documentation](https://docs.rubocop.org/rubocop/compatibi
|
|
82
82
|
|
83
83
|
If you use RuboCop in your project, you can include one of these badges in your readme to let people know that your code is written following the community Ruby Style Guide.
|
84
84
|
|
85
|
-
[![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop
|
85
|
+
[![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)
|
86
86
|
|
87
87
|
[![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)
|
88
88
|
|
@@ -90,7 +90,7 @@ If you use RuboCop in your project, you can include one of these badges in your
|
|
90
90
|
Here are the Markdown snippets for the two badges:
|
91
91
|
|
92
92
|
``` markdown
|
93
|
-
[![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop
|
93
|
+
[![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)
|
94
94
|
|
95
95
|
[![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)
|
96
96
|
```
|
@@ -116,14 +116,14 @@ See the [team page](https://docs.rubocop.org/rubocop/about/team.html) for more d
|
|
116
116
|
## Logo
|
117
117
|
|
118
118
|
RuboCop's logo was created by [Dimiter Petrov](https://www.chadomoto.com/). You can find the logo in various
|
119
|
-
formats [here](https://github.com/rubocop
|
119
|
+
formats [here](https://github.com/rubocop/rubocop/tree/master/logo).
|
120
120
|
|
121
121
|
The logo is licensed under a
|
122
122
|
[Creative Commons Attribution-NonCommercial 4.0 International License](https://creativecommons.org/licenses/by-nc/4.0/deed.en_GB).
|
123
123
|
|
124
124
|
## Contributors
|
125
125
|
|
126
|
-
Here's a [list](https://github.com/rubocop
|
126
|
+
Here's a [list](https://github.com/rubocop/rubocop/graphs/contributors) of
|
127
127
|
all the people who have contributed to the development of RuboCop.
|
128
128
|
|
129
129
|
I'm extremely grateful to each and every one of them!
|
data/assets/output.html.erb
CHANGED
@@ -254,7 +254,7 @@
|
|
254
254
|
<% end %>
|
255
255
|
</div>
|
256
256
|
<footer>
|
257
|
-
Generated by <a href="https://github.com/rubocop
|
257
|
+
Generated by <a href="https://github.com/rubocop/rubocop">RuboCop</a>
|
258
258
|
<span class="version"><%= RuboCop::Version::STRING %></span>
|
259
259
|
</footer>
|
260
260
|
</body>
|
data/config/default.yml
CHANGED
@@ -203,6 +203,13 @@ Bundler/OrderedGems:
|
|
203
203
|
|
204
204
|
#################### Gemspec ###############################
|
205
205
|
|
206
|
+
Gemspec/DateAssignment:
|
207
|
+
Description: 'Checks that `date =` is not used in gemspec file, it is set automatically when the gem is packaged.'
|
208
|
+
Enabled: pending
|
209
|
+
VersionAdded: '1.10'
|
210
|
+
Include:
|
211
|
+
- '**/*.gemspec'
|
212
|
+
|
206
213
|
Gemspec/DuplicatedAssignment:
|
207
214
|
Description: 'An attribute assignment method calls should be listed only once in a gemspec.'
|
208
215
|
Enabled: true
|
@@ -1446,23 +1453,31 @@ Lint/Debugger:
|
|
1446
1453
|
Description: 'Check for debugger calls.'
|
1447
1454
|
Enabled: true
|
1448
1455
|
VersionAdded: '0.14'
|
1449
|
-
VersionChanged: '
|
1450
|
-
DebuggerReceivers:
|
1451
|
-
- binding
|
1452
|
-
- Kernel
|
1453
|
-
- Pry
|
1456
|
+
VersionChanged: '1.10'
|
1457
|
+
DebuggerReceivers: [] # deprecated
|
1454
1458
|
DebuggerMethods:
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1459
|
+
# Groups are available so that a specific group can be disabled in
|
1460
|
+
# a user's configuration, but are otherwise not significant.
|
1461
|
+
Kernel:
|
1462
|
+
- binding.irb
|
1463
|
+
Byebug:
|
1464
|
+
- byebug
|
1465
|
+
- remote_byebug
|
1466
|
+
- Kernel.byebug
|
1467
|
+
- Kernel.remote_byebug
|
1468
|
+
Capybara:
|
1469
|
+
- save_and_open_page
|
1470
|
+
- save_and_open_screenshot
|
1471
|
+
Pry:
|
1472
|
+
- binding.pry
|
1473
|
+
- binding.remote_pry
|
1474
|
+
- binding.pry_remote
|
1475
|
+
- Pry.rescue
|
1476
|
+
Rails:
|
1477
|
+
- debugger
|
1478
|
+
- Kernel.debugger
|
1479
|
+
WebConsole:
|
1480
|
+
- binding.console
|
1466
1481
|
|
1467
1482
|
Lint/DeprecatedClassMethods:
|
1468
1483
|
Description: 'Check for deprecated class method calls.'
|
@@ -2040,13 +2055,18 @@ Lint/SuppressedException:
|
|
2040
2055
|
StyleGuide: '#dont-hide-exceptions'
|
2041
2056
|
Enabled: true
|
2042
2057
|
AllowComments: true
|
2058
|
+
AllowNil: true
|
2043
2059
|
VersionAdded: '0.9'
|
2044
|
-
VersionChanged: '
|
2060
|
+
VersionChanged: '1.12'
|
2045
2061
|
|
2046
2062
|
Lint/SymbolConversion:
|
2047
2063
|
Description: 'Checks for unnecessary symbol conversions.'
|
2048
2064
|
Enabled: pending
|
2049
2065
|
VersionAdded: '1.9'
|
2066
|
+
EnforcedStyle: strict
|
2067
|
+
SupportedStyles:
|
2068
|
+
- strict
|
2069
|
+
- consistent
|
2050
2070
|
|
2051
2071
|
Lint/Syntax:
|
2052
2072
|
Description: 'Checks for syntax errors.'
|
@@ -2474,6 +2494,7 @@ Naming/MemoizedInstanceVariableName:
|
|
2474
2494
|
- disallowed
|
2475
2495
|
- required
|
2476
2496
|
- optional
|
2497
|
+
Safe: false
|
2477
2498
|
|
2478
2499
|
Naming/MethodName:
|
2479
2500
|
Description: 'Use the configured style when naming methods.'
|
@@ -3087,6 +3108,8 @@ Style/ConstantVisibility:
|
|
3087
3108
|
visibility declarations.
|
3088
3109
|
Enabled: false
|
3089
3110
|
VersionAdded: '0.66'
|
3111
|
+
VersionChanged: '1.10'
|
3112
|
+
IgnoreModules: false
|
3090
3113
|
|
3091
3114
|
# Checks that you have put a copyright in a comment before any code.
|
3092
3115
|
#
|
@@ -3157,6 +3180,7 @@ Style/Documentation:
|
|
3157
3180
|
Description: 'Document classes and non-namespace modules.'
|
3158
3181
|
Enabled: true
|
3159
3182
|
VersionAdded: '0.9'
|
3183
|
+
AllowedConstants: []
|
3160
3184
|
Exclude:
|
3161
3185
|
- 'spec/**/*'
|
3162
3186
|
- 'test/**/*'
|
@@ -3425,6 +3449,13 @@ Style/HashAsLastArrayItem:
|
|
3425
3449
|
- braces
|
3426
3450
|
- no_braces
|
3427
3451
|
|
3452
|
+
Style/HashConversion:
|
3453
|
+
Description: 'Avoid Hash[] in favor of ary.to_h or literal hashes.'
|
3454
|
+
Enabled: pending
|
3455
|
+
VersionAdded: '1.10'
|
3456
|
+
VersionChanged: '1.11'
|
3457
|
+
AllowSplatArgument: true
|
3458
|
+
|
3428
3459
|
Style/HashEachMethods:
|
3429
3460
|
Description: 'Use Hash#each_key and Hash#each_value.'
|
3430
3461
|
StyleGuide: '#hash-each'
|
@@ -3648,6 +3679,7 @@ Style/MethodCallWithArgsParentheses:
|
|
3648
3679
|
AllowParenthesesInMultilineCall: false
|
3649
3680
|
AllowParenthesesInChaining: false
|
3650
3681
|
AllowParenthesesInCamelCaseMethod: false
|
3682
|
+
AllowParenthesesInStringInterpolation: false
|
3651
3683
|
EnforcedStyle: require_parentheses
|
3652
3684
|
SupportedStyles:
|
3653
3685
|
- require_parentheses
|
@@ -4467,6 +4499,13 @@ Style/StderrPuts:
|
|
4467
4499
|
Enabled: true
|
4468
4500
|
VersionAdded: '0.51'
|
4469
4501
|
|
4502
|
+
Style/StringChars:
|
4503
|
+
Description: 'Checks for uses of `String#split` with empty string or regexp literal argument.'
|
4504
|
+
StyleGuide: '#string-chars'
|
4505
|
+
Enabled: pending
|
4506
|
+
Safe: false
|
4507
|
+
VersionAdded: '1.12'
|
4508
|
+
|
4470
4509
|
Style/StringConcatenation:
|
4471
4510
|
Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
|
4472
4511
|
StyleGuide: '#string-interpolation'
|
@@ -4564,6 +4603,7 @@ Style/SymbolProc:
|
|
4564
4603
|
Safe: false
|
4565
4604
|
VersionAdded: '0.26'
|
4566
4605
|
VersionChanged: '1.5'
|
4606
|
+
AllowMethodsWithArguments: false
|
4567
4607
|
# A list of method names to be ignored by the check.
|
4568
4608
|
# The names should be fairly unique, otherwise you'll end up ignoring lots of code.
|
4569
4609
|
IgnoredMethods:
|
@@ -4716,6 +4756,16 @@ Style/UnlessElse:
|
|
4716
4756
|
Enabled: true
|
4717
4757
|
VersionAdded: '0.9'
|
4718
4758
|
|
4759
|
+
Style/UnlessLogicalOperators:
|
4760
|
+
Description: >-
|
4761
|
+
Checks for use of logical operators in an unless condition.
|
4762
|
+
Enabled: false
|
4763
|
+
VersionAdded: '1.11'
|
4764
|
+
EnforcedStyle: forbid_mixed_logical_operators
|
4765
|
+
SupportedStyles:
|
4766
|
+
- forbid_mixed_logical_operators
|
4767
|
+
- forbid_logical_operators
|
4768
|
+
|
4719
4769
|
Style/UnpackFirst:
|
4720
4770
|
Description: >-
|
4721
4771
|
Checks for accessing the first element of `String#unpack`
|
data/config/obsoletion.yml
CHANGED
@@ -187,6 +187,10 @@ changed_parameters:
|
|
187
187
|
parameters: ExcludedMethods
|
188
188
|
alternative: IgnoredMethods
|
189
189
|
severity: warning
|
190
|
+
- cops: Lint/Debugger
|
191
|
+
parameters: DebuggerReceivers
|
192
|
+
reason: "`DebuggerReceivers` is no longer necessary, method receivers should be specified in `DebuggerMethods` instead."
|
193
|
+
severity: warning
|
190
194
|
|
191
195
|
# Enforced styles that have been removed or replaced
|
192
196
|
changed_enforced_styles:
|
data/lib/rubocop.rb
CHANGED
@@ -152,6 +152,7 @@ require_relative 'rubocop/cop/bundler/gem_comment'
|
|
152
152
|
require_relative 'rubocop/cop/bundler/insecure_protocol_source'
|
153
153
|
require_relative 'rubocop/cop/bundler/ordered_gems'
|
154
154
|
|
155
|
+
require_relative 'rubocop/cop/gemspec/date_assignment'
|
155
156
|
require_relative 'rubocop/cop/gemspec/duplicated_assignment'
|
156
157
|
require_relative 'rubocop/cop/gemspec/ordered_dependencies'
|
157
158
|
require_relative 'rubocop/cop/gemspec/required_ruby_version'
|
@@ -472,6 +473,7 @@ require_relative 'rubocop/cop/style/global_std_stream'
|
|
472
473
|
require_relative 'rubocop/cop/style/global_vars'
|
473
474
|
require_relative 'rubocop/cop/style/guard_clause'
|
474
475
|
require_relative 'rubocop/cop/style/hash_as_last_array_item'
|
476
|
+
require_relative 'rubocop/cop/style/hash_conversion'
|
475
477
|
require_relative 'rubocop/cop/style/hash_each_methods'
|
476
478
|
require_relative 'rubocop/cop/style/hash_except'
|
477
479
|
require_relative 'rubocop/cop/style/hash_like_case'
|
@@ -580,6 +582,7 @@ require_relative 'rubocop/cop/style/slicing_with_range'
|
|
580
582
|
require_relative 'rubocop/cop/style/special_global_vars'
|
581
583
|
require_relative 'rubocop/cop/style/stabby_lambda_parentheses'
|
582
584
|
require_relative 'rubocop/cop/style/stderr_puts'
|
585
|
+
require_relative 'rubocop/cop/style/string_chars'
|
583
586
|
require_relative 'rubocop/cop/style/string_concatenation'
|
584
587
|
require_relative 'rubocop/cop/style/string_hash_keys'
|
585
588
|
require_relative 'rubocop/cop/style/string_literals'
|
@@ -603,6 +606,7 @@ require_relative 'rubocop/cop/style/trailing_method_end_statement'
|
|
603
606
|
require_relative 'rubocop/cop/style/trailing_underscore_variable'
|
604
607
|
require_relative 'rubocop/cop/style/trivial_accessors'
|
605
608
|
require_relative 'rubocop/cop/style/unless_else'
|
609
|
+
require_relative 'rubocop/cop/style/unless_logical_operators'
|
606
610
|
require_relative 'rubocop/cop/style/unpack_first'
|
607
611
|
require_relative 'rubocop/cop/style/variable_interpolation'
|
608
612
|
require_relative 'rubocop/cop/style/when_then'
|
@@ -86,7 +86,7 @@ module RuboCop
|
|
86
86
|
def maybe_print_corrected_source
|
87
87
|
# Integration tools (like RubyMine) expect to have only the JSON result
|
88
88
|
# when specifying JSON format. Similar HTML and JUnit are targeted as well.
|
89
|
-
# See: https://github.com/rubocop
|
89
|
+
# See: https://github.com/rubocop/rubocop/issues/8673
|
90
90
|
return if INTEGRATION_FORMATTERS.include?(@options[:format])
|
91
91
|
|
92
92
|
return unless @options[:stdin] && @options[:auto_correct]
|
@@ -22,7 +22,7 @@ module RuboCop
|
|
22
22
|
'RuboCop extension libraries might be helpful:'
|
23
23
|
|
24
24
|
extensions.sort.each do |extension|
|
25
|
-
puts " * #{extension} (
|
25
|
+
puts " * #{extension} (https://github.com/rubocop/#{extension})"
|
26
26
|
end
|
27
27
|
|
28
28
|
puts
|
@@ -43,7 +43,8 @@ module RuboCop
|
|
43
43
|
# 2. When given RuboCop options that it doesn't make sense for
|
44
44
|
# 3. For all formatters except specified in `INCLUDED_FORMATTERS'`
|
45
45
|
ENV['CI'] ||
|
46
|
-
@options[:only] || @options[:debug] || @options[:list_target_files] ||
|
46
|
+
@options[:only] || @options[:debug] || @options[:list_target_files] ||
|
47
|
+
@options[:out] || @options[:stdin] ||
|
47
48
|
!INCLUDED_FORMATTERS.include?(current_formatter)
|
48
49
|
end
|
49
50
|
|
@@ -4,22 +4,6 @@ module RuboCop
|
|
4
4
|
# This class parses the special `rubocop:disable` comments in a source
|
5
5
|
# and provides a way to check if each cop is enabled at arbitrary line.
|
6
6
|
class CommentConfig
|
7
|
-
# @api private
|
8
|
-
REDUNDANT_DISABLE = 'Lint/RedundantCopDisableDirective'
|
9
|
-
|
10
|
-
# @api private
|
11
|
-
COP_NAME_PATTERN = '([A-Z]\w+/)*(?:[A-Z]\w+)'
|
12
|
-
# @api private
|
13
|
-
COP_NAMES_PATTERN = "(?:#{COP_NAME_PATTERN} , )*#{COP_NAME_PATTERN}"
|
14
|
-
# @api private
|
15
|
-
COPS_PATTERN = "(all|#{COP_NAMES_PATTERN})"
|
16
|
-
|
17
|
-
# @api private
|
18
|
-
COMMENT_DIRECTIVE_REGEXP = Regexp.new(
|
19
|
-
"# rubocop : ((?:disable|enable|todo))\\b #{COPS_PATTERN}"
|
20
|
-
.gsub(' ', '\s*')
|
21
|
-
)
|
22
|
-
|
23
7
|
CopAnalysis = Struct.new(:line_ranges, :start_line_number)
|
24
8
|
|
25
9
|
attr_reader :processed_source
|
@@ -56,13 +40,13 @@ module RuboCop
|
|
56
40
|
private
|
57
41
|
|
58
42
|
def extra_enabled_comments_with_names(extras:, names:)
|
59
|
-
each_directive do |
|
60
|
-
next unless comment_only_line?(
|
43
|
+
each_directive do |directive|
|
44
|
+
next unless comment_only_line?(directive.line_number)
|
61
45
|
|
62
|
-
if
|
63
|
-
handle_enable_all(names, extras
|
46
|
+
if directive.enabled_all?
|
47
|
+
handle_enable_all(directive, names, extras)
|
64
48
|
else
|
65
|
-
handle_switch(
|
49
|
+
handle_switch(directive, names, extras)
|
66
50
|
end
|
67
51
|
end
|
68
52
|
|
@@ -72,9 +56,11 @@ module RuboCop
|
|
72
56
|
def analyze # rubocop:todo Metrics/AbcSize
|
73
57
|
analyses = Hash.new { |hash, key| hash[key] = CopAnalysis.new([], nil) }
|
74
58
|
|
75
|
-
|
76
|
-
|
77
|
-
|
59
|
+
each_directive do |directive|
|
60
|
+
directive.cop_names.each do |cop_name|
|
61
|
+
cop_name = qualified_cop_name(cop_name)
|
62
|
+
analyses[cop_name] = analyze_cop(analyses[cop_name], directive)
|
63
|
+
end
|
78
64
|
end
|
79
65
|
|
80
66
|
analyses.each_with_object({}) do |element, hash|
|
@@ -83,37 +69,42 @@ module RuboCop
|
|
83
69
|
end
|
84
70
|
end
|
85
71
|
|
86
|
-
def analyze_cop(analysis,
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
72
|
+
def analyze_cop(analysis, directive)
|
73
|
+
# Disabling cops after comments like `#=SomeDslDirective` does not related to single line
|
74
|
+
if !comment_only_line?(directive.line_number) || directive.single_line?
|
75
|
+
analyze_single_line(analysis, directive)
|
76
|
+
elsif directive.disabled?
|
77
|
+
analyze_disabled(analysis, directive)
|
91
78
|
else
|
92
|
-
analyze_rest(analysis,
|
79
|
+
analyze_rest(analysis, directive)
|
93
80
|
end
|
94
81
|
end
|
95
82
|
|
96
|
-
def analyze_single_line(analysis,
|
97
|
-
return analysis unless disabled
|
83
|
+
def analyze_single_line(analysis, directive)
|
84
|
+
return analysis unless directive.disabled?
|
98
85
|
|
99
|
-
|
100
|
-
|
86
|
+
line = directive.line_number
|
87
|
+
start_line = analysis.start_line_number
|
88
|
+
|
89
|
+
CopAnalysis.new(analysis.line_ranges + [(line..line)], start_line)
|
101
90
|
end
|
102
91
|
|
103
|
-
def analyze_disabled(analysis,
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
92
|
+
def analyze_disabled(analysis, directive)
|
93
|
+
line = directive.line_number
|
94
|
+
start_line = analysis.start_line_number
|
95
|
+
|
96
|
+
# Cop already disabled on this line, so we end the current disabled
|
97
|
+
# range before we start a new range.
|
98
|
+
return CopAnalysis.new(analysis.line_ranges + [start_line..line], line) if start_line
|
109
99
|
|
110
100
|
CopAnalysis.new(analysis.line_ranges, line)
|
111
101
|
end
|
112
102
|
|
113
|
-
def analyze_rest(analysis,
|
114
|
-
|
115
|
-
|
116
|
-
|
103
|
+
def analyze_rest(analysis, directive)
|
104
|
+
line = directive.line_number
|
105
|
+
start_line = analysis.start_line_number
|
106
|
+
|
107
|
+
return CopAnalysis.new(analysis.line_ranges + [start_line..line], nil) if start_line
|
117
108
|
|
118
109
|
CopAnalysis.new(analysis.line_ranges, nil)
|
119
110
|
end
|
@@ -124,54 +115,17 @@ module RuboCop
|
|
124
115
|
analysis.line_ranges + [(analysis.start_line_number..Float::INFINITY)]
|
125
116
|
end
|
126
117
|
|
127
|
-
def each_mentioned_cop
|
128
|
-
each_directive do |comment, cop_names, disabled|
|
129
|
-
comment_line_number = comment.loc.expression.line
|
130
|
-
single_line = !comment_only_line?(comment_line_number) ||
|
131
|
-
directive_on_comment_line?(comment)
|
132
|
-
|
133
|
-
cop_names.each do |cop_name|
|
134
|
-
yield qualified_cop_name(cop_name), disabled, comment_line_number,
|
135
|
-
single_line
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
def directive_on_comment_line?(comment)
|
141
|
-
comment.text[1..-1].match?(COMMENT_DIRECTIVE_REGEXP)
|
142
|
-
end
|
143
|
-
|
144
118
|
def each_directive
|
145
119
|
processed_source.comments.each do |comment|
|
146
|
-
directive =
|
147
|
-
|
148
|
-
|
149
|
-
yield comment, *directive
|
120
|
+
directive = DirectiveComment.new(comment)
|
121
|
+
yield directive if directive.cop_names
|
150
122
|
end
|
151
123
|
end
|
152
124
|
|
153
|
-
def directive_parts(comment)
|
154
|
-
match = comment.text.match(COMMENT_DIRECTIVE_REGEXP)
|
155
|
-
return unless match
|
156
|
-
|
157
|
-
switch, cops_string = match.captures
|
158
|
-
|
159
|
-
cop_names =
|
160
|
-
cops_string == 'all' ? all_cop_names : cops_string.split(/,\s*/)
|
161
|
-
|
162
|
-
disabled = %w[disable todo].include?(switch)
|
163
|
-
|
164
|
-
[cop_names, disabled]
|
165
|
-
end
|
166
|
-
|
167
125
|
def qualified_cop_name(cop_name)
|
168
126
|
Cop::Registry.qualified_cop_name(cop_name.strip, processed_source.file_path)
|
169
127
|
end
|
170
128
|
|
171
|
-
def all_cop_names
|
172
|
-
@all_cop_names ||= Cop::Registry.global.names - [REDUNDANT_DISABLE]
|
173
|
-
end
|
174
|
-
|
175
129
|
def non_comment_token_line_numbers
|
176
130
|
@non_comment_token_line_numbers ||= begin
|
177
131
|
non_comment_tokens = processed_source.tokens.reject(&:comment?)
|
@@ -179,12 +133,7 @@ module RuboCop
|
|
179
133
|
end
|
180
134
|
end
|
181
135
|
|
182
|
-
def
|
183
|
-
_, cops = comment.text.match(COMMENT_DIRECTIVE_REGEXP).captures
|
184
|
-
cops == 'all'
|
185
|
-
end
|
186
|
-
|
187
|
-
def handle_enable_all(names, extras, comment)
|
136
|
+
def handle_enable_all(directive, names, extras)
|
188
137
|
enabled_cops = 0
|
189
138
|
names.each do |name, counter|
|
190
139
|
next unless counter.positive?
|
@@ -193,19 +142,19 @@ module RuboCop
|
|
193
142
|
enabled_cops += 1
|
194
143
|
end
|
195
144
|
|
196
|
-
extras[comment] << 'all' if enabled_cops.zero?
|
145
|
+
extras[directive.comment] << 'all' if enabled_cops.zero?
|
197
146
|
end
|
198
147
|
|
199
148
|
# Collect cops that have been disabled or enabled by name in a directive comment
|
200
149
|
# so that `Lint/RedundantCopEnableDirective` can register offenses correctly.
|
201
|
-
def handle_switch(
|
202
|
-
cop_names.each do |name|
|
203
|
-
if disabled
|
150
|
+
def handle_switch(directive, names, extras)
|
151
|
+
directive.cop_names.each do |name|
|
152
|
+
if directive.disabled?
|
204
153
|
names[name] += 1
|
205
154
|
elsif (names[name]).positive?
|
206
155
|
names[name] -= 1
|
207
156
|
else
|
208
|
-
extras[comment] << name
|
157
|
+
extras[directive.comment] << name
|
209
158
|
end
|
210
159
|
end
|
211
160
|
end
|