rubocop 1.26.1 → 1.32.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/README.md +6 -4
- data/config/default.yml +170 -31
- data/config/obsoletion.yml +12 -1
- data/exe/rubocop +15 -7
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +19 -4
- data/lib/rubocop/cli/command/execute_runner.rb +1 -1
- data/lib/rubocop/cli/command/show_cops.rb +1 -1
- data/lib/rubocop/cli/command/suggest_extensions.rb +4 -4
- data/lib/rubocop/cli.rb +2 -0
- data/lib/rubocop/config.rb +5 -1
- data/lib/rubocop/config_loader.rb +3 -1
- data/lib/rubocop/config_loader_resolver.rb +1 -1
- data/lib/rubocop/config_obsoletion/extracted_cop.rb +3 -1
- data/lib/rubocop/config_validator.rb +21 -4
- data/lib/rubocop/cop/autocorrect_logic.rb +8 -2
- data/lib/rubocop/cop/badge.rb +1 -1
- data/lib/rubocop/cop/base.rb +6 -2
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -7
- data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
- data/lib/rubocop/cop/bundler/gem_filename.rb +5 -5
- data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -2
- data/lib/rubocop/cop/corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +4 -2
- data/lib/rubocop/cop/correctors/if_then_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +7 -1
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/punctuation_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/space_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/string_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +2 -2
- data/lib/rubocop/cop/gemspec/dependency_version.rb +156 -0
- data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +92 -0
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +5 -12
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
- data/lib/rubocop/cop/gemspec/require_mfa.rb +20 -20
- data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +1 -1
- data/lib/rubocop/cop/generator.rb +5 -1
- data/lib/rubocop/cop/internal_affairs/cop_description.rb +96 -0
- data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +80 -0
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +1 -5
- data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/useless_restrict_on_send.rb +60 -0
- data/lib/rubocop/cop/internal_affairs.rb +3 -0
- data/lib/rubocop/cop/layout/argument_alignment.rb +22 -1
- data/lib/rubocop/cop/layout/assignment_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/block_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/block_end_newline.rb +1 -1
- data/lib/rubocop/cop/layout/case_indentation.rb +17 -1
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/comment_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/condition_position.rb +1 -1
- data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/empty_comment.rb +2 -2
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +25 -4
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +5 -5
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +10 -10
- 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 +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +10 -10
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +28 -28
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +21 -14
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +52 -13
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/hash_alignment.rb +2 -0
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +1 -1
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/indentation_consistency.rb +1 -1
- data/lib/rubocop/cop/layout/indentation_style.rb +1 -1
- data/lib/rubocop/cop/layout/indentation_width.rb +11 -9
- data/lib/rubocop/cop/layout/initial_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/layout/leading_empty_lines.rb +1 -1
- data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +112 -0
- data/lib/rubocop/cop/layout/line_continuation_spacing.rb +130 -0
- data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/line_length.rb +7 -5
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +2 -2
- data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +5 -2
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -5
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +45 -0
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +3 -3
- data/lib/rubocop/cop/layout/redundant_line_break.rb +4 -5
- 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_not.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +2 -2
- data/lib/rubocop/cop/layout/space_around_operators.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +3 -3
- data/lib/rubocop/cop/layout/space_before_brackets.rb +7 -0
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -1
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +10 -10
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +8 -6
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +1 -1
- data/lib/rubocop/cop/layout/trailing_empty_lines.rb +9 -9
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +3 -3
- data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +10 -2
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +7 -7
- data/lib/rubocop/cop/lint/ambiguous_operator_precedence.rb +1 -1
- data/lib/rubocop/cop/lint/ambiguous_range.rb +5 -5
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -1
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
- data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +51 -0
- data/lib/rubocop/cop/lint/debugger.rb +1 -1
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +11 -5
- data/lib/rubocop/cop/lint/deprecated_constants.rb +1 -1
- data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_require.rb +11 -2
- data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
- data/lib/rubocop/cop/lint/else_layout.rb +3 -3
- data/lib/rubocop/cop/lint/empty_block.rb +1 -1
- data/lib/rubocop/cop/lint/empty_class.rb +1 -1
- data/lib/rubocop/cop/lint/empty_conditional_body.rb +4 -2
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
- data/lib/rubocop/cop/lint/empty_expression.rb +1 -1
- data/lib/rubocop/cop/lint/empty_file.rb +1 -1
- data/lib/rubocop/cop/lint/empty_in_pattern.rb +4 -2
- data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/empty_when.rb +4 -2
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +1 -1
- data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
- data/lib/rubocop/cop/lint/float_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
- data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -1
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +11 -4
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +1 -1
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
- data/lib/rubocop/cop/lint/interpolation_check.rb +2 -2
- data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +10 -3
- data/lib/rubocop/cop/lint/literal_as_condition.rb +6 -1
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/loop.rb +2 -2
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -1
- data/lib/rubocop/cop/lint/missing_super.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
- data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +157 -0
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +5 -5
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
- data/lib/rubocop/cop/lint/number_conversion.rb +11 -5
- data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +2 -3
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +2 -2
- data/lib/rubocop/cop/lint/percent_string_array.rb +1 -1
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -1
- data/lib/rubocop/cop/lint/raise_exception.rb +2 -2
- data/lib/rubocop/cop/lint/rand_one.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +6 -6
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +4 -1
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +10 -3
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -1
- data/lib/rubocop/cop/lint/refinement_import_methods.rb +51 -0
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +3 -3
- data/lib/rubocop/cop/lint/require_parentheses.rb +1 -1
- data/lib/rubocop/cop/lint/require_range_parentheses.rb +57 -0
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/return_in_void_context.rb +6 -18
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +38 -1
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +1 -1
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -1
- data/lib/rubocop/cop/lint/script_permission.rb +1 -1
- data/lib/rubocop/cop/lint/self_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -1
- data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -1
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +11 -1
- data/lib/rubocop/cop/lint/struct_new_override.rb +3 -3
- data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
- data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
- data/lib/rubocop/cop/lint/syntax.rb +2 -3
- data/lib/rubocop/cop/lint/to_enum_arguments.rb +1 -1
- data/lib/rubocop/cop/lint/to_json.rb +1 -1
- data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +2 -2
- data/lib/rubocop/cop/lint/triple_quotes.rb +1 -1
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -1
- data/lib/rubocop/cop/lint/unexpected_block_arity.rb +1 -1
- data/lib/rubocop/cop/lint/unified_integer.rb +3 -1
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/unreachable_loop.rb +5 -5
- data/lib/rubocop/cop/lint/unused_block_argument.rb +1 -1
- data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -2
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
- data/lib/rubocop/cop/lint/uri_regexp.rb +1 -1
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +1 -1
- data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +2 -3
- data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
- data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +1 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -2
- data/lib/rubocop/cop/lint/useless_times.rb +2 -2
- data/lib/rubocop/cop/lint/void.rb +1 -1
- data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
- data/lib/rubocop/cop/metrics/block_length.rb +2 -1
- data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
- data/lib/rubocop/cop/metrics/class_length.rb +1 -1
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/method_length.rb +2 -1
- data/lib/rubocop/cop/metrics/module_length.rb +1 -1
- data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -1
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +2 -3
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +22 -3
- data/lib/rubocop/cop/mixin/allowed_pattern.rb +40 -0
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +4 -0
- data/lib/rubocop/cop/mixin/comments_help.rb +24 -2
- data/lib/rubocop/cop/mixin/def_node.rb +2 -7
- data/lib/rubocop/cop/mixin/duplication.rb +1 -1
- data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +8 -4
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +34 -12
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +1 -2
- data/lib/rubocop/cop/mixin/percent_array.rb +60 -1
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +2 -2
- data/lib/rubocop/cop/mixin/range_help.rb +7 -3
- data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -1
- data/lib/rubocop/cop/mixin/string_help.rb +1 -1
- data/lib/rubocop/cop/mixin/surrounding_space.rb +4 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -1
- data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +1 -1
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/block_forwarding.rb +4 -4
- data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/naming/constant_name.rb +1 -1
- data/lib/rubocop/cop/naming/file_name.rb +2 -2
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +1 -1
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
- data/lib/rubocop/cop/naming/inclusive_language.rb +3 -2
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
- data/lib/rubocop/cop/naming/method_name.rb +6 -6
- data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/predicate_name.rb +11 -3
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
- data/lib/rubocop/cop/naming/variable_name.rb +10 -1
- data/lib/rubocop/cop/naming/variable_number.rb +28 -18
- data/lib/rubocop/cop/offense.rb +1 -1
- data/lib/rubocop/cop/security/compound_hash.rb +105 -0
- data/lib/rubocop/cop/security/eval.rb +1 -1
- data/lib/rubocop/cop/security/json_load.rb +1 -1
- data/lib/rubocop/cop/security/marshal_load.rb +1 -1
- data/lib/rubocop/cop/security/open.rb +1 -1
- data/lib/rubocop/cop/security/yaml_load.rb +2 -2
- data/lib/rubocop/cop/style/accessor_grouping.rb +4 -4
- data/lib/rubocop/cop/style/alias.rb +4 -4
- data/lib/rubocop/cop/style/and_or.rb +12 -12
- data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -1
- data/lib/rubocop/cop/style/array_coercion.rb +1 -1
- data/lib/rubocop/cop/style/array_join.rb +1 -1
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
- data/lib/rubocop/cop/style/attr.rb +1 -1
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +1 -1
- data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -1
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +1 -1
- data/lib/rubocop/cop/style/block_comments.rb +1 -1
- data/lib/rubocop/cop/style/block_delimiters.rb +9 -2
- data/lib/rubocop/cop/style/case_equality.rb +1 -1
- data/lib/rubocop/cop/style/case_like_if.rb +2 -2
- data/lib/rubocop/cop/style/character_literal.rb +1 -1
- data/lib/rubocop/cop/style/class_and_module_children.rb +1 -1
- data/lib/rubocop/cop/style/class_check.rb +1 -1
- data/lib/rubocop/cop/style/class_equality_comparison.rb +23 -1
- data/lib/rubocop/cop/style/class_methods.rb +1 -1
- data/lib/rubocop/cop/style/class_methods_definitions.rb +1 -1
- data/lib/rubocop/cop/style/class_vars.rb +1 -1
- data/lib/rubocop/cop/style/collection_compact.rb +4 -4
- data/lib/rubocop/cop/style/collection_methods.rb +1 -1
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
- data/lib/rubocop/cop/style/colon_method_definition.rb +1 -1
- data/lib/rubocop/cop/style/combinable_loops.rb +1 -1
- data/lib/rubocop/cop/style/command_literal.rb +1 -1
- data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
- data/lib/rubocop/cop/style/commented_keyword.rb +4 -4
- data/lib/rubocop/cop/style/conditional_assignment.rb +2 -1
- data/lib/rubocop/cop/style/constant_visibility.rb +1 -1
- data/lib/rubocop/cop/style/date_time.rb +2 -2
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/dir.rb +4 -1
- data/lib/rubocop/cop/style/documentation.rb +1 -1
- data/lib/rubocop/cop/style/documentation_method.rb +1 -1
- data/lib/rubocop/cop/style/double_negation.rb +60 -3
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
- data/lib/rubocop/cop/style/each_with_object.rb +1 -1
- data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -1
- data/lib/rubocop/cop/style/empty_case_condition.rb +3 -4
- data/lib/rubocop/cop/style/empty_else.rb +40 -3
- data/lib/rubocop/cop/style/empty_heredoc.rb +59 -0
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -1
- data/lib/rubocop/cop/style/empty_literal.rb +2 -2
- data/lib/rubocop/cop/style/empty_method.rb +17 -2
- data/lib/rubocop/cop/style/encoding.rb +2 -2
- data/lib/rubocop/cop/style/end_block.rb +1 -1
- data/lib/rubocop/cop/style/endless_method.rb +1 -1
- data/lib/rubocop/cop/style/env_home.rb +56 -0
- data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
- data/lib/rubocop/cop/style/even_odd.rb +1 -1
- data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -1
- data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -2
- data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
- data/lib/rubocop/cop/style/fetch_env_var.rb +132 -0
- data/lib/rubocop/cop/style/file_write.rb +12 -0
- data/lib/rubocop/cop/style/float_division.rb +1 -1
- data/lib/rubocop/cop/style/for.rb +1 -1
- data/lib/rubocop/cop/style/format_string.rb +1 -1
- data/lib/rubocop/cop/style/format_string_token.rb +54 -17
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +6 -3
- data/lib/rubocop/cop/style/global_std_stream.rb +1 -1
- data/lib/rubocop/cop/style/global_vars.rb +1 -1
- data/lib/rubocop/cop/style/guard_clause.rb +51 -4
- data/lib/rubocop/cop/style/hash_as_last_array_item.rb +1 -1
- data/lib/rubocop/cop/style/hash_conversion.rb +1 -1
- data/lib/rubocop/cop/style/hash_each_methods.rb +1 -1
- data/lib/rubocop/cop/style/hash_except.rb +89 -9
- data/lib/rubocop/cop/style/hash_like_case.rb +1 -1
- data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
- data/lib/rubocop/cop/style/hash_transform_keys.rb +6 -1
- data/lib/rubocop/cop/style/hash_transform_values.rb +4 -1
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +4 -4
- data/lib/rubocop/cop/style/if_unless_modifier.rb +5 -4
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +4 -2
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +3 -3
- data/lib/rubocop/cop/style/in_pattern_then.rb +1 -1
- data/lib/rubocop/cop/style/inline_comment.rb +1 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +2 -2
- data/lib/rubocop/cop/style/ip_addresses.rb +1 -1
- data/lib/rubocop/cop/style/keyword_parameters_order.rb +2 -2
- data/lib/rubocop/cop/style/lambda.rb +1 -1
- data/lib/rubocop/cop/style/lambda_call.rb +1 -1
- data/lib/rubocop/cop/style/line_end_concatenation.rb +2 -2
- data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +136 -0
- data/lib/rubocop/cop/style/map_to_hash.rb +3 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +5 -5
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +13 -1
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +1 -1
- data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/min_max.rb +1 -1
- data/lib/rubocop/cop/style/missing_else.rb +24 -24
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -1
- data/lib/rubocop/cop/style/mixin_grouping.rb +2 -2
- data/lib/rubocop/cop/style/mixin_usage.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +3 -3
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -2
- data/lib/rubocop/cop/style/multiline_if_then.rb +1 -1
- data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +2 -4
- data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
- data/lib/rubocop/cop/style/multiline_method_signature.rb +2 -2
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +37 -11
- data/lib/rubocop/cop/style/multiline_when_then.rb +2 -4
- data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +1 -1
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +1 -1
- data/lib/rubocop/cop/style/nested_file_dirname.rb +1 -1
- data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +11 -2
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +20 -8
- data/lib/rubocop/cop/style/next.rb +1 -1
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
- data/lib/rubocop/cop/style/nil_lambda.rb +2 -2
- data/lib/rubocop/cop/style/non_nil_check.rb +1 -1
- data/lib/rubocop/cop/style/not.rb +2 -2
- data/lib/rubocop/cop/style/numbered_parameters.rb +1 -1
- data/lib/rubocop/cop/style/numbered_parameters_limit.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +30 -8
- data/lib/rubocop/cop/style/object_then.rb +69 -0
- data/lib/rubocop/cop/style/one_line_conditional.rb +1 -1
- data/lib/rubocop/cop/style/open_struct_use.rb +1 -1
- data/lib/rubocop/cop/style/option_hash.rb +1 -1
- data/lib/rubocop/cop/style/optional_arguments.rb +2 -2
- data/lib/rubocop/cop/style/optional_boolean_parameter.rb +2 -2
- data/lib/rubocop/cop/style/or_assignment.rb +1 -1
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -1
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
- data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/quoted_symbols.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +10 -4
- data/lib/rubocop/cop/style/random_with_offset.rb +1 -1
- data/lib/rubocop/cop/style/redundant_argument.rb +2 -2
- data/lib/rubocop/cop/style/redundant_assignment.rb +1 -1
- data/lib/rubocop/cop/style/redundant_begin.rb +17 -6
- data/lib/rubocop/cop/style/redundant_capital_w.rb +2 -3
- data/lib/rubocop/cop/style/redundant_condition.rb +113 -12
- data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +1 -1
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +1 -1
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
- data/lib/rubocop/cop/style/redundant_initialize.rb +154 -0
- data/lib/rubocop/cop/style/redundant_interpolation.rb +22 -1
- data/lib/rubocop/cop/style/redundant_parentheses.rb +3 -2
- data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +8 -3
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +2 -2
- data/lib/rubocop/cop/style/redundant_return.rb +2 -2
- data/lib/rubocop/cop/style/redundant_self.rb +1 -1
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +3 -4
- data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +1 -1
- data/lib/rubocop/cop/style/redundant_sort.rb +1 -1
- data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -1
- data/lib/rubocop/cop/style/regexp_literal.rb +1 -1
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
- data/lib/rubocop/cop/style/rescue_standard_error.rb +13 -13
- data/lib/rubocop/cop/style/return_nil.rb +1 -1
- data/lib/rubocop/cop/style/safe_navigation.rb +17 -9
- data/lib/rubocop/cop/style/sample.rb +1 -1
- data/lib/rubocop/cop/style/select_by_regexp.rb +1 -1
- data/lib/rubocop/cop/style/self_assignment.rb +1 -1
- data/lib/rubocop/cop/style/semicolon.rb +28 -4
- data/lib/rubocop/cop/style/send.rb +1 -1
- data/lib/rubocop/cop/style/signal_exception.rb +1 -1
- data/lib/rubocop/cop/style/single_argument_dig.rb +5 -0
- data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
- data/lib/rubocop/cop/style/single_line_methods.rb +2 -2
- data/lib/rubocop/cop/style/slicing_with_range.rb +1 -1
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +35 -16
- data/lib/rubocop/cop/style/special_global_vars.rb +66 -8
- data/lib/rubocop/cop/style/static_class.rb +1 -1
- data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
- data/lib/rubocop/cop/style/string_chars.rb +1 -1
- data/lib/rubocop/cop/style/string_concatenation.rb +6 -7
- data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/string_methods.rb +1 -1
- data/lib/rubocop/cop/style/strip.rb +1 -1
- data/lib/rubocop/cop/style/struct_inheritance.rb +4 -4
- data/lib/rubocop/cop/style/swap_values.rb +2 -2
- data/lib/rubocop/cop/style/symbol_array.rb +8 -5
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -1
- data/lib/rubocop/cop/style/symbol_proc.rb +37 -5
- data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -3
- data/lib/rubocop/cop/style/trailing_body_on_class.rb +1 -1
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -1
- data/lib/rubocop/cop/style/trailing_body_on_module.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +1 -1
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +1 -1
- data/lib/rubocop/cop/style/trivial_accessors.rb +11 -9
- data/lib/rubocop/cop/style/unless_else.rb +1 -1
- data/lib/rubocop/cop/style/unless_logical_operators.rb +1 -1
- data/lib/rubocop/cop/style/unpack_first.rb +5 -2
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +1 -1
- data/lib/rubocop/cop/style/word_array.rb +3 -4
- data/lib/rubocop/cop/style/yoda_condition.rb +1 -1
- data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
- data/lib/rubocop/cop/team.rb +2 -2
- data/lib/rubocop/cop/util.rb +2 -2
- data/lib/rubocop/cop/variable_force/branch.rb +1 -1
- data/lib/rubocop/cops_documentation_generator.rb +19 -2
- data/lib/rubocop/formatter/disabled_config_formatter.rb +10 -7
- data/lib/rubocop/formatter/formatter_set.rb +20 -18
- data/lib/rubocop/formatter/git_hub_actions_formatter.rb +15 -2
- data/lib/rubocop/formatter/html_formatter.rb +2 -10
- data/lib/rubocop/formatter/markdown_formatter.rb +78 -0
- data/lib/rubocop/formatter/offense_count_formatter.rb +8 -2
- data/lib/rubocop/formatter/simple_text_formatter.rb +9 -8
- data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -2
- data/lib/rubocop/formatter.rb +31 -0
- data/lib/rubocop/magic_comment.rb +31 -5
- data/lib/rubocop/options.rb +103 -34
- data/lib/rubocop/rake_task.rb +34 -9
- data/lib/rubocop/result_cache.rb +13 -4
- data/lib/rubocop/rspec/cop_helper.rb +2 -2
- data/lib/rubocop/rspec/expect_offense.rb +3 -3
- data/lib/rubocop/rspec/parallel_formatter.rb +1 -1
- data/lib/rubocop/rspec/shared_contexts.rb +31 -11
- data/lib/rubocop/rspec/support.rb +14 -0
- data/lib/rubocop/runner.rb +37 -7
- data/lib/rubocop/server/cache.rb +109 -0
- data/lib/rubocop/server/cli.rb +104 -0
- data/lib/rubocop/server/client_command/base.rb +44 -0
- data/lib/rubocop/server/client_command/exec.rb +59 -0
- data/lib/rubocop/server/client_command/restart.rb +25 -0
- data/lib/rubocop/server/client_command/start.rb +43 -0
- data/lib/rubocop/server/client_command/status.rb +28 -0
- data/lib/rubocop/server/client_command/stop.rb +31 -0
- data/lib/rubocop/server/client_command.rb +26 -0
- data/lib/rubocop/server/core.rb +79 -0
- data/lib/rubocop/server/errors.rb +23 -0
- data/lib/rubocop/server/helper.rb +34 -0
- data/lib/rubocop/server/server_command/base.rb +50 -0
- data/lib/rubocop/server/server_command/exec.rb +34 -0
- data/lib/rubocop/server/server_command/stop.rb +24 -0
- data/lib/rubocop/server/server_command.rb +21 -0
- data/lib/rubocop/server/socket_reader.rb +65 -0
- data/lib/rubocop/server.rb +53 -0
- data/lib/rubocop/string_interpreter.rb +4 -4
- data/lib/rubocop/target_ruby.rb +14 -6
- data/lib/rubocop/version.rb +15 -8
- data/lib/rubocop.rb +20 -27
- metadata +68 -10
- data/lib/rubocop/cop/gemspec/date_assignment.rb +0 -49
- data/lib/rubocop/cop/mixin/ignored_pattern.rb +0 -29
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'ruby-progressbar'
|
4
|
+
|
3
5
|
module RuboCop
|
4
6
|
module Formatter
|
5
7
|
# This formatter displays the list of offended cops with a count of how
|
@@ -17,6 +19,7 @@ module RuboCop
|
|
17
19
|
def started(target_files)
|
18
20
|
super
|
19
21
|
@offense_counts = Hash.new(0)
|
22
|
+
@style_guide_links = {}
|
20
23
|
|
21
24
|
return unless output.tty?
|
22
25
|
|
@@ -37,6 +40,9 @@ module RuboCop
|
|
37
40
|
|
38
41
|
def file_finished(_file, offenses)
|
39
42
|
offenses.each { |o| @offense_counts[o.cop_name] += 1 }
|
43
|
+
if options[:display_style_guide]
|
44
|
+
offenses.each { |o| @style_guide_links[o.cop_name] ||= o.message[/ \(http\S+\)\Z/] }
|
45
|
+
end
|
40
46
|
@progressbar.increment if instance_variable_defined?(:@progressbar)
|
41
47
|
end
|
42
48
|
|
@@ -52,8 +58,8 @@ module RuboCop
|
|
52
58
|
output.puts
|
53
59
|
|
54
60
|
per_cop_counts.each do |cop_name, count|
|
55
|
-
output.puts "#{count.to_s.ljust(total_count.to_s.length + 2)}" \
|
56
|
-
"#{cop_name}\n"
|
61
|
+
output.puts "#{count.to_s.ljust(total_count.to_s.length + 2)}#{cop_name}" \
|
62
|
+
"#{@style_guide_links[cop_name]}\n"
|
57
63
|
end
|
58
64
|
output.puts '--'
|
59
65
|
output.puts "#{total_count} Total"
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'colorizable'
|
4
|
-
require_relative 'text_util'
|
5
4
|
|
6
5
|
module RuboCop
|
7
6
|
module Formatter
|
@@ -61,7 +60,9 @@ module RuboCop
|
|
61
60
|
correction_count,
|
62
61
|
correctable_count,
|
63
62
|
rainbow,
|
64
|
-
|
63
|
+
# :safe_autocorrect is a derived option based on several command-line
|
64
|
+
# arguments - see Rubocop::Options#add_autocorrection_options
|
65
|
+
safe_autocorrect: @options[:safe_autocorrect])
|
65
66
|
|
66
67
|
output.puts
|
67
68
|
output.puts report.summary
|
@@ -108,22 +109,22 @@ module RuboCop
|
|
108
109
|
# rubocop:disable Metrics/ParameterLists
|
109
110
|
def initialize(
|
110
111
|
file_count, offense_count, correction_count, correctable_count, rainbow,
|
111
|
-
|
112
|
+
safe_autocorrect: false
|
112
113
|
)
|
113
114
|
@file_count = file_count
|
114
115
|
@offense_count = offense_count
|
115
116
|
@correction_count = correction_count
|
116
117
|
@correctable_count = correctable_count
|
117
118
|
@rainbow = rainbow
|
118
|
-
@
|
119
|
+
@safe_autocorrect = safe_autocorrect
|
119
120
|
end
|
120
121
|
# rubocop:enable Metrics/ParameterLists
|
121
122
|
|
122
123
|
def summary
|
123
124
|
if @correction_count.positive?
|
124
125
|
if @correctable_count.positive?
|
125
|
-
"#{files} inspected, #{offenses} detected, #{corrections} corrected,"\
|
126
|
-
"
|
126
|
+
"#{files} inspected, #{offenses} detected, #{corrections} corrected, " \
|
127
|
+
"#{correctable}"
|
127
128
|
else
|
128
129
|
"#{files} inspected, #{offenses} detected, #{corrections} corrected"
|
129
130
|
end
|
@@ -157,12 +158,12 @@ module RuboCop
|
|
157
158
|
end
|
158
159
|
|
159
160
|
def correctable
|
160
|
-
if @
|
161
|
+
if @safe_autocorrect
|
161
162
|
text = pluralize(@correctable_count, 'more offense')
|
162
163
|
"#{colorize(text, :yellow)} can be corrected with `rubocop -A`"
|
163
164
|
else
|
164
165
|
text = pluralize(@correctable_count, 'offense')
|
165
|
-
"#{colorize(text, :yellow)}
|
166
|
+
"#{colorize(text, :yellow)} autocorrectable"
|
166
167
|
end
|
167
168
|
end
|
168
169
|
end
|
@@ -40,8 +40,7 @@ module RuboCop
|
|
40
40
|
output.puts
|
41
41
|
|
42
42
|
per_file_counts.each do |file_name, count|
|
43
|
-
output.puts "#{count.to_s.ljust(total_count.to_s.length + 2)}"
|
44
|
-
"#{file_name}\n"
|
43
|
+
output.puts "#{count.to_s.ljust(total_count.to_s.length + 2)}#{file_name}\n"
|
45
44
|
end
|
46
45
|
output.puts '--'
|
47
46
|
output.puts "#{total_count} Total"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Formatter
|
5
|
+
require_relative 'formatter/text_util'
|
6
|
+
|
7
|
+
require_relative 'formatter/base_formatter'
|
8
|
+
require_relative 'formatter/simple_text_formatter'
|
9
|
+
# relies on simple text
|
10
|
+
require_relative 'formatter/clang_style_formatter'
|
11
|
+
require_relative 'formatter/disabled_config_formatter'
|
12
|
+
require_relative 'formatter/emacs_style_formatter'
|
13
|
+
require_relative 'formatter/file_list_formatter'
|
14
|
+
require_relative 'formatter/fuubar_style_formatter'
|
15
|
+
require_relative 'formatter/git_hub_actions_formatter'
|
16
|
+
require_relative 'formatter/html_formatter'
|
17
|
+
require_relative 'formatter/json_formatter'
|
18
|
+
require_relative 'formatter/junit_formatter'
|
19
|
+
require_relative 'formatter/markdown_formatter'
|
20
|
+
require_relative 'formatter/offense_count_formatter'
|
21
|
+
require_relative 'formatter/progress_formatter'
|
22
|
+
require_relative 'formatter/quiet_formatter'
|
23
|
+
require_relative 'formatter/tap_formatter'
|
24
|
+
require_relative 'formatter/worst_offenders_formatter'
|
25
|
+
require_relative 'formatter/pacman_formatter'
|
26
|
+
# relies on progress formatter
|
27
|
+
require_relative 'formatter/auto_gen_config_formatter'
|
28
|
+
|
29
|
+
require_relative 'formatter/formatter_set'
|
30
|
+
end
|
31
|
+
end
|
@@ -5,12 +5,14 @@ module RuboCop
|
|
5
5
|
#
|
6
6
|
# @abstract parent of three different magic comment handlers
|
7
7
|
class MagicComment
|
8
|
-
#
|
8
|
+
# IRB's pattern for matching magic comment tokens.
|
9
|
+
# @see https://github.com/ruby/ruby/blob/b4a55c1/lib/irb/magic-file.rb#L5
|
9
10
|
TOKEN = /[[:alnum:]\-_]+/.freeze
|
10
11
|
KEYWORDS = {
|
11
12
|
encoding: '(?:en)?coding',
|
12
13
|
frozen_string_literal: 'frozen[_-]string[_-]literal',
|
13
|
-
shareable_constant_value: 'shareable[_-]constant[_-]value'
|
14
|
+
shareable_constant_value: 'shareable[_-]constant[_-]value',
|
15
|
+
typed: 'typed'
|
14
16
|
}.freeze
|
15
17
|
|
16
18
|
# Detect magic comment format and pass it to the appropriate wrapper.
|
@@ -32,7 +34,10 @@ module RuboCop
|
|
32
34
|
end
|
33
35
|
|
34
36
|
def any?
|
35
|
-
frozen_string_literal_specified? ||
|
37
|
+
frozen_string_literal_specified? ||
|
38
|
+
encoding_specified? ||
|
39
|
+
shareable_constant_value_specified? ||
|
40
|
+
typed_specified?
|
36
41
|
end
|
37
42
|
|
38
43
|
def valid?
|
@@ -100,6 +105,17 @@ module RuboCop
|
|
100
105
|
specified?(encoding)
|
101
106
|
end
|
102
107
|
|
108
|
+
# Was the Sorbet `typed` sigil specified?
|
109
|
+
#
|
110
|
+
# @return [Boolean]
|
111
|
+
def typed_specified?
|
112
|
+
specified?(extract_typed)
|
113
|
+
end
|
114
|
+
|
115
|
+
def typed
|
116
|
+
extract_typed
|
117
|
+
end
|
118
|
+
|
103
119
|
private
|
104
120
|
|
105
121
|
def specified?(value)
|
@@ -170,7 +186,7 @@ module RuboCop
|
|
170
186
|
# comment.encoding # => 'ascii-8bit'
|
171
187
|
#
|
172
188
|
# @see https://www.gnu.org/software/emacs/manual/html_node/emacs/Specify-Coding.html
|
173
|
-
# @see https://
|
189
|
+
# @see https://github.com/ruby/ruby/blob/3f306dc/parse.y#L6873-L6892 Emacs handling in parse.y
|
174
190
|
class EmacsComment < EditorComment
|
175
191
|
REGEXP = /-\*-(.+)-\*-/.freeze
|
176
192
|
FORMAT = '# -*- %s -*-'
|
@@ -186,6 +202,9 @@ module RuboCop
|
|
186
202
|
def extract_shareable_constant_value
|
187
203
|
match(KEYWORDS[:shareable_constant_value])
|
188
204
|
end
|
205
|
+
|
206
|
+
# Emacs comments cannot specify Sorbet typechecking behavior.
|
207
|
+
def extract_typed; end
|
189
208
|
end
|
190
209
|
|
191
210
|
# Wrapper for Vim style magic comments.
|
@@ -221,6 +240,9 @@ module RuboCop
|
|
221
240
|
|
222
241
|
# Vim comments cannot specify shareable constant values behavior.
|
223
242
|
def shareable_constant_value; end
|
243
|
+
|
244
|
+
# Vim comments cannot specify Sorbet typechecking behavior.
|
245
|
+
def extract_typed; end
|
224
246
|
end
|
225
247
|
|
226
248
|
# Wrapper for regular magic comments not bound to an editor.
|
@@ -259,7 +281,7 @@ module RuboCop
|
|
259
281
|
# is the only text in the comment.
|
260
282
|
#
|
261
283
|
# Case-insensitive and dashes/underscores are acceptable.
|
262
|
-
# @see https://
|
284
|
+
# @see https://github.com/ruby/ruby/blob/78b95b4/parse.y#L7134-L7138
|
263
285
|
def extract_frozen_string_literal
|
264
286
|
extract(/\A\s*#\s*#{KEYWORDS[:frozen_string_literal]}:\s*(#{TOKEN})\s*\z/io)
|
265
287
|
end
|
@@ -267,6 +289,10 @@ module RuboCop
|
|
267
289
|
def extract_shareable_constant_value
|
268
290
|
extract(/\A\s*#\s*#{KEYWORDS[:shareable_constant_value]}:\s*(#{TOKEN})\s*\z/io)
|
269
291
|
end
|
292
|
+
|
293
|
+
def extract_typed
|
294
|
+
extract(/\A\s*#\s*#{KEYWORDS[:typed]}:\s*(#{TOKEN})\s*\z/io)
|
295
|
+
end
|
270
296
|
end
|
271
297
|
end
|
272
298
|
end
|
data/lib/rubocop/options.rb
CHANGED
@@ -63,6 +63,7 @@ module RuboCop
|
|
63
63
|
|
64
64
|
add_check_options(opts)
|
65
65
|
add_cache_options(opts)
|
66
|
+
add_server_options(opts)
|
66
67
|
add_output_options(opts)
|
67
68
|
add_autocorrection_options(opts)
|
68
69
|
add_config_generation_options(opts)
|
@@ -80,7 +81,7 @@ module RuboCop
|
|
80
81
|
option(opts, '-x', '--fix-layout') do
|
81
82
|
@options[:only] ||= []
|
82
83
|
@options[:only] << 'Layout'
|
83
|
-
@options[:
|
84
|
+
@options[:autocorrect] = true
|
84
85
|
end
|
85
86
|
option(opts, '--safe')
|
86
87
|
add_cop_selection_csv_option('except', opts)
|
@@ -93,6 +94,7 @@ module RuboCop
|
|
93
94
|
option(opts, '--force-exclusion')
|
94
95
|
option(opts, '--only-recognized-file-types')
|
95
96
|
option(opts, '--ignore-parent-exclusion')
|
97
|
+
option(opts, '--ignore-unrecognized-cops')
|
96
98
|
option(opts, '--force-default-config')
|
97
99
|
option(opts, '-s', '--stdin FILE')
|
98
100
|
option(opts, '-P', '--[no-]parallel')
|
@@ -123,20 +125,40 @@ module RuboCop
|
|
123
125
|
option(opts, '--display-time')
|
124
126
|
option(opts, '--display-only-failed')
|
125
127
|
option(opts, '--display-only-fail-level-offenses')
|
128
|
+
option(opts, '--display-only-correctable')
|
129
|
+
option(opts, '--display-only-safe-correctable')
|
126
130
|
end
|
127
131
|
end
|
128
132
|
|
129
|
-
|
130
|
-
|
131
|
-
|
133
|
+
# rubocop:todo Naming/InclusiveLanguage
|
134
|
+
# the autocorrect command-line arguments map to the autocorrect @options values like so:
|
135
|
+
# :fix_layout :autocorrect :safe_autocorrect :autocorrect_all
|
136
|
+
# -x, --fix-layout true true - -
|
137
|
+
# -a, --auto-correct - true true -
|
138
|
+
# --safe-auto-correct - true true -
|
139
|
+
# -A, --auto-correct-all - true - true
|
140
|
+
def add_autocorrection_options(opts) # rubocop:disable Metrics/MethodLength
|
141
|
+
section(opts, 'Autocorrection') do
|
142
|
+
option(opts, '-a', '--autocorrect') { @options[:safe_autocorrect] = true }
|
143
|
+
option(opts, '--auto-correct') do
|
144
|
+
handle_deprecated_option('--auto-correct', '--autocorrect')
|
145
|
+
@options[:safe_autocorrect] = true
|
146
|
+
end
|
132
147
|
option(opts, '--safe-auto-correct') do
|
133
|
-
|
134
|
-
@options[:
|
148
|
+
handle_deprecated_option('--safe-auto-correct', '--autocorrect')
|
149
|
+
@options[:safe_autocorrect] = true
|
150
|
+
end
|
151
|
+
|
152
|
+
option(opts, '-A', '--autocorrect-all') { @options[:autocorrect] = true }
|
153
|
+
option(opts, '--auto-correct-all') do
|
154
|
+
handle_deprecated_option('--auto-correct-all', '--autocorrect-all')
|
155
|
+
@options[:autocorrect] = true
|
135
156
|
end
|
136
|
-
|
157
|
+
|
137
158
|
option(opts, '--disable-uncorrectable')
|
138
159
|
end
|
139
160
|
end
|
161
|
+
# rubocop:enable Naming/InclusiveLanguage
|
140
162
|
|
141
163
|
def add_config_generation_options(opts)
|
142
164
|
section(opts, 'Config Generation') do
|
@@ -182,6 +204,16 @@ module RuboCop
|
|
182
204
|
end
|
183
205
|
end
|
184
206
|
|
207
|
+
def add_server_options(opts)
|
208
|
+
section(opts, 'Server Options') do
|
209
|
+
option(opts, '--[no-]server')
|
210
|
+
option(opts, '--restart-server')
|
211
|
+
option(opts, '--start-server')
|
212
|
+
option(opts, '--stop-server')
|
213
|
+
option(opts, '--server-status')
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
185
217
|
def add_additional_modes(opts)
|
186
218
|
section(opts, 'Additional Modes') do
|
187
219
|
option(opts, '-L', '--list-target-files')
|
@@ -206,6 +238,11 @@ module RuboCop
|
|
206
238
|
end
|
207
239
|
end
|
208
240
|
|
241
|
+
def handle_deprecated_option(old_option, new_option)
|
242
|
+
warn rainbow.wrap("#{old_option} is deprecated; use #{new_option} instead.").yellow
|
243
|
+
@options[long_opt_symbol([new_option])] = @options.delete(long_opt_symbol([old_option]))
|
244
|
+
end
|
245
|
+
|
209
246
|
def rainbow
|
210
247
|
@rainbow ||= begin
|
211
248
|
rainbow = Rainbow.new
|
@@ -234,10 +271,10 @@ module RuboCop
|
|
234
271
|
end
|
235
272
|
|
236
273
|
# Finds the option in `args` starting with -- and converts it to a symbol,
|
237
|
-
# e.g. [..., '--
|
274
|
+
# e.g. [..., '--autocorrect', ...] to :autocorrect.
|
238
275
|
def long_opt_symbol(args)
|
239
276
|
long_opt = args.find { |arg| arg.start_with?('--') }
|
240
|
-
long_opt[2
|
277
|
+
long_opt[2..].sub('[no-]', '').sub(/ .*/, '').tr('-', '_').gsub(/[\[\]]/, '').to_sym
|
241
278
|
end
|
242
279
|
|
243
280
|
def require_feature(file)
|
@@ -308,11 +345,13 @@ module RuboCop
|
|
308
345
|
|
309
346
|
if display_only_fail_level_offenses_with_autocorrect?
|
310
347
|
raise OptionArgumentError, '--autocorrect cannot be used with ' \
|
311
|
-
'--display-only-fail-level-offenses'
|
348
|
+
'--display-only-fail-level-offenses.'
|
312
349
|
end
|
313
350
|
validate_auto_gen_config
|
314
|
-
|
351
|
+
validate_autocorrect
|
315
352
|
validate_display_only_failed
|
353
|
+
validate_display_only_failed_and_display_only_correctable
|
354
|
+
validate_display_only_correctable_and_autocorrect
|
316
355
|
disable_parallel_when_invalid_option_combo
|
317
356
|
|
318
357
|
return if incompatible_options.size <= 1
|
@@ -342,35 +381,49 @@ module RuboCop
|
|
342
381
|
format('--display-only-failed can only be used together with --format junit.')
|
343
382
|
end
|
344
383
|
|
345
|
-
def
|
346
|
-
return
|
384
|
+
def validate_display_only_correctable_and_autocorrect
|
385
|
+
return unless @options.key?(:autocorrect)
|
386
|
+
return if !@options.key?(:display_only_correctable) &&
|
387
|
+
!@options.key?(:display_only_safe_correctable)
|
388
|
+
|
389
|
+
raise OptionArgumentError,
|
390
|
+
'--autocorrect cannot be used with --display-only-[safe-]correctable.'
|
391
|
+
end
|
392
|
+
|
393
|
+
def validate_display_only_failed_and_display_only_correctable
|
394
|
+
return unless @options.key?(:display_only_failed)
|
395
|
+
return if !@options.key?(:display_only_correctable) &&
|
396
|
+
!@options.key?(:display_only_safe_correctable)
|
397
|
+
|
398
|
+
raise OptionArgumentError,
|
399
|
+
format('--display-only-failed cannot be used together with other display options.')
|
400
|
+
end
|
401
|
+
|
402
|
+
def validate_autocorrect
|
403
|
+
return if @options.key?(:autocorrect)
|
347
404
|
return unless @options.key?(:disable_uncorrectable)
|
348
405
|
|
349
406
|
raise OptionArgumentError,
|
350
|
-
format('--disable-uncorrectable can only be used together with --
|
407
|
+
format('--disable-uncorrectable can only be used together with --autocorrect.')
|
351
408
|
end
|
352
409
|
|
353
410
|
def disable_parallel_when_invalid_option_combo
|
354
411
|
return unless @options.key?(:parallel)
|
355
412
|
|
356
|
-
|
357
|
-
{ name: :auto_gen_config, value: true, flag: '--auto-gen-config' },
|
358
|
-
{ name: :fail_fast, value: true, flag: '-F/--fail-fast.' },
|
359
|
-
{ name: :auto_correct, value: true, flag: '--auto-correct.' },
|
360
|
-
{ name: :cache, value: 'false', flag: '--cache false' }
|
361
|
-
]
|
362
|
-
|
363
|
-
invalid_flags = invalid_options.each_with_object([]) do |option, flags|
|
364
|
-
# `>` rather than `>=` because `@options` will also contain `parallel: true`
|
365
|
-
flags << option[:flag] if @options > { option[:name] => option[:value] }
|
366
|
-
end
|
413
|
+
invalid_flags = invalid_arguments_for_parallel
|
367
414
|
|
368
415
|
return if invalid_flags.empty?
|
369
416
|
|
370
417
|
@options.delete(:parallel)
|
371
418
|
|
372
419
|
puts '-P/--parallel is being ignored because ' \
|
373
|
-
"it is not compatible with #{invalid_flags.join(', ')}"
|
420
|
+
"it is not compatible with #{invalid_flags.join(', ')}."
|
421
|
+
end
|
422
|
+
|
423
|
+
def invalid_arguments_for_parallel
|
424
|
+
[('--auto-gen-config' if @options.key?(:auto_gen_config)),
|
425
|
+
('-F/--fail-fast' if @options.key?(:fail_fast)),
|
426
|
+
('--cache false' if @options > { cache: 'false' })].compact
|
374
427
|
end
|
375
428
|
|
376
429
|
def only_includes_redundant_disable?
|
@@ -379,7 +432,7 @@ module RuboCop
|
|
379
432
|
end
|
380
433
|
|
381
434
|
def display_only_fail_level_offenses_with_autocorrect?
|
382
|
-
@options
|
435
|
+
@options.key?(:display_only_fail_level_offenses) && @options.key?(:autocorrect)
|
383
436
|
end
|
384
437
|
|
385
438
|
def except_syntax?
|
@@ -405,7 +458,7 @@ module RuboCop
|
|
405
458
|
def validate_cache_enabled_for_cache_root
|
406
459
|
return unless @options[:cache] == 'false'
|
407
460
|
|
408
|
-
raise OptionArgumentError, '--cache-root
|
461
|
+
raise OptionArgumentError, '--cache-root cannot be used with --cache false'
|
409
462
|
end
|
410
463
|
end
|
411
464
|
|
@@ -441,7 +494,7 @@ module RuboCop
|
|
441
494
|
exclude_limit: ['Set the limit for how many files to explicitly exclude.',
|
442
495
|
'If there are more files than the limit, the cop will',
|
443
496
|
"be disabled instead. Default is #{MAX_EXCL}."],
|
444
|
-
disable_uncorrectable: ['Used with --
|
497
|
+
disable_uncorrectable: ['Used with --autocorrect to annotate any',
|
445
498
|
'offenses that do not support autocorrect',
|
446
499
|
'with `rubocop:todo` comments.'],
|
447
500
|
force_exclusion: ['Any files excluded by `Exclude` in configuration',
|
@@ -454,6 +507,7 @@ module RuboCop
|
|
454
507
|
'by a `rubocop:disable` directive.'],
|
455
508
|
ignore_parent_exclusion: ['Prevent from inheriting `AllCops/Exclude` from',
|
456
509
|
'parent folders.'],
|
510
|
+
ignore_unrecognized_cops: ['Ignore unrecognized cops or departments in the config.'],
|
457
511
|
force_default_config: ['Use default configuration even if configuration',
|
458
512
|
'files are present in the directory tree.'],
|
459
513
|
format: ['Choose an output formatter. This option',
|
@@ -481,6 +535,9 @@ module RuboCop
|
|
481
535
|
display_only_fail_level_offenses:
|
482
536
|
['Only output offense messages at',
|
483
537
|
'the specified --fail-level or above'],
|
538
|
+
display_only_correctable: ['Only output correctable offense messages.'],
|
539
|
+
display_only_safe_correctable: ['Only output safe-correctable offense messages',
|
540
|
+
'when combined with --display-only-correctable.'],
|
484
541
|
show_cops: ['Shows the given cops, or all cops by',
|
485
542
|
'default, and their configurations for the',
|
486
543
|
'current directory.'],
|
@@ -507,12 +564,14 @@ module RuboCop
|
|
507
564
|
safe: 'Run only safe cops.',
|
508
565
|
stderr: ['Write all output to stderr except for the',
|
509
566
|
'autocorrected source. This is especially useful',
|
510
|
-
'when combined with --
|
567
|
+
'when combined with --autocorrect and --stdin.'],
|
511
568
|
list_target_files: 'List all files RuboCop will inspect.',
|
512
|
-
|
569
|
+
autocorrect: 'Autocorrect offenses (only when it\'s safe).',
|
570
|
+
auto_correct: '(same, deprecated)',
|
513
571
|
safe_auto_correct: '(same, deprecated)',
|
514
|
-
|
515
|
-
|
572
|
+
autocorrect_all: 'Autocorrect offenses (safe and unsafe).',
|
573
|
+
auto_correct_all: '(same, deprecated)',
|
574
|
+
fix_layout: 'Run only layout cops, with autocorrect on.',
|
516
575
|
color: 'Force color output on or off.',
|
517
576
|
version: 'Display version.',
|
518
577
|
verbose_version: 'Display verbose version.',
|
@@ -520,7 +579,17 @@ module RuboCop
|
|
520
579
|
'parallel. Default is true.'],
|
521
580
|
stdin: ['Pipe source from STDIN, using FILE in offense',
|
522
581
|
'reports. This is useful for editor integration.'],
|
523
|
-
init: 'Generate a .rubocop.yml file in the current directory.'
|
582
|
+
init: 'Generate a .rubocop.yml file in the current directory.',
|
583
|
+
server: ['If a server process has not been started yet, start',
|
584
|
+
'the server process and execute inspection with server.',
|
585
|
+
'Default is false.',
|
586
|
+
'You can specify the server host and port with the',
|
587
|
+
'$RUBOCOP_SERVER_HOST and the $RUBOCOP_SERVER_PORT',
|
588
|
+
'environment variables.'],
|
589
|
+
restart_server: 'Restart server process.',
|
590
|
+
start_server: 'Start server process.',
|
591
|
+
stop_server: 'Stop server process.',
|
592
|
+
server_status: 'Show server status.'
|
524
593
|
}.freeze
|
525
594
|
end
|
526
595
|
end
|
data/lib/rubocop/rake_task.rb
CHANGED
@@ -32,6 +32,15 @@ module RuboCop
|
|
32
32
|
|
33
33
|
private
|
34
34
|
|
35
|
+
def perform(option)
|
36
|
+
options = full_options.unshift(option)
|
37
|
+
# `parallel` will automatically be removed from the options internally.
|
38
|
+
# This is a nice to have to suppress the warning message
|
39
|
+
# about --parallel and --autocorrect not being compatible.
|
40
|
+
options.delete('--parallel')
|
41
|
+
run_cli(verbose, options)
|
42
|
+
end
|
43
|
+
|
35
44
|
def run_cli(verbose, options)
|
36
45
|
# We lazy-load RuboCop so that the task doesn't dramatically impact the
|
37
46
|
# load time of your Rakefile.
|
@@ -60,19 +69,35 @@ module RuboCop
|
|
60
69
|
@formatters = []
|
61
70
|
end
|
62
71
|
|
63
|
-
def setup_subtasks(name, *args, &task_block)
|
72
|
+
def setup_subtasks(name, *args, &task_block) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
64
73
|
namespace(name) do
|
65
|
-
|
74
|
+
# rubocop:todo Naming/InclusiveLanguage
|
75
|
+
task(:auto_correct, *args) do
|
76
|
+
require 'rainbow'
|
77
|
+
warn Rainbow(
|
78
|
+
'rubocop:auto_correct task is deprecated; ' \
|
79
|
+
'use rubocop:autocorrect task or rubocop:autocorrect_all task instead.'
|
80
|
+
).yellow
|
81
|
+
RakeFileUtils.verbose(verbose) do
|
82
|
+
yield(*[self, task_args].slice(0, task_block.arity)) if task_block
|
83
|
+
perform('--autocorrect')
|
84
|
+
end
|
85
|
+
end
|
86
|
+
# rubocop:enable Naming/InclusiveLanguage
|
87
|
+
|
88
|
+
desc "Autocorrect RuboCop offenses (only when it's safe)."
|
89
|
+
task(:autocorrect, *args) do |_, task_args|
|
90
|
+
RakeFileUtils.verbose(verbose) do
|
91
|
+
yield(*[self, task_args].slice(0, task_block.arity)) if task_block
|
92
|
+
perform('--autocorrect')
|
93
|
+
end
|
94
|
+
end
|
66
95
|
|
67
|
-
|
96
|
+
desc 'Autocorrect RuboCop offenses (safe and unsafe).'
|
97
|
+
task(:autocorrect_all, *args) do |_, task_args|
|
68
98
|
RakeFileUtils.verbose(verbose) do
|
69
99
|
yield(*[self, task_args].slice(0, task_block.arity)) if task_block
|
70
|
-
|
71
|
-
# `parallel` will automatically be removed from the options internally.
|
72
|
-
# This is a nice to have to suppress the warning message
|
73
|
-
# about parallel and auto-correct not being compatible.
|
74
|
-
options.delete('--parallel')
|
75
|
-
run_cli(verbose, options)
|
100
|
+
perform('--autocorrect-all')
|
76
101
|
end
|
77
102
|
end
|
78
103
|
end
|
data/lib/rubocop/result_cache.rb
CHANGED
@@ -9,7 +9,8 @@ module RuboCop
|
|
9
9
|
# Provides functionality for caching RuboCop runs.
|
10
10
|
# @api private
|
11
11
|
class ResultCache
|
12
|
-
NON_CHANGING = %i[color format formatters out debug fail_level
|
12
|
+
NON_CHANGING = %i[color format formatters out debug fail_level
|
13
|
+
fix_layout autocorrect safe_autocorrect autocorrect_all
|
13
14
|
cache fail_fast stdin parallel].freeze
|
14
15
|
|
15
16
|
# Remove old files so that the cache doesn't grow too big. When the
|
@@ -66,14 +67,22 @@ module RuboCop
|
|
66
67
|
end
|
67
68
|
|
68
69
|
def self.cache_root(config_store)
|
69
|
-
root = ENV
|
70
|
+
root = ENV.fetch('RUBOCOP_CACHE_ROOT', nil)
|
70
71
|
root ||= config_store.for_pwd.for_all_cops['CacheRootDirectory']
|
71
72
|
root ||= if ENV.key?('XDG_CACHE_HOME')
|
72
73
|
# Include user ID in the path to make sure the user has write
|
73
74
|
# access.
|
74
|
-
File.join(ENV
|
75
|
+
File.join(ENV.fetch('XDG_CACHE_HOME'), Process.uid.to_s)
|
75
76
|
else
|
76
|
-
|
77
|
+
# On FreeBSD, the /home path is a symbolic link to /usr/home
|
78
|
+
# and the $HOME environment variable returns the /home path.
|
79
|
+
#
|
80
|
+
# As $HOME is a built-in environment variable, FreeBSD users
|
81
|
+
# always get a warning message.
|
82
|
+
#
|
83
|
+
# To avoid raising warn log messages on FreeBSD, we retrieve
|
84
|
+
# the real path of the home folder.
|
85
|
+
File.join(File.realpath(Dir.home), '.cache')
|
77
86
|
end
|
78
87
|
File.join(root, 'rubocop_cache')
|
79
88
|
end
|
@@ -6,7 +6,7 @@ require 'tempfile'
|
|
6
6
|
module CopHelper
|
7
7
|
extend RSpec::SharedContext
|
8
8
|
|
9
|
-
let(:ruby_version) { 2.
|
9
|
+
let(:ruby_version) { 2.6 }
|
10
10
|
let(:rails_version) { false }
|
11
11
|
|
12
12
|
def inspect_source(source, file = nil)
|
@@ -38,7 +38,7 @@ module CopHelper
|
|
38
38
|
def autocorrect_source(source, file = nil)
|
39
39
|
RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
|
40
40
|
RuboCop::Formatter::DisabledConfigFormatter.detected_styles = {}
|
41
|
-
cop.instance_variable_get(:@options)[:
|
41
|
+
cop.instance_variable_get(:@options)[:autocorrect] = true
|
42
42
|
processed_source = parse_source(source, file)
|
43
43
|
_investigate(cop, processed_source)
|
44
44
|
|
@@ -38,7 +38,7 @@ module RuboCop
|
|
38
38
|
# 'Avoid chaining a method call on a do...end block.'
|
39
39
|
# )
|
40
40
|
#
|
41
|
-
#
|
41
|
+
# Autocorrection can be tested using `expect_correction` after
|
42
42
|
# `expect_offense`.
|
43
43
|
#
|
44
44
|
# @example `expect_offense` and `expect_correction`
|
@@ -58,7 +58,7 @@ module RuboCop
|
|
58
58
|
# that there were no offenses. The `expect_offense` method has
|
59
59
|
# to do more work by parsing out lines that contain carets.
|
60
60
|
#
|
61
|
-
# If the code produces an offense that could not be
|
61
|
+
# If the code produces an offense that could not be autocorrected, you can
|
62
62
|
# use `expect_no_corrections` after `expect_offense`.
|
63
63
|
#
|
64
64
|
# @example `expect_offense` and `expect_no_corrections`
|
@@ -205,7 +205,7 @@ module RuboCop
|
|
205
205
|
def set_formatter_options
|
206
206
|
RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
|
207
207
|
RuboCop::Formatter::DisabledConfigFormatter.detected_styles = {}
|
208
|
-
cop.instance_variable_get(:@options)[:
|
208
|
+
cop.instance_variable_get(:@options)[:autocorrect] = true
|
209
209
|
end
|
210
210
|
|
211
211
|
# Parsed representation of code annotated with the `^^^ Message` style
|
@@ -65,7 +65,7 @@ module RuboCop
|
|
65
65
|
# removed!
|
66
66
|
def output_rerun_commands(summary)
|
67
67
|
output.puts '# RERUN BEGIN'
|
68
|
-
output.puts summary.colorized_rerun_commands.lines[3
|
68
|
+
output.puts summary.colorized_rerun_commands.lines[3..].join
|
69
69
|
output.puts '# RERUN END'
|
70
70
|
end
|
71
71
|
|