rubocop 1.69.2 → 1.74.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/LICENSE.txt +1 -1
- data/README.md +4 -4
- data/config/default.yml +122 -17
- data/config/internal_affairs.yml +20 -0
- data/lib/rubocop/cli/command/execute_runner.rb +3 -3
- data/lib/rubocop/cli/command/show_cops.rb +24 -2
- data/lib/rubocop/cli/command/suggest_extensions.rb +7 -1
- data/lib/rubocop/comment_config.rb +2 -2
- data/lib/rubocop/config.rb +17 -4
- data/lib/rubocop/config_loader.rb +48 -9
- data/lib/rubocop/config_loader_resolver.rb +36 -10
- data/lib/rubocop/config_obsoletion/extracted_cop.rb +4 -3
- data/lib/rubocop/config_obsoletion.rb +1 -1
- data/lib/rubocop/config_validator.rb +19 -9
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
- data/lib/rubocop/cop/base.rb +6 -0
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -1
- data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/cop_enabled.rb +85 -0
- data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -3
- data/lib/rubocop/cop/internal_affairs/location_exists.rb +116 -0
- data/lib/rubocop/cop/internal_affairs/location_expression.rb +2 -1
- data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +3 -2
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb +63 -0
- data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +131 -0
- data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +229 -0
- data/lib/rubocop/cop/internal_affairs/node_type_group.rb +91 -0
- data/lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb +126 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +4 -3
- data/lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb +90 -0
- data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
- data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +3 -1
- data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +5 -4
- data/lib/rubocop/cop/internal_affairs/undefined_config.rb +7 -1
- data/lib/rubocop/cop/internal_affairs.rb +6 -16
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/argument_alignment.rb +2 -8
- data/lib/rubocop/cop/layout/block_alignment.rb +3 -1
- data/lib/rubocop/cop/layout/class_structure.rb +9 -9
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -4
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +2 -2
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +7 -11
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +27 -1
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +22 -2
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +3 -8
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +2 -7
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -7
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/hash_alignment.rb +6 -4
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -1
- data/lib/rubocop/cop/layout/line_continuation_spacing.rb +7 -1
- data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/line_length.rb +4 -3
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +25 -0
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -0
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -4
- data/lib/rubocop/cop/layout/redundant_line_break.rb +7 -6
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_colon.rb +2 -2
- data/lib/rubocop/cop/layout/space_after_comma.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_method_name.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_keyword.rb +1 -0
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_operators.rb +3 -3
- data/lib/rubocop/cop/layout/space_before_comma.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +1 -1
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +5 -3
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
- data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +119 -0
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -3
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
- data/lib/rubocop/cop/lint/constant_definition_in_block.rb +3 -3
- data/lib/rubocop/cop/lint/constant_reassignment.rb +148 -0
- data/lib/rubocop/cop/lint/cop_directive_syntax.rb +84 -0
- data/lib/rubocop/cop/lint/debugger.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_methods.rb +0 -14
- data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_set_element.rb +20 -7
- data/lib/rubocop/cop/lint/empty_conditional_body.rb +14 -64
- data/lib/rubocop/cop/lint/empty_expression.rb +0 -2
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +0 -6
- data/lib/rubocop/cop/lint/float_comparison.rb +6 -8
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +2 -2
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/literal_as_condition.rb +103 -9
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +24 -6
- data/lib/rubocop/cop/lint/missing_super.rb +2 -2
- data/lib/rubocop/cop/lint/mixed_case_range.rb +3 -3
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +8 -4
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
- data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +4 -3
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -3
- data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +18 -31
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +2 -1
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -5
- data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +0 -21
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_type_conversion.rb +258 -0
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/return_in_void_context.rb +4 -11
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +8 -1
- data/lib/rubocop/cop/lint/shared_mutable_default.rb +76 -0
- data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
- data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +111 -0
- data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
- data/lib/rubocop/cop/lint/syntax.rb +4 -1
- data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +1 -4
- data/lib/rubocop/cop/lint/unexpected_block_arity.rb +1 -1
- data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +1 -1
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/unreachable_loop.rb +1 -1
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +4 -4
- data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/useless_constant_scoping.rb +71 -0
- data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
- data/lib/rubocop/cop/lint/useless_numeric_operation.rb +2 -1
- data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2 -2
- data/lib/rubocop/cop/lint/void.rb +11 -9
- data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
- data/lib/rubocop/cop/metrics/collection_literal_length.rb +7 -0
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/method_length.rb +8 -1
- data/lib/rubocop/cop/metrics/module_length.rb +1 -1
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +7 -7
- data/lib/rubocop/cop/mixin/alignment.rb +2 -2
- data/lib/rubocop/cop/mixin/allowed_pattern.rb +4 -4
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +11 -11
- data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +1 -1
- data/lib/rubocop/cop/mixin/comments_help.rb +4 -2
- data/lib/rubocop/cop/mixin/dig_help.rb +1 -1
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +1 -1
- data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +22 -22
- data/lib/rubocop/cop/mixin/hash_subset.rb +203 -0
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +74 -74
- data/lib/rubocop/cop/mixin/method_complexity.rb +1 -1
- data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +48 -24
- data/lib/rubocop/cop/mixin/range_help.rb +15 -3
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +8 -3
- data/lib/rubocop/cop/mixin/string_help.rb +2 -2
- data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
- data/lib/rubocop/cop/mixin/target_ruby_version.rb +1 -1
- data/lib/rubocop/cop/mixin/trailing_comma.rb +15 -3
- data/lib/rubocop/cop/naming/block_forwarding.rb +19 -15
- data/lib/rubocop/cop/naming/predicate_name.rb +44 -0
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +3 -3
- data/lib/rubocop/cop/naming/variable_name.rb +64 -6
- data/lib/rubocop/cop/security/compound_hash.rb +1 -0
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +34 -5
- data/lib/rubocop/cop/style/accessor_grouping.rb +19 -5
- data/lib/rubocop/cop/style/and_or.rb +1 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +39 -23
- data/lib/rubocop/cop/style/array_first_last.rb +18 -2
- data/lib/rubocop/cop/style/block_delimiters.rb +7 -20
- data/lib/rubocop/cop/style/class_and_module_children.rb +35 -10
- data/lib/rubocop/cop/style/collection_methods.rb +1 -1
- data/lib/rubocop/cop/style/combinable_defined.rb +1 -1
- data/lib/rubocop/cop/style/combinable_loops.rb +2 -2
- data/lib/rubocop/cop/style/commented_keyword.rb +10 -3
- data/lib/rubocop/cop/style/comparable_between.rb +75 -0
- data/lib/rubocop/cop/style/concat_array_literals.rb +1 -1
- data/lib/rubocop/cop/style/conditional_assignment.rb +6 -4
- data/lib/rubocop/cop/style/documentation.rb +1 -1
- data/lib/rubocop/cop/style/double_negation.rb +4 -4
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +4 -7
- data/lib/rubocop/cop/style/each_with_object.rb +2 -3
- data/lib/rubocop/cop/style/empty_else.rb +4 -2
- data/lib/rubocop/cop/style/empty_literal.rb +1 -1
- data/lib/rubocop/cop/style/empty_method.rb +1 -1
- data/lib/rubocop/cop/style/endless_method.rb +163 -18
- data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
- data/lib/rubocop/cop/style/exact_regexp_match.rb +3 -10
- data/lib/rubocop/cop/style/expand_path_arguments.rb +2 -7
- data/lib/rubocop/cop/style/explicit_block_argument.rb +15 -2
- data/lib/rubocop/cop/style/exponential_notation.rb +3 -3
- data/lib/rubocop/cop/style/fetch_env_var.rb +1 -1
- data/lib/rubocop/cop/style/float_division.rb +8 -4
- data/lib/rubocop/cop/style/format_string_token.rb +38 -11
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +1 -1
- data/lib/rubocop/cop/style/hash_each_methods.rb +3 -6
- data/lib/rubocop/cop/style/hash_except.rb +24 -148
- data/lib/rubocop/cop/style/hash_slice.rb +80 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +6 -3
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +22 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +5 -5
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +1 -1
- data/lib/rubocop/cop/style/if_with_semicolon.rb +2 -2
- data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +14 -11
- data/lib/rubocop/cop/style/it_assignment.rb +36 -0
- data/lib/rubocop/cop/style/keyword_parameters_order.rb +14 -8
- data/lib/rubocop/cop/style/line_end_concatenation.rb +10 -4
- data/lib/rubocop/cop/style/map_into_array.rb +1 -1
- data/lib/rubocop/cop/style/map_to_hash.rb +1 -1
- data/lib/rubocop/cop/style/map_to_set.rb +3 -2
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +22 -15
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -0
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +2 -1
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
- data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/missing_else.rb +2 -0
- data/lib/rubocop/cop/style/multiline_block_chain.rb +2 -2
- data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -9
- data/lib/rubocop/cop/style/multiple_comparison.rb +26 -20
- data/lib/rubocop/cop/style/mutable_constant.rb +3 -3
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +1 -1
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +1 -1
- data/lib/rubocop/cop/style/object_then.rb +13 -15
- data/lib/rubocop/cop/style/open_struct_use.rb +5 -5
- data/lib/rubocop/cop/style/parallel_assignment.rb +1 -5
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +2 -2
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
- data/lib/rubocop/cop/style/proc.rb +1 -2
- data/lib/rubocop/cop/style/quoted_symbols.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +6 -4
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
- data/lib/rubocop/cop/style/redundant_condition.rb +47 -2
- data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +16 -5
- data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +6 -10
- data/lib/rubocop/cop/style/redundant_each.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +2 -2
- data/lib/rubocop/cop/style/redundant_format.rb +250 -0
- data/lib/rubocop/cop/style/redundant_freeze.rb +3 -3
- data/lib/rubocop/cop/style/redundant_initialize.rb +12 -3
- data/lib/rubocop/cop/style/redundant_line_continuation.rb +34 -13
- data/lib/rubocop/cop/style/redundant_parentheses.rb +28 -14
- data/lib/rubocop/cop/style/redundant_regexp_argument.rb +3 -0
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +1 -1
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -1
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +14 -28
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
- data/lib/rubocop/cop/style/redundant_string_escape.rb +2 -2
- data/lib/rubocop/cop/style/rescue_modifier.rb +3 -0
- data/lib/rubocop/cop/style/return_nil.rb +1 -1
- data/lib/rubocop/cop/style/safe_navigation.rb +2 -2
- data/lib/rubocop/cop/style/semicolon.rb +1 -1
- data/lib/rubocop/cop/style/send_with_literal_method_name.rb +2 -1
- data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
- data/lib/rubocop/cop/style/single_line_do_end_block.rb +1 -2
- data/lib/rubocop/cop/style/single_line_methods.rb +6 -7
- data/lib/rubocop/cop/style/slicing_with_range.rb +40 -11
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +2 -8
- data/lib/rubocop/cop/style/string_concatenation.rb +2 -2
- data/lib/rubocop/cop/style/string_literals.rb +1 -1
- data/lib/rubocop/cop/style/string_methods.rb +1 -1
- data/lib/rubocop/cop/style/super_arguments.rb +65 -17
- data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/top_level_method_definition.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +4 -1
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +47 -6
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +48 -6
- data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +0 -1
- data/lib/rubocop/cop/style/yoda_condition.rb +8 -4
- data/lib/rubocop/cop/style/yoda_expression.rb +2 -1
- data/lib/rubocop/cop/util.rb +12 -5
- data/lib/rubocop/cop/utils/format_string.rb +10 -5
- data/lib/rubocop/cop/variable_force/variable.rb +14 -2
- data/lib/rubocop/cop/variable_force/variable_table.rb +3 -3
- data/lib/rubocop/cops_documentation_generator.rb +25 -14
- data/lib/rubocop/directive_comment.rb +45 -11
- data/lib/rubocop/ext/regexp_node.rb +0 -1
- data/lib/rubocop/formatter/formatter_set.rb +1 -1
- data/lib/rubocop/lsp/diagnostic.rb +189 -0
- data/lib/rubocop/lsp/logger.rb +2 -2
- data/lib/rubocop/lsp/routes.rb +7 -23
- data/lib/rubocop/lsp/runtime.rb +17 -49
- data/lib/rubocop/lsp/server.rb +0 -2
- data/lib/rubocop/lsp/stdin_runner.rb +83 -0
- data/lib/rubocop/options.rb +28 -12
- data/lib/rubocop/path_util.rb +15 -8
- data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
- data/lib/rubocop/plugin/load_error.rb +26 -0
- data/lib/rubocop/plugin/loader.rb +100 -0
- data/lib/rubocop/plugin/not_supported_error.rb +29 -0
- data/lib/rubocop/plugin.rb +46 -0
- data/lib/rubocop/rake_task.rb +4 -1
- data/lib/rubocop/result_cache.rb +13 -13
- data/lib/rubocop/rspec/cop_helper.rb +9 -0
- data/lib/rubocop/rspec/expect_offense.rb +6 -2
- data/lib/rubocop/rspec/shared_contexts.rb +19 -1
- data/lib/rubocop/rspec/support.rb +2 -2
- data/lib/rubocop/runner.rb +5 -6
- data/lib/rubocop/server/cache.rb +35 -2
- data/lib/rubocop/server/cli.rb +2 -2
- data/lib/rubocop/target_finder.rb +1 -0
- data/lib/rubocop/target_ruby.rb +15 -0
- data/lib/rubocop/version.rb +17 -2
- data/lib/rubocop.rb +12 -1
- data/lib/ruby_lsp/rubocop/addon.rb +75 -0
- data/lib/ruby_lsp/rubocop/runtime_adapter.rb +47 -0
- metadata +55 -16
- data/lib/rubocop/cop/utils/regexp_ranges.rb +0 -113
- data/lib/rubocop/rspec/host_environment_simulation_helper.rb +0 -28
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'lint_roller'
|
4
|
+
|
5
|
+
module RuboCop
|
6
|
+
module InternalAffairs
|
7
|
+
# A Plugin for `InternalAffairs` department, which has internal cops.
|
8
|
+
class Plugin < LintRoller::Plugin
|
9
|
+
def about
|
10
|
+
LintRoller::About.new(
|
11
|
+
name: 'rubocop-internal_affairs',
|
12
|
+
version: Version::STRING,
|
13
|
+
homepage: 'https://github.com/rubocop/rubocop/tree/master/lib/rubocop/cop/internal_affairs',
|
14
|
+
description: 'A collection of RuboCop cops to check for internal affairs.'
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
def supported?(context)
|
19
|
+
context.engine == :rubocop
|
20
|
+
end
|
21
|
+
|
22
|
+
def rules(_context)
|
23
|
+
require_relative '../internal_affairs'
|
24
|
+
|
25
|
+
LintRoller::Rules.new(
|
26
|
+
type: :path,
|
27
|
+
config_format: :rubocop,
|
28
|
+
value: Pathname.new(__dir__).join('../../../../config/internal_affairs.yml')
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -47,7 +47,7 @@ module RuboCop
|
|
47
47
|
# @!method redundant_source_range(node)
|
48
48
|
def_node_matcher :redundant_source_range, <<~PATTERN
|
49
49
|
{
|
50
|
-
(
|
50
|
+
(call $(call _ :source_range) :source)
|
51
51
|
(send nil? :add_offense $(send _ :source_range) ...)
|
52
52
|
(send _ {
|
53
53
|
:replace :insert_before :insert_before_multi :insert_after :insert_after_multi
|
@@ -59,6 +59,7 @@ module RuboCop
|
|
59
59
|
|
60
60
|
def on_send(node)
|
61
61
|
return unless (source_range = redundant_source_range(node))
|
62
|
+
return unless source_range.receiver
|
62
63
|
return if source_range.receiver.send_type? && source_range.receiver.method?(:buffer)
|
63
64
|
|
64
65
|
selector = source_range.loc.selector
|
@@ -67,6 +68,7 @@ module RuboCop
|
|
67
68
|
corrector.remove(source_range.loc.dot.join(selector))
|
68
69
|
end
|
69
70
|
end
|
71
|
+
alias on_csend on_send
|
70
72
|
end
|
71
73
|
end
|
72
74
|
end
|
@@ -34,8 +34,8 @@ module RuboCop
|
|
34
34
|
# @!method single_line_comparison(node)
|
35
35
|
def_node_matcher :single_line_comparison, <<~PATTERN
|
36
36
|
{
|
37
|
-
(send (
|
38
|
-
(send (
|
37
|
+
(send (call $_receiver {:line :first_line}) {:== :!=} (call _receiver :last_line))
|
38
|
+
(send (call $_receiver :last_line) {:== :!=} (call _receiver {:line :first_line}))
|
39
39
|
}
|
40
40
|
PATTERN
|
41
41
|
|
@@ -43,7 +43,8 @@ module RuboCop
|
|
43
43
|
return unless (receiver = single_line_comparison(node))
|
44
44
|
|
45
45
|
bang = node.method?(:!=) ? '!' : ''
|
46
|
-
|
46
|
+
dot = receiver.parent.loc.dot.source
|
47
|
+
preferred = "#{bang}#{extract_receiver(receiver)}#{dot}single_line?"
|
47
48
|
|
48
49
|
add_offense(node, message: format(MSG, preferred: preferred)) do |corrector|
|
49
50
|
corrector.replace(node, preferred)
|
@@ -53,7 +54,7 @@ module RuboCop
|
|
53
54
|
private
|
54
55
|
|
55
56
|
def extract_receiver(node)
|
56
|
-
node = node.receiver if node.
|
57
|
+
node = node.receiver if node.call_type? && %i[loc source_range].include?(node.method_name)
|
57
58
|
node.source
|
58
59
|
end
|
59
60
|
end
|
@@ -17,7 +17,13 @@ module RuboCop
|
|
17
17
|
'in `config/default.yml`.'
|
18
18
|
CONFIG_PATH = find_file_upwards('config/default.yml', Dir.pwd)
|
19
19
|
CONFIG = if CONFIG_PATH
|
20
|
-
|
20
|
+
begin
|
21
|
+
original_debug = ConfigLoader.debug
|
22
|
+
ConfigLoader.debug = false
|
23
|
+
ConfigLoader.load_yaml_configuration(CONFIG_PATH)
|
24
|
+
ensure
|
25
|
+
ConfigLoader.debug = original_debug
|
26
|
+
end
|
21
27
|
else
|
22
28
|
{}
|
23
29
|
end
|
@@ -1,12 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'internal_affairs/cop_description'
|
4
|
+
require_relative 'internal_affairs/cop_enabled'
|
4
5
|
require_relative 'internal_affairs/create_empty_file'
|
5
6
|
require_relative 'internal_affairs/empty_line_between_expect_offense_and_correction'
|
6
7
|
require_relative 'internal_affairs/example_description'
|
7
8
|
require_relative 'internal_affairs/example_heredoc_delimiter'
|
8
9
|
require_relative 'internal_affairs/inherit_deprecated_cop_class'
|
9
10
|
require_relative 'internal_affairs/lambda_or_proc'
|
11
|
+
require_relative 'internal_affairs/location_exists'
|
10
12
|
require_relative 'internal_affairs/location_expression'
|
11
13
|
require_relative 'internal_affairs/location_line_equality_comparison'
|
12
14
|
require_relative 'internal_affairs/method_name_end_with'
|
@@ -14,9 +16,13 @@ require_relative 'internal_affairs/method_name_equal'
|
|
14
16
|
require_relative 'internal_affairs/node_destructuring'
|
15
17
|
require_relative 'internal_affairs/node_first_or_last_argument'
|
16
18
|
require_relative 'internal_affairs/node_matcher_directive'
|
19
|
+
require_relative 'internal_affairs/node_pattern_groups'
|
20
|
+
require_relative 'internal_affairs/node_type_group'
|
21
|
+
require_relative 'internal_affairs/node_type_multiple_predicates'
|
17
22
|
require_relative 'internal_affairs/node_type_predicate'
|
18
23
|
require_relative 'internal_affairs/numblock_handler'
|
19
24
|
require_relative 'internal_affairs/offense_location_keyword'
|
25
|
+
require_relative 'internal_affairs/on_send_without_on_csend'
|
20
26
|
require_relative 'internal_affairs/operator_keyword'
|
21
27
|
require_relative 'internal_affairs/processed_source_buffer_name'
|
22
28
|
require_relative 'internal_affairs/redundant_context_config_parameter'
|
@@ -32,19 +38,3 @@ require_relative 'internal_affairs/style_detected_api_use'
|
|
32
38
|
require_relative 'internal_affairs/undefined_config'
|
33
39
|
require_relative 'internal_affairs/useless_message_assertion'
|
34
40
|
require_relative 'internal_affairs/useless_restrict_on_send'
|
35
|
-
|
36
|
-
module RuboCop
|
37
|
-
# Patch in the InternalAffairs specific config values
|
38
|
-
module InternalAffairs
|
39
|
-
def self.inject!
|
40
|
-
path = File.join(ConfigLoader::RUBOCOP_HOME, 'config', 'internal_affairs.yml')
|
41
|
-
hash = ConfigLoader.load_yaml_configuration(path)
|
42
|
-
config = Config.new(hash, path)
|
43
|
-
puts "configuration from #{path}" if ConfigLoader.debug?
|
44
|
-
config = ConfigLoader.merge_with_default(config, path)
|
45
|
-
ConfigLoader.instance_variable_set(:@default_configuration, config)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
RuboCop::InternalAffairs.inject!
|
@@ -4,7 +4,7 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
module Layout
|
6
6
|
# Bare access modifiers (those not applying to specific methods) should be
|
7
|
-
# indented as deep as method definitions, or as deep as the class
|
7
|
+
# indented as deep as method definitions, or as deep as the `class`/`module`
|
8
8
|
# keyword, depending on configuration.
|
9
9
|
#
|
10
10
|
# @example EnforcedStyle: indent (default)
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module Layout
|
6
|
-
# Check that the arguments on a multi-line method
|
6
|
+
# Check that the arguments on a multi-line method call are aligned.
|
7
7
|
#
|
8
8
|
# @example EnforcedStyle: with_first_argument (default)
|
9
9
|
# # good
|
@@ -141,16 +141,10 @@ module RuboCop
|
|
141
141
|
end
|
142
142
|
|
143
143
|
def enforce_hash_argument_with_separator?
|
144
|
-
return false unless hash_argument_config['Enabled']
|
145
|
-
|
146
144
|
RuboCop::Cop::Layout::HashAlignment::SEPARATOR_ALIGNMENT_STYLES.any? do |style|
|
147
|
-
|
145
|
+
config.for_enabled_cop('Layout/HashAlignment')[style]&.include?('separator')
|
148
146
|
end
|
149
147
|
end
|
150
|
-
|
151
|
-
def hash_argument_config
|
152
|
-
config.for_cop('Layout/HashAlignment')
|
153
|
-
end
|
154
148
|
end
|
155
149
|
end
|
156
150
|
end
|
@@ -73,6 +73,8 @@ module RuboCop
|
|
73
73
|
# @!method block_end_align_target?(node, child)
|
74
74
|
def_node_matcher :block_end_align_target?, <<~PATTERN
|
75
75
|
{assignment?
|
76
|
+
def
|
77
|
+
defs
|
76
78
|
splat
|
77
79
|
and
|
78
80
|
or
|
@@ -188,7 +190,7 @@ module RuboCop
|
|
188
190
|
# In offense message, we want to show the assignment LHS rather than
|
189
191
|
# the entire assignment.
|
190
192
|
def find_lhs_node(node)
|
191
|
-
node = node.lhs while node.
|
193
|
+
node = node.lhs while node.type?(:op_asgn, :masgn)
|
192
194
|
node
|
193
195
|
end
|
194
196
|
|
@@ -3,23 +3,23 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module Layout
|
6
|
-
# Checks if the code style follows the ExpectedOrder configuration:
|
6
|
+
# Checks if the code style follows the `ExpectedOrder` configuration:
|
7
7
|
#
|
8
8
|
# `Categories` allows us to map macro names into a category.
|
9
9
|
#
|
10
10
|
# Consider an example of code style that covers the following order:
|
11
11
|
#
|
12
|
-
# * Module inclusion (include
|
12
|
+
# * Module inclusion (`include`, `prepend`, `extend`)
|
13
13
|
# * Constants
|
14
|
-
# * Associations (has_one
|
15
|
-
# * Public attribute macros (attr_accessor
|
16
|
-
# * Other macros (validates
|
14
|
+
# * Associations (`has_one`, `has_many`)
|
15
|
+
# * Public attribute macros (`attr_accessor`, `attr_writer`, `attr_reader`)
|
16
|
+
# * Other macros (`validates`, `validate`)
|
17
17
|
# * Public class methods
|
18
18
|
# * Initializer
|
19
19
|
# * Public instance methods
|
20
|
-
# * Protected attribute macros (attr_accessor
|
20
|
+
# * Protected attribute macros (`attr_accessor`, `attr_writer`, `attr_reader`)
|
21
21
|
# * Protected instance methods
|
22
|
-
# * Private attribute macros (attr_accessor
|
22
|
+
# * Private attribute macros (`attr_accessor`, `attr_writer`, `attr_reader`)
|
23
23
|
# * Private instance methods
|
24
24
|
#
|
25
25
|
# You can configure the following order:
|
@@ -236,7 +236,7 @@ module RuboCop
|
|
236
236
|
|
237
237
|
return [] unless class_def
|
238
238
|
|
239
|
-
if class_def.
|
239
|
+
if class_def.type?(:def, :send)
|
240
240
|
[class_def]
|
241
241
|
else
|
242
242
|
class_def.children.compact
|
@@ -289,7 +289,7 @@ module RuboCop
|
|
289
289
|
def marked_as_private_constant?(node, name)
|
290
290
|
return false unless node.method?(:private_constant)
|
291
291
|
|
292
|
-
node.arguments.any? { |arg|
|
292
|
+
node.arguments.any? { |arg| arg.type?(:sym, :str) && arg.value == name }
|
293
293
|
end
|
294
294
|
|
295
295
|
def end_position_for(node)
|
@@ -155,10 +155,10 @@ module RuboCop
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def all_elements_aligned?(elements)
|
158
|
-
elements.
|
159
|
-
|
160
|
-
|
161
|
-
|
158
|
+
if elements.first.hash_type?
|
159
|
+
elements.first.each_child_node.map { |child| child.loc.column }
|
160
|
+
else
|
161
|
+
elements.flat_map do |e|
|
162
162
|
e.loc.column
|
163
163
|
end
|
164
164
|
end.uniq.count == 1
|
@@ -49,7 +49,7 @@ module RuboCop
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def on_rescue(node)
|
52
|
-
return unless node.loc
|
52
|
+
return unless node.loc?(:else)
|
53
53
|
|
54
54
|
check_alignment(base_range_of_rescue(node), node.loc.else)
|
55
55
|
end
|
@@ -92,7 +92,7 @@ module RuboCop
|
|
92
92
|
case parent.type
|
93
93
|
when :def, :defs then base_for_method_definition(parent)
|
94
94
|
when :kwbegin then parent.loc.begin
|
95
|
-
when :block
|
95
|
+
when :block, :numblock
|
96
96
|
assignment_node = assignment_node(parent)
|
97
97
|
if same_line?(parent, assignment_node)
|
98
98
|
assignment_node.source_range
|
@@ -22,8 +22,6 @@ module RuboCop
|
|
22
22
|
# def b
|
23
23
|
# end
|
24
24
|
#
|
25
|
-
# @example
|
26
|
-
#
|
27
25
|
# # good
|
28
26
|
# def a
|
29
27
|
# end
|
@@ -42,8 +40,6 @@ module RuboCop
|
|
42
40
|
# def b
|
43
41
|
# end
|
44
42
|
#
|
45
|
-
# @example
|
46
|
-
#
|
47
43
|
# # good
|
48
44
|
# class A
|
49
45
|
# end
|
@@ -65,8 +61,6 @@ module RuboCop
|
|
65
61
|
# def b
|
66
62
|
# end
|
67
63
|
#
|
68
|
-
# @example
|
69
|
-
#
|
70
64
|
# # good
|
71
65
|
# module A
|
72
66
|
# end
|
@@ -162,7 +156,7 @@ module RuboCop
|
|
162
156
|
private
|
163
157
|
|
164
158
|
def def_location(correction_node)
|
165
|
-
if correction_node.
|
159
|
+
if correction_node.any_block_type?
|
166
160
|
correction_node.source_range.join(correction_node.children.first.source_range)
|
167
161
|
else
|
168
162
|
correction_node.loc.keyword.join(correction_node.loc.name)
|
@@ -181,12 +175,12 @@ module RuboCop
|
|
181
175
|
end
|
182
176
|
|
183
177
|
def macro_candidate?(node)
|
184
|
-
node.
|
178
|
+
node.any_block_type? && node.children.first.macro? &&
|
185
179
|
empty_line_between_macros.include?(node.children.first.method_name)
|
186
180
|
end
|
187
181
|
|
188
182
|
def method_candidate?(node)
|
189
|
-
cop_config['EmptyLineBetweenMethodDefs'] &&
|
183
|
+
cop_config['EmptyLineBetweenMethodDefs'] && node.type?(:def, :defs)
|
190
184
|
end
|
191
185
|
|
192
186
|
def class_candidate?(node)
|
@@ -246,7 +240,7 @@ module RuboCop
|
|
246
240
|
end
|
247
241
|
|
248
242
|
def def_start(node)
|
249
|
-
if node.
|
243
|
+
if node.any_block_type? && node.children.first.send_type?
|
250
244
|
node.source_range.line
|
251
245
|
else
|
252
246
|
node.loc.keyword.line
|
@@ -258,7 +252,7 @@ module RuboCop
|
|
258
252
|
end
|
259
253
|
|
260
254
|
def end_loc(node)
|
261
|
-
if
|
255
|
+
if node.type?(:def, :defs) && node.endless?
|
262
256
|
node.source_range.end
|
263
257
|
else
|
264
258
|
node.loc.end
|
@@ -283,6 +277,8 @@ module RuboCop
|
|
283
277
|
case node.type
|
284
278
|
when :def, :defs
|
285
279
|
:method
|
280
|
+
when :numblock
|
281
|
+
:block
|
286
282
|
else
|
287
283
|
node.type
|
288
284
|
end
|
@@ -86,13 +86,14 @@ module RuboCop
|
|
86
86
|
|
87
87
|
def on_send(node)
|
88
88
|
return unless node.bare_access_modifier? && !node.block_literal?
|
89
|
+
return if same_line?(node, node.right_sibling)
|
89
90
|
return if expected_empty_lines?(node)
|
90
91
|
|
91
92
|
message = message(node)
|
92
93
|
add_offense(node, message: message) do |corrector|
|
93
94
|
line = range_by_whole_lines(node.source_range)
|
94
95
|
|
95
|
-
corrector.insert_before(line, "\n")
|
96
|
+
corrector.insert_before(line, "\n") if should_insert_line_before?(node)
|
96
97
|
|
97
98
|
correct_next_line_if_denied_style(corrector, node, line)
|
98
99
|
end
|
@@ -121,6 +122,8 @@ module RuboCop
|
|
121
122
|
end
|
122
123
|
|
123
124
|
def correct_next_line_if_denied_style(corrector, node, line)
|
125
|
+
return unless should_insert_line_after?(node)
|
126
|
+
|
124
127
|
case style
|
125
128
|
when :around
|
126
129
|
corrector.insert_after(line, "\n") unless next_line_empty?(node.last_line)
|
@@ -204,6 +207,29 @@ module RuboCop
|
|
204
207
|
format(MSG_BEFORE_FOR_ONLY_BEFORE, modifier: modifier)
|
205
208
|
end
|
206
209
|
end
|
210
|
+
|
211
|
+
def should_insert_line_before?(node)
|
212
|
+
return false if previous_line_empty?(node.first_line)
|
213
|
+
return true unless inside_block?(node) && no_empty_lines_around_block_body?
|
214
|
+
return true unless node.parent.begin_type?
|
215
|
+
|
216
|
+
node.parent.children.first != node
|
217
|
+
end
|
218
|
+
|
219
|
+
def should_insert_line_after?(node)
|
220
|
+
return true unless inside_block?(node) && no_empty_lines_around_block_body?
|
221
|
+
|
222
|
+
node.parent.children.last != node
|
223
|
+
end
|
224
|
+
|
225
|
+
def inside_block?(node)
|
226
|
+
node.parent.block_type? || (node.parent.begin_type? && node.parent.parent&.block_type?)
|
227
|
+
end
|
228
|
+
|
229
|
+
def no_empty_lines_around_block_body?
|
230
|
+
config.for_enabled_cop('Layout/EmptyLinesAroundBlockBody')['EnforcedStyle'] ==
|
231
|
+
'no_empty_lines'
|
232
|
+
end
|
207
233
|
end
|
208
234
|
end
|
209
235
|
end
|
@@ -6,7 +6,7 @@ module RuboCop
|
|
6
6
|
# Checks if empty lines exist around the bodies of `begin`
|
7
7
|
# sections. This cop doesn't check empty lines at `begin` body
|
8
8
|
# beginning/end and around method definition body.
|
9
|
-
# `
|
9
|
+
# `Layout/EmptyLinesAroundBeginBody` or `Layout/EmptyLinesAroundMethodBody`
|
10
10
|
# can be used for this purpose.
|
11
11
|
#
|
12
12
|
# @example
|
@@ -27,9 +27,14 @@ module RuboCop
|
|
27
27
|
KIND = 'method'
|
28
28
|
|
29
29
|
def on_def(node)
|
30
|
-
|
30
|
+
if node.endless?
|
31
|
+
return unless offending_endless_method?(node)
|
31
32
|
|
32
|
-
|
33
|
+
register_offense_for_endless_method(node)
|
34
|
+
else
|
35
|
+
first_line = node.arguments.source_range&.last_line
|
36
|
+
check(node, node.body, adjusted_first_line: first_line)
|
37
|
+
end
|
33
38
|
end
|
34
39
|
alias on_defs on_def
|
35
40
|
|
@@ -38,6 +43,21 @@ module RuboCop
|
|
38
43
|
def style
|
39
44
|
:no_empty_lines
|
40
45
|
end
|
46
|
+
|
47
|
+
def offending_endless_method?(node)
|
48
|
+
node.body.first_line > node.loc.assignment.line + 1 &&
|
49
|
+
processed_source.lines[node.loc.assignment.line].empty?
|
50
|
+
end
|
51
|
+
|
52
|
+
def register_offense_for_endless_method(node)
|
53
|
+
range = processed_source.buffer.line_range(node.loc.assignment.line + 1).resize(1)
|
54
|
+
|
55
|
+
msg = message(MSG_EXTRA, 'beginning')
|
56
|
+
|
57
|
+
add_offense(range, message: msg) do |corrector|
|
58
|
+
corrector.remove(range)
|
59
|
+
end
|
60
|
+
end
|
41
61
|
end
|
42
62
|
end
|
43
63
|
end
|
@@ -182,7 +182,7 @@ module RuboCop
|
|
182
182
|
end
|
183
183
|
|
184
184
|
def alignment_node_for_variable_style(node)
|
185
|
-
if
|
185
|
+
if node.type?(:case, :case_match) && node.argument? &&
|
186
186
|
same_line?(node, node.parent)
|
187
187
|
return node.parent
|
188
188
|
end
|
@@ -70,7 +70,7 @@ module RuboCop
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def check_assignment(token)
|
73
|
-
return unless
|
73
|
+
return unless aligned_with_preceding_equals_operator(token) == :no
|
74
74
|
|
75
75
|
message = format(MSG_UNALIGNED_ASGN, location: 'preceding')
|
76
76
|
add_offense(token.pos, message: message) do |corrector|
|
@@ -225,7 +225,7 @@ module RuboCop
|
|
225
225
|
|
226
226
|
def base_range(send_node, arg_node)
|
227
227
|
parent = send_node.parent
|
228
|
-
start_node = if parent
|
228
|
+
start_node = if parent&.type?(:splat, :kwsplat)
|
229
229
|
send_node.parent
|
230
230
|
else
|
231
231
|
send_node
|
@@ -269,17 +269,12 @@ module RuboCop
|
|
269
269
|
end
|
270
270
|
|
271
271
|
def enforce_first_argument_with_fixed_indentation?
|
272
|
-
|
273
|
-
|
272
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArgumentAlignment')
|
274
273
|
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
275
274
|
end
|
276
275
|
|
277
276
|
def enable_layout_first_method_argument_line_break?
|
278
|
-
config.
|
279
|
-
end
|
280
|
-
|
281
|
-
def argument_alignment_config
|
282
|
-
config.for_cop('Layout/ArgumentAlignment')
|
277
|
+
config.cop_enabled?('Layout/FirstMethodArgumentLineBreak')
|
283
278
|
end
|
284
279
|
end
|
285
280
|
end
|
@@ -180,13 +180,8 @@ module RuboCop
|
|
180
180
|
end
|
181
181
|
|
182
182
|
def enforce_first_argument_with_fixed_indentation?
|
183
|
-
|
184
|
-
|
185
|
-
array_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
186
|
-
end
|
187
|
-
|
188
|
-
def array_alignment_config
|
189
|
-
config.for_cop('Layout/ArrayAlignment')
|
183
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArrayAlignment')
|
184
|
+
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
190
185
|
end
|
191
186
|
end
|
192
187
|
end
|
@@ -7,7 +7,7 @@ module RuboCop
|
|
7
7
|
# where the opening brace and the first key are on separate lines. The
|
8
8
|
# other keys' indentations are handled by the HashAlignment cop.
|
9
9
|
#
|
10
|
-
# By default, Hash literals that are arguments in a method call with
|
10
|
+
# By default, `Hash` literals that are arguments in a method call with
|
11
11
|
# parentheses, and where the opening curly brace of the hash is on the
|
12
12
|
# same line as the opening parenthesis of the method call, shall have
|
13
13
|
# their first key indented one step (two spaces) more than the position
|
@@ -225,14 +225,9 @@ module RuboCop
|
|
225
225
|
end
|
226
226
|
|
227
227
|
def enforce_first_argument_with_fixed_indentation?
|
228
|
-
|
229
|
-
|
228
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArgumentAlignment')
|
230
229
|
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
231
230
|
end
|
232
|
-
|
233
|
-
def argument_alignment_config
|
234
|
-
config.for_cop('Layout/ArgumentAlignment')
|
235
|
-
end
|
236
231
|
end
|
237
232
|
end
|
238
233
|
end
|
@@ -51,7 +51,7 @@ module RuboCop
|
|
51
51
|
|
52
52
|
def on_hash(node)
|
53
53
|
# node.loc.begin tells us whether the hash opens with a {
|
54
|
-
# If it doesn't,
|
54
|
+
# If it doesn't, Layout/FirstMethodArgumentLineBreak will handle it
|
55
55
|
return unless node.loc.begin
|
56
56
|
|
57
57
|
check_children_line_break(node, node.children, ignore_last: ignore_last_element?)
|
@@ -5,10 +5,10 @@ module RuboCop
|
|
5
5
|
module Layout
|
6
6
|
# Checks the indentation of the first parameter in a method
|
7
7
|
# definition. Parameters after the first one are checked by
|
8
|
-
# Layout/ParameterAlignment
|
8
|
+
# `Layout/ParameterAlignment`, not by this cop.
|
9
9
|
#
|
10
10
|
# For indenting the first argument of method _calls_, check out
|
11
|
-
# Layout/FirstArgumentIndentation
|
11
|
+
# `Layout/FirstArgumentIndentation`, which supports options related to
|
12
12
|
# nesting that are irrelevant for method _definitions_.
|
13
13
|
#
|
14
14
|
# @example
|
@@ -202,6 +202,7 @@ module RuboCop
|
|
202
202
|
|
203
203
|
ignore_node(last_argument)
|
204
204
|
end
|
205
|
+
alias on_csend on_send
|
205
206
|
alias on_super on_send
|
206
207
|
alias on_yield on_send
|
207
208
|
|
@@ -227,6 +228,7 @@ module RuboCop
|
|
227
228
|
left_sibling = argument_before_hash(node)
|
228
229
|
parent_loc = node.parent.loc
|
229
230
|
selector = left_sibling || parent_loc.selector || parent_loc.expression
|
231
|
+
|
230
232
|
same_line?(selector, node.pairs.first)
|
231
233
|
end
|
232
234
|
|
@@ -382,13 +384,13 @@ module RuboCop
|
|
382
384
|
end
|
383
385
|
|
384
386
|
def enforce_first_argument_with_fixed_indentation?
|
385
|
-
|
386
|
-
|
387
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArgumentAlignment')
|
387
388
|
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
388
389
|
end
|
389
390
|
|
390
|
-
def
|
391
|
-
|
391
|
+
def same_line?(node1, node2)
|
392
|
+
# Override `Util#same_line?`
|
393
|
+
super || node1.last_line == line(node2)
|
392
394
|
end
|
393
395
|
end
|
394
396
|
end
|
@@ -75,6 +75,7 @@ module RuboCop
|
|
75
75
|
autocorrect(corrector, outermost_send)
|
76
76
|
end
|
77
77
|
end
|
78
|
+
alias on_csend on_send
|
78
79
|
|
79
80
|
private
|
80
81
|
|
@@ -161,7 +162,7 @@ module RuboCop
|
|
161
162
|
|
162
163
|
def end_keyword_before_closing_parenthesis?(parenthesized_send_node)
|
163
164
|
parenthesized_send_node.ancestors.any? do |ancestor|
|
164
|
-
ancestor.
|
165
|
+
ancestor.loc_is?(:end, 'end')
|
165
166
|
end
|
166
167
|
end
|
167
168
|
|