rubocop 1.12.1 → 1.16.1
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 +5 -2
- data/config/default.yml +78 -8
- data/exe/rubocop +1 -3
- data/lib/rubocop.rb +10 -1
- data/lib/rubocop/cached_data.rb +1 -3
- data/lib/rubocop/cli.rb +4 -6
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
- data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
- data/lib/rubocop/cli/command/show_cops.rb +1 -4
- data/lib/rubocop/comment_config.rb +2 -7
- data/lib/rubocop/config.rb +11 -26
- data/lib/rubocop/config_loader.rb +5 -11
- data/lib/rubocop/config_loader_resolver.rb +22 -14
- data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
- data/lib/rubocop/config_store.rb +1 -2
- data/lib/rubocop/config_validator.rb +5 -10
- data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
- data/lib/rubocop/cop/badge.rb +1 -2
- data/lib/rubocop/cop/base.rb +8 -6
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
- data/lib/rubocop/cop/bundler/gem_comment.rb +43 -11
- data/lib/rubocop/cop/bundler/gem_version.rb +99 -0
- data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
- data/lib/rubocop/cop/commissioner.rb +2 -8
- data/lib/rubocop/cop/cop.rb +4 -18
- data/lib/rubocop/cop/corrector.rb +1 -4
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
- data/lib/rubocop/cop/generator.rb +1 -4
- data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
- data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
- data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -5
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
- data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -2
- data/lib/rubocop/cop/layout/argument_alignment.rb +30 -14
- data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
- data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
- data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
- data/lib/rubocop/cop/layout/case_indentation.rb +57 -11
- data/lib/rubocop/cop/layout/class_structure.rb +4 -10
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
- data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
- data/lib/rubocop/cop/layout/dot_position.rb +1 -3
- data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
- data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +2 -5
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +14 -5
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
- data/lib/rubocop/cop/layout/hash_alignment.rb +36 -15
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
- data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
- data/lib/rubocop/cop/layout/indentation_width.rb +6 -4
- data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
- data/lib/rubocop/cop/layout/line_length.rb +4 -15
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -10
- data/lib/rubocop/cop/layout/redundant_line_break.rb +137 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +53 -0
- data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
- data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
- data/lib/rubocop/cop/layout/space_around_keyword.rb +19 -6
- data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
- data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
- data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
- data/lib/rubocop/cop/legacy/corrector.rb +1 -3
- data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
- data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +83 -41
- data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
- data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
- data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
- data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
- data/lib/rubocop/cop/lint/else_layout.rb +1 -3
- data/lib/rubocop/cop/lint/empty_block.rb +18 -2
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
- data/lib/rubocop/cop/lint/empty_file.rb +1 -3
- data/lib/rubocop/cop/lint/empty_in_pattern.rb +62 -0
- data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
- data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
- data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
- data/lib/rubocop/cop/lint/loop.rb +1 -2
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
- data/lib/rubocop/cop/lint/missing_super.rb +1 -2
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
- data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
- data/lib/rubocop/cop/lint/number_conversion.rb +2 -3
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
- data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
- data/lib/rubocop/cop/lint/rand_one.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +18 -27
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
- data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
- data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
- data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
- data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
- data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
- data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
- data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
- data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
- data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
- data/lib/rubocop/cop/lint/symbol_conversion.rb +4 -16
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/to_json.rb +1 -2
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
- data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
- data/lib/rubocop/cop/lint/unreachable_loop.rb +14 -7
- data/lib/rubocop/cop/lint/unused_block_argument.rb +9 -7
- data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
- data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
- data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
- data/lib/rubocop/cop/lint/void.rb +5 -12
- data/lib/rubocop/cop/message_annotator.rb +1 -3
- data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
- data/lib/rubocop/cop/metrics/class_length.rb +1 -3
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
- data/lib/rubocop/cop/metrics/module_length.rb +2 -6
- data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
- data/lib/rubocop/cop/migration/department_name.rb +3 -7
- data/lib/rubocop/cop/mixin/alignment.rb +2 -4
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +19 -3
- data/lib/rubocop/cop/mixin/code_length.rb +1 -3
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
- data/lib/rubocop/cop/mixin/def_node.rb +2 -5
- data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
- data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +7 -7
- data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +17 -9
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
- data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
- data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
- data/lib/rubocop/cop/mixin/match_range.rb +2 -5
- data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
- data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -17
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
- data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
- data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
- data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
- data/lib/rubocop/cop/mixin/range_help.rb +10 -13
- data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
- data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
- data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
- data/lib/rubocop/cop/mixin/string_literals_help.rb +3 -5
- data/lib/rubocop/cop/mixin/symbol_help.rb +13 -0
- data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
- data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
- data/lib/rubocop/cop/naming/file_name.rb +7 -16
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
- data/lib/rubocop/cop/naming/method_name.rb +1 -2
- data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
- data/lib/rubocop/cop/offense.rb +3 -8
- data/lib/rubocop/cop/registry.rb +3 -11
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +1 -3
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
- data/lib/rubocop/cop/style/alias.rb +5 -12
- data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
- data/lib/rubocop/cop/style/attr.rb +1 -3
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
- data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
- data/lib/rubocop/cop/style/case_like_if.rb +1 -2
- data/lib/rubocop/cop/style/character_literal.rb +2 -4
- data/lib/rubocop/cop/style/class_and_module_children.rb +19 -10
- data/lib/rubocop/cop/style/class_methods.rb +1 -3
- data/lib/rubocop/cop/style/collection_compact.rb +1 -3
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
- data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
- data/lib/rubocop/cop/style/command_literal.rb +3 -8
- data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
- data/lib/rubocop/cop/style/commented_keyword.rb +2 -8
- data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
- data/lib/rubocop/cop/style/copyright.rb +3 -6
- data/lib/rubocop/cop/style/date_time.rb +2 -5
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
- data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
- data/lib/rubocop/cop/style/empty_else.rb +3 -9
- data/lib/rubocop/cop/style/empty_literal.rb +12 -9
- data/lib/rubocop/cop/style/empty_method.rb +3 -7
- data/lib/rubocop/cop/style/end_block.rb +1 -2
- data/lib/rubocop/cop/style/endless_method.rb +1 -3
- data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
- data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
- data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
- data/lib/rubocop/cop/style/format_string_token.rb +1 -4
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -8
- data/lib/rubocop/cop/style/guard_clause.rb +3 -7
- data/lib/rubocop/cop/style/hash_conversion.rb +28 -3
- data/lib/rubocop/cop/style/hash_each_methods.rb +19 -3
- data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
- data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +27 -8
- data/lib/rubocop/cop/style/if_unless_modifier.rb +40 -13
- data/lib/rubocop/cop/style/in_pattern_then.rb +56 -0
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
- data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
- data/lib/rubocop/cop/style/lambda.rb +2 -4
- data/lib/rubocop/cop/style/lambda_call.rb +1 -2
- data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +7 -12
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
- data/lib/rubocop/cop/style/min_max.rb +1 -2
- data/lib/rubocop/cop/style/missing_else.rb +2 -4
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
- data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
- data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
- data/lib/rubocop/cop/style/module_function.rb +3 -6
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
- data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +62 -0
- data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -3
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
- data/lib/rubocop/cop/style/multiline_when_then.rb +2 -11
- data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
- data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
- data/lib/rubocop/cop/style/negated_if.rb +1 -2
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +17 -9
- data/lib/rubocop/cop/style/negated_unless.rb +1 -2
- data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
- data/lib/rubocop/cop/style/next.rb +4 -9
- data/lib/rubocop/cop/style/nil_lambda.rb +29 -12
- data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
- data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
- data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
- data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
- data/lib/rubocop/cop/style/option_hash.rb +1 -3
- data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
- data/lib/rubocop/cop/style/or_assignment.rb +2 -6
- data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
- data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
- data/lib/rubocop/cop/style/proc.rb +1 -2
- data/lib/rubocop/cop/style/quoted_symbols.rb +110 -0
- data/lib/rubocop/cop/style/raise_args.rb +4 -8
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
- data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
- data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +4 -4
- data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
- data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
- data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
- data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
- data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
- data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
- data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
- data/lib/rubocop/cop/style/redundant_return.rb +3 -5
- data/lib/rubocop/cop/style/redundant_self.rb +25 -7
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
- data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
- data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
- data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
- data/lib/rubocop/cop/style/return_nil.rb +1 -2
- data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
- data/lib/rubocop/cop/style/send.rb +1 -2
- data/lib/rubocop/cop/style/signal_exception.rb +3 -7
- data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
- data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
- data/lib/rubocop/cop/style/single_line_methods.rb +20 -4
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +15 -7
- data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
- data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
- data/lib/rubocop/cop/style/string_chars.rb +2 -1
- data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
- data/lib/rubocop/cop/style/string_literals.rb +3 -5
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -0
- data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
- data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
- data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
- data/lib/rubocop/cop/style/top_level_method_definition.rb +83 -0
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
- data/lib/rubocop/cop/style/trivial_accessors.rb +67 -4
- data/lib/rubocop/cop/style/unless_else.rb +1 -2
- data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +4 -2
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
- data/lib/rubocop/cop/style/word_array.rb +1 -2
- data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
- data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
- data/lib/rubocop/cop/team.rb +2 -5
- data/lib/rubocop/cop/util.rb +4 -10
- data/lib/rubocop/cop/utils/format_string.rb +1 -3
- data/lib/rubocop/cop/variable_force.rb +6 -15
- data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
- data/lib/rubocop/cop/variable_force/branch.rb +16 -2
- data/lib/rubocop/cop/variable_force/reference.rb +1 -3
- data/lib/rubocop/cop/variable_force/scope.rb +4 -8
- data/lib/rubocop/cop/variable_force/variable.rb +2 -4
- data/lib/rubocop/cops_documentation_generator.rb +7 -21
- data/lib/rubocop/directive_comment.rb +5 -1
- data/lib/rubocop/file_finder.rb +1 -3
- data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
- data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
- data/lib/rubocop/formatter/html_formatter.rb +4 -10
- data/lib/rubocop/formatter/json_formatter.rb +1 -5
- data/lib/rubocop/formatter/junit_formatter.rb +23 -14
- data/lib/rubocop/formatter/progress_formatter.rb +1 -3
- data/lib/rubocop/options.rb +30 -50
- data/lib/rubocop/path_util.rb +1 -3
- data/lib/rubocop/rake_task.rb +3 -0
- data/lib/rubocop/remote_config.rb +4 -7
- data/lib/rubocop/result_cache.rb +5 -12
- data/lib/rubocop/rspec/cop_helper.rb +1 -1
- data/lib/rubocop/rspec/expect_offense.rb +4 -9
- data/lib/rubocop/rspec/shared_contexts.rb +8 -15
- data/lib/rubocop/runner.rb +7 -14
- data/lib/rubocop/target_finder.rb +18 -16
- data/lib/rubocop/target_ruby.rb +4 -8
- data/lib/rubocop/version.rb +1 -1
- metadata +16 -7
- data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -66,8 +66,7 @@ module RuboCop
|
|
66
66
|
|
67
67
|
def meta_assignment_node
|
68
68
|
unless instance_variable_defined?(:@meta_assignment_node)
|
69
|
-
@meta_assignment_node =
|
70
|
-
operator_assignment_node || multiple_assignment_node
|
69
|
+
@meta_assignment_node = operator_assignment_node || multiple_assignment_node
|
71
70
|
end
|
72
71
|
|
73
72
|
@meta_assignment_node
|
@@ -121,8 +121,7 @@ module RuboCop
|
|
121
121
|
def ==(other)
|
122
122
|
return false unless other
|
123
123
|
|
124
|
-
control_node.equal?(other.control_node) &&
|
125
|
-
child_node.equal?(other.child_node)
|
124
|
+
control_node.equal?(other.control_node) && child_node.equal?(other.child_node)
|
126
125
|
end
|
127
126
|
|
128
127
|
alias_method :eql?, :==
|
@@ -227,6 +226,21 @@ module RuboCop
|
|
227
226
|
end
|
228
227
|
end
|
229
228
|
|
229
|
+
# case target
|
230
|
+
# in pattern # in_pattern
|
231
|
+
# else
|
232
|
+
# else_body
|
233
|
+
# end
|
234
|
+
class CaseMatch < Base
|
235
|
+
define_predicate :target?, child_index: 0
|
236
|
+
define_predicate :in_pattern?, child_index: 1..-2
|
237
|
+
define_predicate :else_body?, child_index: -1
|
238
|
+
|
239
|
+
def always_run?
|
240
|
+
target?
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
230
244
|
# for element in collection
|
231
245
|
# loop_body
|
232
246
|
# end
|
@@ -8,9 +8,7 @@ module RuboCop
|
|
8
8
|
include Branchable
|
9
9
|
|
10
10
|
VARIABLE_REFERENCE_TYPES = (
|
11
|
-
[VARIABLE_REFERENCE_TYPE] +
|
12
|
-
OPERATOR_ASSIGNMENT_TYPES +
|
13
|
-
[ZERO_ARITY_SUPER_TYPE, SEND_TYPE]
|
11
|
+
[VARIABLE_REFERENCE_TYPE] + OPERATOR_ASSIGNMENT_TYPES + [ZERO_ARITY_SUPER_TYPE, SEND_TYPE]
|
14
12
|
).freeze
|
15
13
|
|
16
14
|
attr_reader :node, :scope
|
@@ -23,10 +23,9 @@ module RuboCop
|
|
23
23
|
unless SCOPE_TYPES.include?(node.type)
|
24
24
|
# Accept any node type for top level scope
|
25
25
|
if node.parent
|
26
|
-
raise ArgumentError,
|
27
|
-
"Node type must be any of #{SCOPE_TYPES}, " \
|
28
|
-
"passed #{node.type}"
|
26
|
+
raise ArgumentError, "Node type must be any of #{SCOPE_TYPES}, passed #{node.type}"
|
29
27
|
end
|
28
|
+
|
30
29
|
@naked_top_level = true
|
31
30
|
end
|
32
31
|
@node = node
|
@@ -56,8 +55,7 @@ module RuboCop
|
|
56
55
|
end
|
57
56
|
|
58
57
|
def include?(target_node)
|
59
|
-
!belong_to_outer_scope?(target_node) &&
|
60
|
-
!belong_to_inner_scope?(target_node)
|
58
|
+
!belong_to_outer_scope?(target_node) && !belong_to_inner_scope?(target_node)
|
61
59
|
end
|
62
60
|
|
63
61
|
def each_node(&block)
|
@@ -100,9 +98,7 @@ module RuboCop
|
|
100
98
|
end
|
101
99
|
|
102
100
|
def ancestor_node?(target_node)
|
103
|
-
node.each_ancestor.any?
|
104
|
-
ancestor_node.equal?(target_node)
|
105
|
-
end
|
101
|
+
node.each_ancestor.any? { |ancestor_node| ancestor_node.equal?(target_node) }
|
106
102
|
end
|
107
103
|
end
|
108
104
|
end
|
@@ -6,11 +6,9 @@ module RuboCop
|
|
6
6
|
# A Variable represents existence of a local variable.
|
7
7
|
# This holds a variable declaration node and some states of the variable.
|
8
8
|
class Variable
|
9
|
-
VARIABLE_DECLARATION_TYPES =
|
10
|
-
(VARIABLE_ASSIGNMENT_TYPES + ARGUMENT_DECLARATION_TYPES).freeze
|
9
|
+
VARIABLE_DECLARATION_TYPES = (VARIABLE_ASSIGNMENT_TYPES + ARGUMENT_DECLARATION_TYPES).freeze
|
11
10
|
|
12
|
-
attr_reader :name, :declaration_node, :scope,
|
13
|
-
:assignments, :references, :captured_by_block
|
11
|
+
attr_reader :name, :declaration_node, :scope, :assignments, :references, :captured_by_block
|
14
12
|
|
15
13
|
alias captured_by_block? captured_by_block
|
16
14
|
|
@@ -18,9 +18,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
|
|
18
18
|
|
19
19
|
def call
|
20
20
|
YARD::Registry.load!
|
21
|
-
departments.each
|
22
|
-
print_cops_of_department(department)
|
23
|
-
end
|
21
|
+
departments.each { |department| print_cops_of_department(department) }
|
24
22
|
|
25
23
|
print_table_of_contents
|
26
24
|
ensure
|
@@ -105,8 +103,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
|
|
105
103
|
|
106
104
|
def code_example(ruby_code)
|
107
105
|
content = +"[source,ruby]\n----\n"
|
108
|
-
content << ruby_code.text.gsub('@good', '# good')
|
109
|
-
.gsub('@bad', '# bad').strip
|
106
|
+
content << ruby_code.text.gsub('@good', '# good').gsub('@bad', '# bad').strip
|
110
107
|
content << "\n----\n"
|
111
108
|
content
|
112
109
|
end
|
@@ -158,10 +155,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
|
|
158
155
|
# rubocop:enable Metrics/CyclomaticComplexity,Metrics/MethodLength
|
159
156
|
|
160
157
|
def to_table(header, content)
|
161
|
-
table = [
|
162
|
-
'|===',
|
163
|
-
"| #{header.join(' | ')}\n\n"
|
164
|
-
].join("\n")
|
158
|
+
table = ['|===', "| #{header.join(' | ')}\n\n"].join("\n")
|
165
159
|
marked_contents = content.map do |plain_content|
|
166
160
|
plain_content.map { |c| "| #{c}" }.join("\n")
|
167
161
|
end
|
@@ -195,9 +189,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
|
|
195
189
|
|
196
190
|
def references(cop)
|
197
191
|
cop_config = config.for_cop(cop)
|
198
|
-
urls = RuboCop::Cop::MessageAnnotator.new(
|
199
|
-
config, cop.name, cop_config, {}
|
200
|
-
).urls
|
192
|
+
urls = RuboCop::Cop::MessageAnnotator.new(config, cop.name, cop_config, {}).urls
|
201
193
|
return '' if urls.empty?
|
202
194
|
|
203
195
|
content = h3('References')
|
@@ -209,9 +201,7 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
|
|
209
201
|
def print_cops_of_department(department)
|
210
202
|
selected_cops = cops_of_department(department)
|
211
203
|
content = +"= #{department}\n"
|
212
|
-
selected_cops.each
|
213
|
-
content << print_cop_with_doc(cop)
|
214
|
-
end
|
204
|
+
selected_cops.each { |cop| content << print_cop_with_doc(cop) }
|
215
205
|
file_name = "#{Dir.pwd}/docs/modules/ROOT/pages/#{department_to_basename(department)}.adoc"
|
216
206
|
File.open(file_name, 'w') do |file|
|
217
207
|
puts "* generated #{file_name}"
|
@@ -264,16 +254,12 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
|
|
264
254
|
|
265
255
|
content << "\n// END_COP_LIST"
|
266
256
|
|
267
|
-
content = original.sub(
|
268
|
-
%r{// START_COP_LIST.+// END_COP_LIST}m, content
|
269
|
-
)
|
257
|
+
content = original.sub(%r{// START_COP_LIST.+// END_COP_LIST}m, content)
|
270
258
|
File.write(path, content)
|
271
259
|
end
|
272
260
|
|
273
261
|
def table_contents
|
274
|
-
departments
|
275
|
-
.map { |department| table_of_content_for_department(department) }
|
276
|
-
.join("\n")
|
262
|
+
departments.map { |department| table_of_content_for_department(department) }.join("\n")
|
277
263
|
end
|
278
264
|
|
279
265
|
def cop_status(status)
|
@@ -41,7 +41,11 @@ module RuboCop
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def range
|
44
|
-
comment.
|
44
|
+
match = comment.text.match(DIRECTIVE_COMMENT_REGEXP)
|
45
|
+
begin_pos = comment.loc.expression.begin_pos
|
46
|
+
Parser::Source::Range.new(
|
47
|
+
comment.loc.expression.source_buffer, begin_pos + match.begin(0), begin_pos + match.end(0)
|
48
|
+
)
|
45
49
|
end
|
46
50
|
|
47
51
|
# Returns match captures to directive comment pattern
|
data/lib/rubocop/file_finder.rb
CHANGED
@@ -23,9 +23,7 @@ module RuboCop
|
|
23
23
|
|
24
24
|
def find_last_file_upwards(filename, start_dir, stop_dir = nil)
|
25
25
|
last_file = nil
|
26
|
-
traverse_files_upwards(filename, start_dir, stop_dir)
|
27
|
-
last_file = file
|
28
|
-
end
|
26
|
+
traverse_files_upwards(filename, start_dir, stop_dir) { |file| last_file = file }
|
29
27
|
last_file
|
30
28
|
end
|
31
29
|
|
@@ -71,9 +71,7 @@ module RuboCop
|
|
71
71
|
command += ' --auto-gen-only-exclude' if @options[:auto_gen_only_exclude]
|
72
72
|
|
73
73
|
if @exclude_limit_option
|
74
|
-
command +=
|
75
|
-
format(' --exclude-limit %<limit>d',
|
76
|
-
limit: Integer(@exclude_limit_option))
|
74
|
+
command += format(' --exclude-limit %<limit>d', limit: Integer(@exclude_limit_option))
|
77
75
|
end
|
78
76
|
command += ' --no-offense-counts' unless show_offense_counts?
|
79
77
|
|
@@ -111,8 +109,7 @@ module RuboCop
|
|
111
109
|
|
112
110
|
# In case auto_gen_only_exclude is set, only modify the maximum if the
|
113
111
|
# files are not excluded one by one.
|
114
|
-
if !@options[:auto_gen_only_exclude] ||
|
115
|
-
@files_with_offenses[cop_name].size > @exclude_limit
|
112
|
+
if !@options[:auto_gen_only_exclude] || @files_with_offenses[cop_name].size > @exclude_limit
|
116
113
|
cfg.merge!(cfg[:exclude_limit])
|
117
114
|
end
|
118
115
|
|
@@ -144,9 +141,7 @@ module RuboCop
|
|
144
141
|
|
145
142
|
def output_cop_param_comments(output_buffer, params, default_cfg)
|
146
143
|
config_params = params.reject { |p| p.start_with?('Supported') }
|
147
|
-
output_buffer.puts(
|
148
|
-
"# Configuration parameters: #{config_params.join(', ')}."
|
149
|
-
)
|
144
|
+
output_buffer.puts("# Configuration parameters: #{config_params.join(', ')}.")
|
150
145
|
|
151
146
|
params.each do |param|
|
152
147
|
value = default_cfg[param]
|
@@ -5,11 +5,7 @@ module RuboCop
|
|
5
5
|
# This formatter formats report data as GitHub Workflow commands resulting
|
6
6
|
# in GitHub check annotations when run within GitHub Actions.
|
7
7
|
class GitHubActionsFormatter < BaseFormatter
|
8
|
-
ESCAPE_MAP = {
|
9
|
-
'%' => '%25',
|
10
|
-
"\n" => '%0A',
|
11
|
-
"\r" => '%0D'
|
12
|
-
}.freeze
|
8
|
+
ESCAPE_MAP = { '%' => '%25', "\n" => '%0A', "\r" => '%0D' }.freeze
|
13
9
|
|
14
10
|
def file_finished(file, offenses)
|
15
11
|
offenses.each { |offense| report_offense(file, offense) }
|
@@ -11,8 +11,7 @@ module RuboCop
|
|
11
11
|
# This formatter saves the output as an html file.
|
12
12
|
class HTMLFormatter < BaseFormatter
|
13
13
|
ELLIPSES = '<span class="extra-code">...</span>'
|
14
|
-
TEMPLATE_PATH =
|
15
|
-
File.expand_path('../../../assets/output.html.erb', __dir__)
|
14
|
+
TEMPLATE_PATH = File.expand_path('../../../assets/output.html.erb', __dir__)
|
16
15
|
|
17
16
|
Color = Struct.new(:red, :green, :blue, :alpha) do
|
18
17
|
def to_s
|
@@ -20,9 +19,7 @@ module RuboCop
|
|
20
19
|
end
|
21
20
|
|
22
21
|
def fade_out(amount)
|
23
|
-
dup.tap
|
24
|
-
color.alpha -= amount
|
25
|
-
end
|
22
|
+
dup.tap { |color| color.alpha -= amount }
|
26
23
|
end
|
27
24
|
end
|
28
25
|
|
@@ -79,8 +76,7 @@ module RuboCop
|
|
79
76
|
fatal: Color.new(0xD2, 0x32, 0x2D, 1.0)
|
80
77
|
}.freeze
|
81
78
|
|
82
|
-
LOGO_IMAGE_PATH =
|
83
|
-
File.expand_path('../../../assets/logo.png', __dir__)
|
79
|
+
LOGO_IMAGE_PATH = File.expand_path('../../../assets/logo.png', __dir__)
|
84
80
|
|
85
81
|
attr_reader :files, :summary
|
86
82
|
|
@@ -97,9 +93,7 @@ module RuboCop
|
|
97
93
|
# rubocop:enable Lint/UselessMethodDefinition
|
98
94
|
|
99
95
|
def decorated_message(offense)
|
100
|
-
offense.message.gsub(/`(.+?)`/)
|
101
|
-
"<code>#{Regexp.last_match(1)}</code>"
|
102
|
-
end
|
96
|
+
offense.message.gsub(/`(.+?)`/) { "<code>#{Regexp.last_match(1)}</code>" }
|
103
97
|
end
|
104
98
|
|
105
99
|
def highlighted_source_line(offense)
|
@@ -13,11 +13,7 @@ module RuboCop
|
|
13
13
|
|
14
14
|
def initialize(output, options = {})
|
15
15
|
super
|
16
|
-
@output_hash = {
|
17
|
-
metadata: metadata_hash,
|
18
|
-
files: [],
|
19
|
-
summary: { offense_count: 0 }
|
20
|
-
}
|
16
|
+
@output_hash = { metadata: metadata_hash, files: [], summary: { offense_count: 0 } }
|
21
17
|
end
|
22
18
|
|
23
19
|
def started(target_files)
|
@@ -18,17 +18,17 @@ module RuboCop
|
|
18
18
|
def initialize(output, options = {})
|
19
19
|
super
|
20
20
|
|
21
|
-
@document = REXML::Document.new.tap
|
22
|
-
document << REXML::XMLDecl.new
|
23
|
-
end
|
21
|
+
@document = REXML::Document.new.tap { |document| document << REXML::XMLDecl.new }
|
24
22
|
testsuites = REXML::Element.new('testsuites', @document)
|
25
23
|
testsuite = REXML::Element.new('testsuite', testsuites)
|
26
|
-
@testsuite = testsuite.tap
|
27
|
-
|
28
|
-
|
24
|
+
@testsuite = testsuite.tap { |element| element.add_attributes('name' => 'rubocop') }
|
25
|
+
|
26
|
+
reset_count
|
29
27
|
end
|
30
28
|
|
31
29
|
def file_finished(file, offenses)
|
30
|
+
@inspected_file_count += 1
|
31
|
+
|
32
32
|
# TODO: Returns all cops with the same behavior as
|
33
33
|
# the original rubocop-junit-formatter.
|
34
34
|
# https://github.com/mikian/rubocop-junit-formatter/blob/v0.1.4/lib/rubocop/formatter/junit_formatter.rb#L9
|
@@ -36,15 +36,11 @@ module RuboCop
|
|
36
36
|
# In the future, it would be preferable to return only enabled cops.
|
37
37
|
Cop::Registry.all.each do |cop|
|
38
38
|
target_offenses = offenses_for_cop(offenses, cop)
|
39
|
+
@offense_count += target_offenses.count
|
39
40
|
|
40
41
|
next unless relevant_for_output?(options, target_offenses)
|
41
42
|
|
42
|
-
|
43
|
-
testcase.attributes['classname'] = classname_attribute_value(file)
|
44
|
-
testcase.attributes['name'] = cop.cop_name
|
45
|
-
|
46
|
-
add_failure_to(testcase, target_offenses, cop.cop_name)
|
47
|
-
end
|
43
|
+
add_testcase_element_to_testsuite_element(file, target_offenses, cop)
|
48
44
|
end
|
49
45
|
end
|
50
46
|
|
@@ -53,8 +49,15 @@ module RuboCop
|
|
53
49
|
end
|
54
50
|
|
55
51
|
def offenses_for_cop(all_offenses, cop)
|
56
|
-
all_offenses.select
|
57
|
-
|
52
|
+
all_offenses.select { |offense| offense.cop_name == cop.cop_name }
|
53
|
+
end
|
54
|
+
|
55
|
+
def add_testcase_element_to_testsuite_element(file, target_offenses, cop)
|
56
|
+
REXML::Element.new('testcase', @testsuite).tap do |testcase|
|
57
|
+
testcase.attributes['classname'] = classname_attribute_value(file)
|
58
|
+
testcase.attributes['name'] = cop.cop_name
|
59
|
+
|
60
|
+
add_failure_to(testcase, target_offenses, cop.cop_name)
|
58
61
|
end
|
59
62
|
end
|
60
63
|
|
@@ -63,11 +66,17 @@ module RuboCop
|
|
63
66
|
end
|
64
67
|
|
65
68
|
def finished(_inspected_files)
|
69
|
+
@testsuite.add_attributes('tests' => @inspected_file_count, 'failures' => @offense_count)
|
66
70
|
@document.write(output, 2)
|
67
71
|
end
|
68
72
|
|
69
73
|
private
|
70
74
|
|
75
|
+
def reset_count
|
76
|
+
@inspected_file_count = 0
|
77
|
+
@offense_count = 0
|
78
|
+
end
|
79
|
+
|
71
80
|
def add_failure_to(testcase, offenses, cop_name)
|
72
81
|
# One failure per offense. Zero failures is a passing test case,
|
73
82
|
# for most surefire/nUnit parsers.
|
@@ -38,9 +38,7 @@ module RuboCop
|
|
38
38
|
output.puts 'Offenses:'
|
39
39
|
output.puts
|
40
40
|
|
41
|
-
@offenses_for_files.each
|
42
|
-
report_file(file, offenses)
|
43
|
-
end
|
41
|
+
@offenses_for_files.each { |file, offenses| report_file(file, offenses) }
|
44
42
|
end
|
45
43
|
|
46
44
|
report_summary(inspected_files.size,
|
data/lib/rubocop/options.rb
CHANGED
@@ -112,9 +112,7 @@ module RuboCop
|
|
112
112
|
@options.replace(ConfigRegeneration.new.options.merge(@options))
|
113
113
|
end
|
114
114
|
|
115
|
-
option(opts, '--exclude-limit COUNT')
|
116
|
-
@validator.validate_exclude_limit_option
|
117
|
-
end
|
115
|
+
option(opts, '--exclude-limit COUNT') { @validator.validate_exclude_limit_option }
|
118
116
|
|
119
117
|
option(opts, '--disable-uncorrectable')
|
120
118
|
|
@@ -161,9 +159,7 @@ module RuboCop
|
|
161
159
|
|
162
160
|
def add_cache_options(opts)
|
163
161
|
option(opts, '-C', '--cache FLAG')
|
164
|
-
option(opts, '--cache-root DIR')
|
165
|
-
@validator.validate_cache_enabled_for_cache_root
|
166
|
-
end
|
162
|
+
option(opts, '--cache-root DIR') { @validator.validate_cache_enabled_for_cache_root }
|
167
163
|
end
|
168
164
|
|
169
165
|
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
@@ -173,16 +169,12 @@ module RuboCop
|
|
173
169
|
option(opts, '-D', '--[no-]display-cop-names')
|
174
170
|
option(opts, '-E', '--extra-details')
|
175
171
|
option(opts, '-S', '--display-style-guide')
|
176
|
-
option(opts, '-a', '--auto-correct')
|
177
|
-
@options[:safe_auto_correct] = true
|
178
|
-
end
|
172
|
+
option(opts, '-a', '--auto-correct') { @options[:safe_auto_correct] = true }
|
179
173
|
option(opts, '--safe-auto-correct') do
|
180
174
|
warn '--safe-auto-correct is deprecated; use --auto-correct'
|
181
175
|
@options[:safe_auto_correct] = @options[:auto_correct] = true
|
182
176
|
end
|
183
|
-
option(opts, '-A', '--auto-correct-all')
|
184
|
-
@options[:auto_correct] = true
|
185
|
-
end
|
177
|
+
option(opts, '-A', '--auto-correct-all') { @options[:auto_correct] = true }
|
186
178
|
option(opts, '--disable-pending-cops')
|
187
179
|
option(opts, '--enable-pending-cops')
|
188
180
|
option(opts, '--ignore-disable-comments')
|
@@ -194,7 +186,7 @@ module RuboCop
|
|
194
186
|
|
195
187
|
option(opts, '-v', '--version')
|
196
188
|
option(opts, '-V', '--verbose-version')
|
197
|
-
option(opts, '-P', '--parallel')
|
189
|
+
option(opts, '-P', '--[no-]parallel')
|
198
190
|
end
|
199
191
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
200
192
|
|
@@ -229,8 +221,7 @@ module RuboCop
|
|
229
221
|
# e.g. [..., '--auto-correct', ...] to :auto_correct.
|
230
222
|
def long_opt_symbol(args)
|
231
223
|
long_opt = args.find { |arg| arg.start_with?('--') }
|
232
|
-
long_opt[2..-1].sub('[no-]', '').sub(/ .*/, '')
|
233
|
-
.tr('-', '_').gsub(/[\[\]]/, '').to_sym
|
224
|
+
long_opt[2..-1].sub('[no-]', '').sub(/ .*/, '').tr('-', '_').gsub(/[\[\]]/, '').to_sym
|
234
225
|
end
|
235
226
|
|
236
227
|
def require_feature(file)
|
@@ -286,16 +277,13 @@ module RuboCop
|
|
286
277
|
end
|
287
278
|
|
288
279
|
def validate_cop_options
|
289
|
-
%i[only except].each
|
290
|
-
OptionsValidator.validate_cop_list(@options[opt])
|
291
|
-
end
|
280
|
+
%i[only except].each { |opt| OptionsValidator.validate_cop_list(@options[opt]) }
|
292
281
|
end
|
293
282
|
|
294
283
|
# rubocop:disable Metrics/AbcSize
|
295
284
|
def validate_compatibility # rubocop:disable Metrics/MethodLength
|
296
285
|
if only_includes_redundant_disable?
|
297
|
-
raise OptionArgumentError, 'Lint/RedundantCopDisableDirective cannot '
|
298
|
-
'be used with --only.'
|
286
|
+
raise OptionArgumentError, 'Lint/RedundantCopDisableDirective cannot be used with --only.'
|
299
287
|
end
|
300
288
|
raise OptionArgumentError, 'Syntax checking cannot be turned off.' if except_syntax?
|
301
289
|
unless boolean_or_empty_cache?
|
@@ -309,12 +297,11 @@ module RuboCop
|
|
309
297
|
validate_auto_gen_config
|
310
298
|
validate_auto_correct
|
311
299
|
validate_display_only_failed
|
312
|
-
|
300
|
+
disable_parallel_when_invalid_option_combo
|
313
301
|
|
314
302
|
return if incompatible_options.size <= 1
|
315
303
|
|
316
|
-
raise OptionArgumentError,
|
317
|
-
"#{incompatible_options.inspect}"
|
304
|
+
raise OptionArgumentError, "Incompatible cli options: #{incompatible_options.inspect}"
|
318
305
|
end
|
319
306
|
# rubocop:enable Metrics/AbcSize
|
320
307
|
|
@@ -326,8 +313,7 @@ module RuboCop
|
|
326
313
|
%i[exclude_limit offense_counts auto_gen_timestamp
|
327
314
|
auto_gen_only_exclude].each do |option|
|
328
315
|
if @options.key?(option)
|
329
|
-
raise OptionArgumentError,
|
330
|
-
format(message, flag: option.to_s.tr('_', '-'))
|
316
|
+
raise OptionArgumentError, format(message, flag: option.to_s.tr('_', '-'))
|
331
317
|
end
|
332
318
|
end
|
333
319
|
end
|
@@ -348,36 +334,32 @@ module RuboCop
|
|
348
334
|
format('--disable-uncorrectable can only be used together with --auto-correct.')
|
349
335
|
end
|
350
336
|
|
351
|
-
def
|
337
|
+
def disable_parallel_when_invalid_option_combo
|
352
338
|
return unless @options.key?(:parallel)
|
353
339
|
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
340
|
+
invalid_options = [
|
341
|
+
{ name: :auto_gen_config, value: true, flag: '--auto-gen-config' },
|
342
|
+
{ name: :fail_fast, value: true, flag: '-F/--fail-fast.' },
|
343
|
+
{ name: :auto_correct, value: true, flag: '--auto-correct.' },
|
344
|
+
{ name: :cache, value: 'false', flag: '--cache false' }
|
345
|
+
]
|
346
|
+
|
347
|
+
invalid_flags = invalid_options.each_with_object([]) do |option, flags|
|
348
|
+
# `>` rather than `>=` because `@options` will also contain `parallel: true`
|
349
|
+
flags << option[:flag] if @options > { option[:name] => option[:value] }
|
358
350
|
end
|
359
351
|
|
360
|
-
|
361
|
-
end
|
352
|
+
return if invalid_flags.empty?
|
362
353
|
|
363
|
-
|
364
|
-
combos = {
|
365
|
-
auto_gen_config: '-P/--parallel uses caching to speed up execution, ' \
|
366
|
-
'while --auto-gen-config needs a non-cached run, ' \
|
367
|
-
'so they cannot be combined.',
|
368
|
-
fail_fast: '-P/--parallel cannot be combined with -F/--fail-fast.',
|
369
|
-
auto_correct: '-P/--parallel cannot be combined with --auto-correct.'
|
370
|
-
}
|
354
|
+
@options.delete(:parallel)
|
371
355
|
|
372
|
-
|
373
|
-
|
374
|
-
end
|
356
|
+
puts '-P/--parallel is being ignored because ' \
|
357
|
+
"it is not compatible with #{invalid_flags.join(', ')}"
|
375
358
|
end
|
376
359
|
|
377
360
|
def only_includes_redundant_disable?
|
378
361
|
@options.key?(:only) &&
|
379
|
-
(@options[:only] & %w[Lint/RedundantCopDisableDirective
|
380
|
-
RedundantCopDisableDirective]).any?
|
362
|
+
(@options[:only] & %w[Lint/RedundantCopDisableDirective RedundantCopDisableDirective]).any?
|
381
363
|
end
|
382
364
|
|
383
365
|
def display_only_fail_level_offenses_with_autocorrect?
|
@@ -385,8 +367,7 @@ module RuboCop
|
|
385
367
|
end
|
386
368
|
|
387
369
|
def except_syntax?
|
388
|
-
@options.key?(:except) &&
|
389
|
-
(@options[:except] & %w[Lint/Syntax Syntax]).any?
|
370
|
+
@options.key?(:except) && (@options[:except] & %w[Lint/Syntax Syntax]).any?
|
390
371
|
end
|
391
372
|
|
392
373
|
def boolean_or_empty_cache?
|
@@ -408,8 +389,7 @@ module RuboCop
|
|
408
389
|
def validate_cache_enabled_for_cache_root
|
409
390
|
return unless @options[:cache] == 'false'
|
410
391
|
|
411
|
-
raise OptionArgumentError, '--cache-root can not be used with '
|
412
|
-
'--cache false'
|
392
|
+
raise OptionArgumentError, '--cache-root can not be used with --cache false'
|
413
393
|
end
|
414
394
|
end
|
415
395
|
|
@@ -512,7 +492,7 @@ module RuboCop
|
|
512
492
|
version: 'Display version.',
|
513
493
|
verbose_version: 'Display verbose version.',
|
514
494
|
parallel: ['Use available CPUs to execute inspection in',
|
515
|
-
'parallel.'],
|
495
|
+
'parallel. Default is false.'],
|
516
496
|
stdin: ['Pipe source from STDIN, using FILE in offense',
|
517
497
|
'reports. This is useful for editor integration.'],
|
518
498
|
init: 'Generate a .rubocop.yml file in the current directory.'
|