rubocop 0.42.0 → 0.52.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/LICENSE.txt +1 -1
- data/README.md +106 -20
- data/assets/output.html.erb +21 -10
- data/bin/rubocop +1 -2
- data/config/default.yml +914 -483
- data/config/disabled.yml +61 -41
- data/config/enabled.yml +1396 -878
- data/lib/rubocop/ast/builder.rb +72 -0
- data/lib/rubocop/ast/node/and_node.rb +37 -0
- data/lib/rubocop/ast/node/args_node.rb +29 -0
- data/lib/rubocop/ast/node/array_node.rb +57 -0
- data/lib/rubocop/ast/node/block_node.rb +116 -0
- data/lib/rubocop/ast/node/case_node.rb +64 -0
- data/lib/rubocop/ast/node/def_node.rb +71 -0
- data/lib/rubocop/ast/node/ensure_node.rb +25 -0
- data/lib/rubocop/ast/node/for_node.rb +61 -0
- data/lib/rubocop/ast/node/hash_node.rb +109 -0
- data/lib/rubocop/ast/node/if_node.rb +146 -0
- data/lib/rubocop/ast/node/keyword_splat_node.rb +45 -0
- data/lib/rubocop/ast/node/mixin/basic_literal_node.rb +16 -0
- data/lib/rubocop/ast/node/mixin/binary_operator_node.rb +23 -0
- data/lib/rubocop/ast/node/mixin/collection_node.rb +15 -0
- data/lib/rubocop/ast/node/mixin/conditional_node.rb +45 -0
- data/lib/rubocop/ast/node/mixin/hash_element_node.rb +125 -0
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +174 -0
- data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +89 -0
- data/lib/rubocop/ast/node/mixin/modifier_node.rb +17 -0
- data/lib/rubocop/ast/node/mixin/parameterized_node.rb +61 -0
- data/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +35 -0
- data/lib/rubocop/ast/node/or_node.rb +37 -0
- data/lib/rubocop/ast/node/pair_node.rb +64 -0
- data/lib/rubocop/ast/node/regexp_node.rb +35 -0
- data/lib/rubocop/ast/node/resbody_node.rb +25 -0
- data/lib/rubocop/ast/node/send_node.rb +45 -0
- data/lib/rubocop/ast/node/str_node.rb +14 -0
- data/lib/rubocop/ast/node/super_node.rb +21 -0
- data/lib/rubocop/ast/node/symbol_node.rb +20 -0
- data/lib/rubocop/ast/node/until_node.rb +43 -0
- data/lib/rubocop/ast/node/when_node.rb +61 -0
- data/lib/rubocop/ast/node/while_node.rb +43 -0
- data/lib/rubocop/ast/node/yield_node.rb +21 -0
- data/lib/rubocop/ast/node.rb +634 -0
- data/lib/rubocop/ast/sexp.rb +16 -0
- data/lib/rubocop/{ast_node → ast}/traversal.rb +23 -24
- data/lib/rubocop/cached_data.rb +11 -31
- data/lib/rubocop/cli.rb +116 -33
- data/lib/rubocop/comment_config.rb +4 -10
- data/lib/rubocop/config.rb +355 -102
- data/lib/rubocop/config_loader.rb +93 -78
- data/lib/rubocop/config_loader_resolver.rb +106 -7
- data/lib/rubocop/config_store.rb +4 -1
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -2
- data/lib/rubocop/cop/badge.rb +73 -0
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +71 -0
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +67 -0
- data/lib/rubocop/cop/bundler/ordered_gems.rb +71 -0
- data/lib/rubocop/cop/commissioner.rb +27 -10
- data/lib/rubocop/cop/cop.rb +62 -107
- data/lib/rubocop/cop/corrector.rb +0 -1
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +121 -0
- data/lib/rubocop/cop/correctors/condition_corrector.rb +28 -0
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +26 -0
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +62 -0
- data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +44 -0
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +31 -0
- data/lib/rubocop/cop/correctors/punctuation_corrector.rb +29 -0
- data/lib/rubocop/cop/correctors/space_corrector.rb +34 -0
- data/lib/rubocop/cop/correctors/string_literal_corrector.rb +25 -0
- data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +31 -0
- data/lib/rubocop/cop/force.rb +0 -1
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +102 -0
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +106 -0
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +87 -0
- data/lib/rubocop/cop/generator/require_file_injector.rb +78 -0
- data/lib/rubocop/cop/generator.rb +191 -0
- data/lib/rubocop/cop/ignored_node.rb +0 -1
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +46 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +44 -0
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +54 -0
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +59 -0
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +71 -0
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +52 -0
- data/lib/rubocop/cop/internal_affairs.rb +8 -0
- data/lib/rubocop/cop/{style → layout}/access_modifier_indentation.rb +39 -10
- data/lib/rubocop/cop/layout/align_array.rb +39 -0
- data/lib/rubocop/cop/layout/align_hash.rb +235 -0
- data/lib/rubocop/cop/{style → layout}/align_parameters.rb +38 -19
- data/lib/rubocop/cop/{style → layout}/block_end_newline.rb +26 -8
- data/lib/rubocop/cop/layout/case_indentation.rb +160 -0
- data/lib/rubocop/cop/layout/class_structure.rb +306 -0
- data/lib/rubocop/cop/{style → layout}/closing_parenthesis_indentation.rb +18 -13
- data/lib/rubocop/cop/{style → layout}/comment_indentation.rb +48 -6
- data/lib/rubocop/cop/{style → layout}/dot_position.rb +34 -21
- data/lib/rubocop/cop/{style → layout}/else_alignment.rb +55 -37
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +63 -0
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +147 -0
- data/lib/rubocop/cop/{style → layout}/empty_lines.rb +17 -4
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_access_modifier.rb +40 -24
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +87 -0
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +46 -0
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_block_body.rb +9 -12
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +68 -0
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +135 -0
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_method_body.rb +10 -7
- data/lib/rubocop/cop/{style → layout}/empty_lines_around_module_body.rb +27 -9
- data/lib/rubocop/cop/layout/end_of_line.rb +52 -0
- data/lib/rubocop/cop/{style → layout}/extra_spacing.rb +63 -53
- data/lib/rubocop/cop/{style → layout}/first_array_element_line_break.rb +5 -2
- data/lib/rubocop/cop/{style → layout}/first_hash_element_line_break.rb +5 -2
- data/lib/rubocop/cop/{style → layout}/first_method_argument_line_break.rb +7 -4
- data/lib/rubocop/cop/{style → layout}/first_method_parameter_line_break.rb +8 -5
- data/lib/rubocop/cop/{style → layout}/first_parameter_indentation.rb +32 -26
- data/lib/rubocop/cop/{style → layout}/indent_array.rb +75 -25
- data/lib/rubocop/cop/{style → layout}/indent_assignment.rb +9 -6
- data/lib/rubocop/cop/{style → layout}/indent_hash.rb +80 -31
- data/lib/rubocop/cop/layout/indent_heredoc.rb +208 -0
- data/lib/rubocop/cop/{style → layout}/indentation_consistency.rb +7 -5
- data/lib/rubocop/cop/{style → layout}/indentation_width.rb +151 -117
- data/lib/rubocop/cop/layout/initial_indentation.rb +45 -0
- data/lib/rubocop/cop/layout/leading_comment_space.rb +58 -0
- data/lib/rubocop/cop/{style → layout}/multiline_array_brace_layout.rb +52 -16
- data/lib/rubocop/cop/{style → layout}/multiline_assignment_layout.rb +18 -21
- data/lib/rubocop/cop/{style → layout}/multiline_block_layout.rb +37 -43
- data/lib/rubocop/cop/{style → layout}/multiline_hash_brace_layout.rb +55 -15
- data/lib/rubocop/cop/{style → layout}/multiline_method_call_brace_layout.rb +15 -4
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +221 -0
- data/lib/rubocop/cop/{style → layout}/multiline_method_definition_brace_layout.rb +12 -5
- data/lib/rubocop/cop/{style → layout}/multiline_operation_indentation.rb +23 -13
- data/lib/rubocop/cop/{style → layout}/rescue_ensure_alignment.rb +24 -13
- data/lib/rubocop/cop/{style → layout}/space_after_colon.rb +17 -13
- data/lib/rubocop/cop/layout/space_after_comma.rb +35 -0
- data/lib/rubocop/cop/{style → layout}/space_after_method_name.rb +11 -11
- data/lib/rubocop/cop/layout/space_after_not.rb +38 -0
- data/lib/rubocop/cop/{style → layout}/space_after_semicolon.rb +14 -4
- data/lib/rubocop/cop/{style → layout}/space_around_block_parameters.rb +52 -28
- data/lib/rubocop/cop/{style → layout}/space_around_equals_in_parameter_default.rb +29 -21
- data/lib/rubocop/cop/{style → layout}/space_around_keyword.rb +33 -29
- data/lib/rubocop/cop/layout/space_around_operators.rb +159 -0
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +107 -0
- data/lib/rubocop/cop/layout/space_before_comma.rb +31 -0
- data/lib/rubocop/cop/{style → layout}/space_before_comment.rb +11 -7
- data/lib/rubocop/cop/{style → layout}/space_before_first_arg.rb +23 -20
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +27 -0
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +85 -0
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +236 -0
- data/lib/rubocop/cop/{style → layout}/space_inside_array_percent_literal.rb +8 -8
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +228 -0
- data/lib/rubocop/cop/{style → layout}/space_inside_hash_literal_braces.rb +91 -51
- data/lib/rubocop/cop/layout/space_inside_parens.rb +53 -0
- data/lib/rubocop/cop/{style → layout}/space_inside_percent_literal_delimiters.rb +14 -13
- data/lib/rubocop/cop/{style → layout}/space_inside_range_literal.rb +16 -17
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +90 -0
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +80 -0
- data/lib/rubocop/cop/{style → layout}/tab.rb +8 -6
- data/lib/rubocop/cop/{style → layout}/trailing_blank_lines.rb +14 -15
- data/lib/rubocop/cop/{style → layout}/trailing_whitespace.rb +3 -4
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +59 -0
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +13 -9
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +7 -1
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +55 -25
- data/lib/rubocop/cop/lint/block_alignment.rb +75 -34
- data/lib/rubocop/cop/lint/boolean_symbol.rb +38 -0
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +17 -15
- data/lib/rubocop/cop/lint/condition_position.rb +16 -15
- data/lib/rubocop/cop/lint/debugger.rb +57 -23
- data/lib/rubocop/cop/lint/def_end_alignment.rb +28 -14
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +19 -10
- data/lib/rubocop/cop/lint/duplicate_case_condition.rb +53 -0
- data/lib/rubocop/cop/lint/duplicate_methods.rb +108 -14
- data/lib/rubocop/cop/lint/duplicated_key.rb +16 -9
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +15 -6
- data/lib/rubocop/cop/lint/else_layout.rb +27 -31
- data/lib/rubocop/cop/lint/empty_ensure.rb +44 -3
- data/lib/rubocop/cop/lint/empty_expression.rb +42 -0
- data/lib/rubocop/cop/lint/empty_interpolation.rb +16 -3
- data/lib/rubocop/cop/lint/empty_when.rb +38 -0
- data/lib/rubocop/cop/lint/end_alignment.rb +57 -39
- data/lib/rubocop/cop/lint/end_in_method.rb +24 -2
- data/lib/rubocop/cop/lint/ensure_return.rb +23 -3
- data/lib/rubocop/cop/lint/float_out_of_range.rb +10 -6
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +67 -46
- data/lib/rubocop/cop/lint/handle_exceptions.rb +41 -4
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +9 -5
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +42 -29
- data/lib/rubocop/cop/lint/inherit_exception.rb +34 -23
- data/lib/rubocop/cop/lint/interpolation_check.rb +37 -0
- data/lib/rubocop/cop/lint/{literal_in_condition.rb → literal_as_condition.rb} +51 -40
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +13 -8
- data/lib/rubocop/cop/lint/loop.rb +37 -2
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +81 -0
- data/lib/rubocop/cop/lint/multiple_compare.rb +48 -0
- data/lib/rubocop/cop/lint/nested_method_definition.rb +54 -12
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +58 -0
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +7 -3
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +32 -23
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +22 -14
- data/lib/rubocop/cop/lint/percent_string_array.rb +42 -27
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +28 -19
- data/lib/rubocop/cop/lint/rand_one.rb +17 -8
- data/lib/rubocop/cop/lint/redundant_with_index.rb +80 -0
- data/lib/rubocop/cop/lint/redundant_with_object.rb +81 -0
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +29 -0
- data/lib/rubocop/cop/lint/require_parentheses.rb +24 -30
- data/lib/rubocop/cop/lint/rescue_exception.rb +21 -2
- data/lib/rubocop/cop/lint/rescue_type.rb +90 -0
- data/lib/rubocop/cop/lint/return_in_void_context.rb +74 -0
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +70 -0
- data/lib/rubocop/cop/lint/script_permission.rb +49 -0
- data/lib/rubocop/cop/lint/shadowed_argument.rb +146 -0
- data/lib/rubocop/cop/lint/shadowed_exception.rb +78 -57
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +25 -2
- data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +18 -12
- data/lib/rubocop/cop/lint/syntax.rb +23 -21
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +26 -4
- data/lib/rubocop/cop/lint/unified_integer.rb +43 -0
- data/lib/rubocop/cop/lint/unneeded_disable.rb +117 -56
- data/lib/rubocop/cop/lint/unneeded_require_statement.rb +51 -0
- data/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +167 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +72 -8
- data/lib/rubocop/cop/lint/unused_block_argument.rb +87 -27
- data/lib/rubocop/cop/lint/unused_method_argument.rb +18 -2
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +75 -0
- data/lib/rubocop/cop/lint/uri_regexp.rb +73 -0
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +40 -18
- data/lib/rubocop/cop/lint/useless_assignment.rb +45 -14
- data/lib/rubocop/cop/lint/useless_comparison.rb +8 -10
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +16 -2
- data/lib/rubocop/cop/lint/useless_setter_call.rb +57 -43
- data/lib/rubocop/cop/lint/void.rb +83 -23
- data/lib/rubocop/cop/message_annotator.rb +118 -0
- data/lib/rubocop/cop/metrics/abc_size.rb +3 -4
- data/lib/rubocop/cop/metrics/block_length.rb +32 -0
- data/lib/rubocop/cop/metrics/block_nesting.rb +21 -10
- data/lib/rubocop/cop/metrics/class_length.rb +3 -2
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +4 -4
- data/lib/rubocop/cop/metrics/line_length.rb +67 -14
- data/lib/rubocop/cop/metrics/method_length.rb +10 -10
- data/lib/rubocop/cop/metrics/module_length.rb +3 -2
- data/lib/rubocop/cop/metrics/parameter_lists.rb +15 -6
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +5 -6
- data/lib/rubocop/cop/mixin/alignment.rb +70 -0
- data/lib/rubocop/cop/mixin/annotation_comment.rb +0 -1
- data/lib/rubocop/cop/mixin/array_hash_indentation.rb +26 -22
- data/lib/rubocop/cop/mixin/array_min_size.rb +59 -0
- data/lib/rubocop/cop/mixin/array_syntax.rb +4 -12
- data/lib/rubocop/cop/mixin/check_assignment.rb +6 -7
- data/lib/rubocop/cop/mixin/classish_length.rb +0 -1
- data/lib/rubocop/cop/mixin/code_length.rb +4 -3
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +21 -16
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +48 -0
- data/lib/rubocop/cop/mixin/configurable_max.rb +5 -4
- data/lib/rubocop/cop/mixin/configurable_naming.rb +5 -35
- data/lib/rubocop/cop/mixin/configurable_numbering.rb +17 -0
- data/lib/rubocop/cop/mixin/def_node.rb +29 -0
- data/lib/rubocop/cop/mixin/documentation_comment.rb +46 -0
- data/lib/rubocop/cop/mixin/duplication.rb +46 -0
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +119 -27
- data/lib/rubocop/cop/mixin/empty_parameter.rb +23 -0
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +11 -27
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +30 -0
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +15 -11
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +15 -13
- data/lib/rubocop/cop/mixin/hash_alignment.rb +116 -0
- data/lib/rubocop/cop/mixin/heredoc.rb +28 -0
- data/lib/rubocop/cop/mixin/ignored_pattern.rb +29 -0
- data/lib/rubocop/cop/mixin/integer_node.rb +2 -1
- data/lib/rubocop/cop/mixin/match_range.rb +4 -6
- data/lib/rubocop/cop/mixin/method_complexity.rb +33 -8
- data/lib/rubocop/cop/mixin/method_preference.rb +2 -1
- data/lib/rubocop/cop/mixin/min_body_length.rb +2 -1
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +100 -66
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +49 -51
- data/lib/rubocop/cop/mixin/negative_conditional.rb +18 -13
- data/lib/rubocop/cop/mixin/on_normal_if_unless.rb +1 -25
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +48 -0
- data/lib/rubocop/cop/mixin/parentheses.rb +2 -8
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +4 -2
- data/lib/rubocop/cop/mixin/percent_array.rb +52 -0
- data/lib/rubocop/cop/mixin/percent_literal.rb +69 -6
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +16 -5
- data/lib/rubocop/cop/mixin/rescue_node.rb +23 -0
- data/lib/rubocop/cop/mixin/safe_assignment.rb +3 -1
- data/lib/rubocop/cop/mixin/safe_mode.rb +22 -0
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +8 -10
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +10 -14
- data/lib/rubocop/cop/mixin/statement_modifier.rb +29 -32
- data/lib/rubocop/cop/mixin/string_help.rb +3 -2
- data/lib/rubocop/cop/mixin/string_literals_help.rb +3 -15
- data/lib/rubocop/cop/mixin/surrounding_space.rb +78 -9
- data/lib/rubocop/cop/mixin/target_rails_version.rb +16 -0
- data/lib/rubocop/cop/mixin/target_ruby_version.rb +16 -0
- data/lib/rubocop/cop/mixin/too_many_lines.rb +39 -0
- data/lib/rubocop/cop/mixin/trailing_comma.rb +37 -38
- data/lib/rubocop/cop/mixin/unused_argument.rb +6 -16
- data/lib/rubocop/cop/naming/accessor_method_name.rb +55 -0
- data/lib/rubocop/cop/{style → naming}/ascii_identifiers.rb +36 -5
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +42 -0
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +33 -0
- data/lib/rubocop/cop/naming/constant_name.rb +58 -0
- data/lib/rubocop/cop/{style → naming}/file_name.rb +72 -29
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +62 -0
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +59 -0
- data/lib/rubocop/cop/naming/method_name.rb +40 -0
- data/lib/rubocop/cop/naming/predicate_name.rb +101 -0
- data/lib/rubocop/cop/naming/variable_name.rb +50 -0
- data/lib/rubocop/cop/naming/variable_number.rb +61 -0
- data/lib/rubocop/cop/offense.rb +9 -5
- data/lib/rubocop/cop/performance/caller.rb +69 -0
- data/lib/rubocop/cop/performance/case_when_splat.rb +65 -89
- data/lib/rubocop/cop/performance/casecmp.rb +37 -25
- data/lib/rubocop/cop/performance/compare_with_block.rb +117 -0
- data/lib/rubocop/cop/performance/count.rb +33 -43
- data/lib/rubocop/cop/performance/detect.rb +30 -31
- data/lib/rubocop/cop/performance/double_start_end_with.rb +55 -26
- data/lib/rubocop/cop/performance/end_with.rb +9 -9
- data/lib/rubocop/cop/performance/fixed_size.rb +21 -17
- data/lib/rubocop/cop/performance/flat_map.rb +30 -33
- data/lib/rubocop/cop/performance/hash_each_methods.rb +129 -0
- data/lib/rubocop/cop/performance/lstrip_rstrip.rb +14 -14
- data/lib/rubocop/cop/performance/range_include.rb +5 -4
- data/lib/rubocop/cop/performance/redundant_block_call.rb +28 -29
- data/lib/rubocop/cop/performance/redundant_match.rb +19 -15
- data/lib/rubocop/cop/performance/redundant_merge.rb +100 -52
- data/lib/rubocop/cop/performance/redundant_sort_by.rb +17 -14
- data/lib/rubocop/cop/performance/regexp_match.rb +224 -0
- data/lib/rubocop/cop/performance/reverse_each.rb +3 -6
- data/lib/rubocop/cop/performance/sample.rb +84 -83
- data/lib/rubocop/cop/performance/size.rb +22 -15
- data/lib/rubocop/cop/performance/start_with.rb +9 -9
- data/lib/rubocop/cop/performance/string_replacement.rb +35 -70
- data/lib/rubocop/cop/performance/times_map.rb +33 -24
- data/lib/rubocop/cop/performance/unfreeze_string.rb +50 -0
- data/lib/rubocop/cop/performance/uri_default_parser.rb +47 -0
- data/lib/rubocop/cop/rails/action_filter.rb +67 -47
- data/lib/rubocop/cop/rails/active_support_aliases.rb +68 -0
- data/lib/rubocop/cop/rails/application_job.rb +40 -0
- data/lib/rubocop/cop/rails/application_record.rb +40 -0
- data/lib/rubocop/cop/rails/blank.rb +142 -0
- data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +82 -0
- data/lib/rubocop/cop/rails/date.rb +47 -42
- data/lib/rubocop/cop/rails/delegate.rb +55 -33
- data/lib/rubocop/cop/rails/delegate_allow_blank.rb +51 -0
- data/lib/rubocop/cop/rails/dynamic_find_by.rb +82 -0
- data/lib/rubocop/cop/rails/enum_uniqueness.rb +45 -0
- data/lib/rubocop/cop/rails/environment_comparison.rb +66 -0
- data/lib/rubocop/cop/rails/exit.rb +17 -11
- data/lib/rubocop/cop/rails/file_path.rb +72 -0
- data/lib/rubocop/cop/rails/find_by.rb +14 -20
- data/lib/rubocop/cop/rails/find_each.rb +8 -21
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +9 -2
- data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +84 -0
- data/lib/rubocop/cop/rails/http_positional_arguments.rb +102 -0
- data/lib/rubocop/cop/rails/inverse_of.rb +218 -0
- data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +112 -0
- data/lib/rubocop/cop/rails/not_null_column.rb +67 -0
- data/lib/rubocop/cop/rails/output.rb +15 -13
- data/lib/rubocop/cop/rails/output_safety.rb +65 -17
- data/lib/rubocop/cop/rails/pluralization_grammar.rb +30 -29
- data/lib/rubocop/cop/rails/presence.rb +118 -0
- data/lib/rubocop/cop/rails/present.rb +143 -0
- data/lib/rubocop/cop/rails/read_write_attribute.rb +20 -26
- data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +133 -0
- data/lib/rubocop/cop/rails/relative_date_constant.rb +88 -0
- data/lib/rubocop/cop/rails/request_referer.rb +28 -13
- data/lib/rubocop/cop/rails/reversible_migration.rb +281 -0
- data/lib/rubocop/cop/rails/safe_navigation.rb +90 -0
- data/lib/rubocop/cop/rails/save_bang.rb +104 -19
- data/lib/rubocop/cop/rails/scope_args.rb +5 -10
- data/lib/rubocop/cop/rails/skips_model_validations.rb +70 -0
- data/lib/rubocop/cop/rails/time_zone.rb +34 -21
- data/lib/rubocop/cop/rails/uniq_before_pluck.rb +17 -14
- data/lib/rubocop/cop/rails/unknown_env.rb +63 -0
- data/lib/rubocop/cop/rails/validation.rb +16 -20
- data/lib/rubocop/cop/registry.rb +172 -0
- data/lib/rubocop/cop/security/eval.rb +30 -0
- data/lib/rubocop/cop/security/json_load.rb +46 -0
- data/lib/rubocop/cop/security/marshal_load.rb +39 -0
- data/lib/rubocop/cop/security/yaml_load.rb +37 -0
- data/lib/rubocop/cop/severity.rb +1 -2
- data/lib/rubocop/cop/style/alias.rb +54 -33
- data/lib/rubocop/cop/style/and_or.rb +77 -63
- data/lib/rubocop/cop/style/array_join.rb +13 -9
- data/lib/rubocop/cop/style/ascii_comments.rb +25 -7
- data/lib/rubocop/cop/style/attr.rb +24 -11
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +21 -16
- data/lib/rubocop/cop/style/bare_percent_literals.rb +31 -11
- data/lib/rubocop/cop/style/begin_block.rb +1 -2
- data/lib/rubocop/cop/style/block_comments.rb +20 -11
- data/lib/rubocop/cop/style/block_delimiters.rb +122 -51
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +142 -54
- data/lib/rubocop/cop/style/case_equality.rb +15 -4
- data/lib/rubocop/cop/style/character_literal.rb +12 -5
- data/lib/rubocop/cop/style/class_and_module_children.rb +85 -6
- data/lib/rubocop/cop/style/class_check.rb +35 -19
- data/lib/rubocop/cop/style/class_methods.rb +13 -14
- data/lib/rubocop/cop/style/class_vars.rb +5 -5
- data/lib/rubocop/cop/style/collection_methods.rb +12 -13
- data/lib/rubocop/cop/style/colon_method_call.rb +24 -16
- data/lib/rubocop/cop/style/colon_method_definition.rb +36 -0
- data/lib/rubocop/cop/style/command_literal.rb +98 -32
- data/lib/rubocop/cop/style/comment_annotation.rb +41 -15
- data/lib/rubocop/cop/style/commented_keyword.rb +84 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +161 -112
- data/lib/rubocop/cop/style/copyright.rb +32 -34
- data/lib/rubocop/cop/style/date_time.rb +44 -0
- data/lib/rubocop/cop/style/def_with_parentheses.rb +32 -9
- data/lib/rubocop/cop/style/dir.rb +48 -0
- data/lib/rubocop/cop/style/documentation.rb +44 -58
- data/lib/rubocop/cop/style/documentation_method.rb +76 -0
- data/lib/rubocop/cop/style/double_negation.rb +3 -3
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +14 -13
- data/lib/rubocop/cop/style/each_with_object.rb +28 -25
- data/lib/rubocop/cop/style/empty_block_parameter.rb +47 -0
- data/lib/rubocop/cop/style/empty_case_condition.rb +18 -30
- data/lib/rubocop/cop/style/empty_else.rb +82 -51
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +43 -0
- data/lib/rubocop/cop/style/empty_literal.rb +76 -48
- data/lib/rubocop/cop/style/empty_method.rb +112 -0
- data/lib/rubocop/cop/style/encoding.rb +10 -40
- data/lib/rubocop/cop/style/end_block.rb +1 -2
- data/lib/rubocop/cop/style/eval_with_location.rb +146 -0
- data/lib/rubocop/cop/style/even_odd.rb +25 -44
- data/lib/rubocop/cop/style/flip_flop.rb +13 -3
- data/lib/rubocop/cop/style/for.rb +19 -15
- data/lib/rubocop/cop/style/format_string.rb +88 -42
- data/lib/rubocop/cop/style/format_string_token.rb +163 -0
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +90 -15
- data/lib/rubocop/cop/style/global_vars.rb +14 -5
- data/lib/rubocop/cop/style/guard_clause.rb +22 -62
- data/lib/rubocop/cop/style/hash_syntax.rb +109 -59
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +73 -32
- data/lib/rubocop/cop/style/if_inside_else.rb +16 -20
- data/lib/rubocop/cop/style/if_unless_modifier.rb +48 -39
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +6 -12
- data/lib/rubocop/cop/style/if_with_semicolon.rb +10 -2
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +7 -7
- data/lib/rubocop/cop/style/infinite_loop.rb +33 -32
- data/lib/rubocop/cop/style/inline_comment.rb +17 -5
- data/lib/rubocop/cop/style/inverse_methods.rb +149 -0
- data/lib/rubocop/cop/style/lambda.rb +66 -63
- data/lib/rubocop/cop/style/lambda_call.rb +50 -20
- data/lib/rubocop/cop/style/line_end_concatenation.rb +38 -17
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +90 -0
- data/lib/rubocop/cop/style/{method_call_parentheses.rb → method_call_without_args_parentheses.rb} +32 -25
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +9 -9
- data/lib/rubocop/cop/style/method_def_parentheses.rb +101 -29
- data/lib/rubocop/cop/style/method_missing.rb +14 -20
- data/lib/rubocop/cop/style/min_max.rb +68 -0
- data/lib/rubocop/cop/style/missing_else.rb +61 -21
- data/lib/rubocop/cop/style/mixin_grouping.rb +145 -0
- data/lib/rubocop/cop/style/mixin_usage.rb +82 -0
- data/lib/rubocop/cop/style/module_function.rb +44 -18
- data/lib/rubocop/cop/style/multiline_block_chain.rb +8 -15
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +67 -0
- data/lib/rubocop/cop/style/multiline_if_then.rb +21 -14
- data/lib/rubocop/cop/style/multiline_memoization.rb +93 -0
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +21 -9
- data/lib/rubocop/cop/style/multiple_comparison.rb +77 -0
- data/lib/rubocop/cop/style/mutable_constant.rb +17 -9
- data/lib/rubocop/cop/style/negated_if.rb +76 -25
- data/lib/rubocop/cop/style/negated_while.rb +4 -22
- data/lib/rubocop/cop/style/nested_modifier.rb +17 -47
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +32 -28
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +3 -6
- data/lib/rubocop/cop/style/next.rb +72 -53
- data/lib/rubocop/cop/style/nil_comparison.rb +10 -14
- data/lib/rubocop/cop/style/non_nil_check.rb +69 -62
- data/lib/rubocop/cop/style/not.rb +19 -13
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +16 -7
- data/lib/rubocop/cop/style/numeric_literals.rb +33 -12
- data/lib/rubocop/cop/style/numeric_predicate.rb +30 -32
- data/lib/rubocop/cop/style/one_line_conditional.rb +21 -17
- data/lib/rubocop/cop/style/option_hash.rb +11 -37
- data/lib/rubocop/cop/style/optional_arguments.rb +20 -9
- data/lib/rubocop/cop/style/or_assignment.rb +88 -0
- data/lib/rubocop/cop/style/parallel_assignment.rb +83 -64
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +37 -19
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +50 -15
- data/lib/rubocop/cop/style/percent_q_literals.rb +40 -17
- data/lib/rubocop/cop/style/perl_backrefs.rb +9 -3
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +48 -14
- data/lib/rubocop/cop/style/proc.rb +13 -10
- data/lib/rubocop/cop/style/raise_args.rb +46 -50
- data/lib/rubocop/cop/style/random_with_offset.rb +160 -0
- data/lib/rubocop/cop/style/redundant_begin.rb +16 -6
- data/lib/rubocop/cop/style/redundant_conditional.rb +96 -0
- data/lib/rubocop/cop/style/redundant_exception.rb +4 -5
- data/lib/rubocop/cop/style/redundant_freeze.rb +7 -10
- data/lib/rubocop/cop/style/redundant_parentheses.rb +70 -31
- data/lib/rubocop/cop/style/redundant_return.rb +61 -23
- data/lib/rubocop/cop/style/redundant_self.rb +62 -60
- data/lib/rubocop/cop/style/regexp_literal.rb +100 -34
- data/lib/rubocop/cop/style/rescue_modifier.rb +15 -17
- data/lib/rubocop/cop/style/rescue_standard_error.rb +122 -0
- data/lib/rubocop/cop/style/return_nil.rb +89 -0
- data/lib/rubocop/cop/style/safe_navigation.rb +197 -0
- data/lib/rubocop/cop/style/self_assignment.rb +20 -17
- data/lib/rubocop/cop/style/semicolon.rb +25 -17
- data/lib/rubocop/cop/style/send.rb +14 -4
- data/lib/rubocop/cop/style/signal_exception.rb +105 -7
- data/lib/rubocop/cop/style/single_line_block_params.rb +27 -21
- data/lib/rubocop/cop/style/single_line_methods.rb +45 -31
- data/lib/rubocop/cop/style/special_global_vars.rb +32 -28
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +24 -53
- data/lib/rubocop/cop/style/stderr_puts.rb +54 -0
- data/lib/rubocop/cop/style/string_hash_keys.rb +36 -0
- data/lib/rubocop/cop/style/string_literals.rb +31 -5
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +20 -2
- data/lib/rubocop/cop/style/string_methods.rb +22 -9
- data/lib/rubocop/cop/style/struct_inheritance.rb +5 -17
- data/lib/rubocop/cop/style/symbol_array.rb +39 -65
- data/lib/rubocop/cop/style/symbol_literal.rb +1 -2
- data/lib/rubocop/cop/style/symbol_proc.rb +35 -52
- data/lib/rubocop/cop/style/ternary_parentheses.rb +143 -42
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +101 -0
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +31 -20
- data/lib/rubocop/cop/style/trailing_comma_in_literal.rb +26 -8
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +95 -0
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +97 -37
- data/lib/rubocop/cop/style/trivial_accessors.rb +72 -66
- data/lib/rubocop/cop/style/unless_else.rb +19 -13
- data/lib/rubocop/cop/style/unneeded_capital_w.rb +24 -10
- data/lib/rubocop/cop/style/unneeded_interpolation.rb +22 -24
- data/lib/rubocop/cop/style/unneeded_percent_q.rb +28 -22
- data/lib/rubocop/cop/style/variable_interpolation.rb +23 -10
- data/lib/rubocop/cop/style/when_then.rb +18 -4
- data/lib/rubocop/cop/style/while_until_do.rb +34 -16
- data/lib/rubocop/cop/style/while_until_modifier.rb +32 -12
- data/lib/rubocop/cop/style/word_array.rb +45 -102
- data/lib/rubocop/cop/style/yoda_condition.rb +107 -0
- data/lib/rubocop/cop/style/zero_length_predicate.rb +55 -32
- data/lib/rubocop/cop/team.rb +33 -35
- data/lib/rubocop/cop/util.rb +120 -54
- data/lib/rubocop/cop/variable_force/assignment.rb +5 -9
- data/lib/rubocop/cop/variable_force/branch.rb +318 -0
- data/lib/rubocop/cop/variable_force/branchable.rb +21 -0
- data/lib/rubocop/cop/variable_force/reference.rb +1 -2
- data/lib/rubocop/cop/variable_force/scope.rb +37 -26
- data/lib/rubocop/cop/variable_force/variable.rb +12 -12
- data/lib/rubocop/cop/variable_force/variable_table.rb +3 -4
- data/lib/rubocop/cop/variable_force.rb +72 -39
- data/lib/rubocop/error.rb +0 -1
- data/lib/rubocop/formatter/base_formatter.rb +4 -9
- data/lib/rubocop/formatter/clang_style_formatter.rb +2 -3
- data/lib/rubocop/formatter/colorizable.rb +9 -10
- data/lib/rubocop/formatter/disabled_config_formatter.rb +48 -35
- data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -1
- data/lib/rubocop/formatter/emacs_style_formatter.rb +0 -1
- data/lib/rubocop/formatter/file_list_formatter.rb +0 -1
- data/lib/rubocop/formatter/formatter_set.rb +16 -13
- data/lib/rubocop/formatter/fuubar_style_formatter.rb +6 -1
- data/lib/rubocop/formatter/html_formatter.rb +5 -5
- data/lib/rubocop/formatter/json_formatter.rb +9 -4
- data/lib/rubocop/formatter/offense_count_formatter.rb +2 -1
- data/lib/rubocop/formatter/progress_formatter.rb +0 -1
- data/lib/rubocop/formatter/quiet_formatter.rb +13 -0
- data/lib/rubocop/formatter/simple_text_formatter.rb +7 -17
- data/lib/rubocop/formatter/tap_formatter.rb +71 -0
- data/lib/rubocop/formatter/text_util.rb +0 -1
- data/lib/rubocop/formatter/worst_offenders_formatter.rb +6 -5
- data/lib/rubocop/magic_comment.rb +210 -0
- data/lib/rubocop/name_similarity.rb +0 -1
- data/lib/rubocop/node_pattern.rb +181 -118
- data/lib/rubocop/options.rb +154 -88
- data/lib/rubocop/path_util.rb +38 -4
- data/lib/rubocop/platform.rb +11 -0
- data/lib/rubocop/processed_source.rb +23 -20
- data/lib/rubocop/rake_task.rb +16 -24
- data/lib/rubocop/remote_config.rb +40 -13
- data/lib/rubocop/result_cache.rb +33 -24
- data/lib/rubocop/rspec/cop_helper.rb +21 -7
- data/lib/rubocop/rspec/expect_offense.rb +165 -0
- data/lib/rubocop/rspec/host_environment_simulation_helper.rb +1 -2
- data/lib/rubocop/rspec/shared_contexts.rb +24 -9
- data/lib/rubocop/rspec/shared_examples.rb +10 -19
- data/lib/rubocop/rspec/support.rb +5 -5
- data/lib/rubocop/runner.rb +74 -39
- data/lib/rubocop/string_interpreter.rb +0 -1
- data/lib/rubocop/string_util.rb +11 -6
- data/lib/rubocop/target_finder.rb +70 -8
- data/lib/rubocop/token.rb +79 -2
- data/lib/rubocop/version.rb +2 -5
- data/lib/rubocop/warning.rb +0 -1
- data/lib/rubocop.rb +569 -398
- metadata +301 -112
- data/lib/rubocop/ast_node/builder.rb +0 -31
- data/lib/rubocop/ast_node/sexp.rb +0 -14
- data/lib/rubocop/ast_node.rb +0 -623
- data/lib/rubocop/cop/lint/eval.rb +0 -23
- data/lib/rubocop/cop/lint/invalid_character_literal.rb +0 -39
- data/lib/rubocop/cop/lint/useless_array_splat.rb +0 -56
- data/lib/rubocop/cop/mixin/access_modifier_node.rb +0 -42
- data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +0 -152
- data/lib/rubocop/cop/mixin/hash_node.rb +0 -15
- data/lib/rubocop/cop/mixin/if_node.rb +0 -37
- data/lib/rubocop/cop/mixin/on_method_def.rb +0 -31
- data/lib/rubocop/cop/mixin/space_inside.rb +0 -79
- data/lib/rubocop/cop/performance/hash_each.rb +0 -86
- data/lib/rubocop/cop/performance/push_splat.rb +0 -47
- data/lib/rubocop/cop/style/accessor_method_name.rb +0 -46
- data/lib/rubocop/cop/style/align_array.rb +0 -21
- data/lib/rubocop/cop/style/align_hash.rb +0 -256
- data/lib/rubocop/cop/style/case_indentation.rb +0 -92
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +0 -30
- data/lib/rubocop/cop/style/constant_name.rb +0 -30
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +0 -76
- data/lib/rubocop/cop/style/empty_lines_around_class_body.rb +0 -40
- data/lib/rubocop/cop/style/end_of_line.rb +0 -31
- data/lib/rubocop/cop/style/initial_indentation.rb +0 -38
- data/lib/rubocop/cop/style/leading_comment_space.rb +0 -33
- data/lib/rubocop/cop/style/method_name.rb +0 -29
- data/lib/rubocop/cop/style/multiline_method_call_indentation.rb +0 -176
- data/lib/rubocop/cop/style/op_method.rb +0 -44
- data/lib/rubocop/cop/style/predicate_name.rb +0 -68
- data/lib/rubocop/cop/style/space_after_comma.rb +0 -22
- data/lib/rubocop/cop/style/space_after_not.rb +0 -42
- data/lib/rubocop/cop/style/space_around_operators.rb +0 -132
- data/lib/rubocop/cop/style/space_before_block_braces.rb +0 -65
- data/lib/rubocop/cop/style/space_before_comma.rb +0 -17
- data/lib/rubocop/cop/style/space_before_semicolon.rb +0 -17
- data/lib/rubocop/cop/style/space_inside_block_braces.rb +0 -166
- data/lib/rubocop/cop/style/space_inside_brackets.rb +0 -21
- data/lib/rubocop/cop/style/space_inside_parens.rb +0 -17
- data/lib/rubocop/cop/style/space_inside_string_interpolation.rb +0 -52
- data/lib/rubocop/cop/style/variable_name.rb +0 -40
- data/lib/rubocop/cop/variable_force/locatable.rb +0 -197
data/lib/rubocop/options.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'optparse'
|
5
4
|
require 'shellwords'
|
6
5
|
|
7
6
|
module RuboCop
|
7
|
+
class IncorrectCopNameError < StandardError; end
|
8
|
+
|
8
9
|
# This class handles command line options.
|
9
10
|
class Options
|
10
|
-
EXITING_OPTIONS = [
|
11
|
+
EXITING_OPTIONS = %i[version verbose_version show_cops].freeze
|
11
12
|
DEFAULT_MAXIMUM_EXCLUSION_ITEMS = 15
|
12
13
|
|
13
14
|
def initialize
|
@@ -18,14 +19,19 @@ module RuboCop
|
|
18
19
|
def parse(command_line_args)
|
19
20
|
args = args_from_file.concat(args_from_env).concat(command_line_args)
|
20
21
|
define_options(args).parse!(args)
|
21
|
-
# The --no-color CLI option sets `color: false` so we don't want the
|
22
|
-
# `no_color` key, which is created automatically.
|
23
|
-
@options.delete(:no_color)
|
24
22
|
|
25
23
|
@validator.validate_compatibility
|
26
24
|
|
27
|
-
if @options[:stdin]
|
28
|
-
|
25
|
+
if @options[:stdin]
|
26
|
+
# The parser has put the file name given after --stdin into
|
27
|
+
# @options[:stdin]. The args array should be empty.
|
28
|
+
if args.any?
|
29
|
+
raise ArgumentError, '-s/--stdin requires exactly one path.'
|
30
|
+
end
|
31
|
+
# We want the STDIN contents in @options[:stdin] and the file name in
|
32
|
+
# args to simplify the rest of the processing.
|
33
|
+
args = [@options[:stdin]]
|
34
|
+
@options[:stdin] = $stdin.binmode.read
|
29
35
|
end
|
30
36
|
|
31
37
|
[@options, args]
|
@@ -34,7 +40,7 @@ module RuboCop
|
|
34
40
|
private
|
35
41
|
|
36
42
|
def args_from_file
|
37
|
-
if File.exist?('.rubocop')
|
43
|
+
if File.exist?('.rubocop') && !File.directory?('.rubocop')
|
38
44
|
IO.readlines('.rubocop').map(&:strip)
|
39
45
|
else
|
40
46
|
[]
|
@@ -59,6 +65,8 @@ module RuboCop
|
|
59
65
|
add_severity_option(opts)
|
60
66
|
add_flags_with_optional_args(opts)
|
61
67
|
add_boolean_flags(opts)
|
68
|
+
|
69
|
+
option(opts, '-s', '--stdin FILE')
|
62
70
|
end
|
63
71
|
end
|
64
72
|
|
@@ -91,6 +99,9 @@ module RuboCop
|
|
91
99
|
end
|
92
100
|
|
93
101
|
option(opts, '--force-exclusion')
|
102
|
+
option(opts, '--ignore-parent-exclusion')
|
103
|
+
|
104
|
+
option(opts, '--force-default-config')
|
94
105
|
|
95
106
|
option(opts, '--no-offense-counts') do
|
96
107
|
@options[:no_offense_counts] = true
|
@@ -127,11 +138,11 @@ module RuboCop
|
|
127
138
|
end
|
128
139
|
end
|
129
140
|
|
130
|
-
def add_boolean_flags(opts)
|
141
|
+
def add_boolean_flags(opts) # rubocop:disable Metrics/MethodLength
|
131
142
|
option(opts, '-F', '--fail-fast')
|
132
143
|
option(opts, '-C', '--cache FLAG')
|
133
144
|
option(opts, '-d', '--debug')
|
134
|
-
option(opts, '-D', '--display-cop-names')
|
145
|
+
option(opts, '-D', '--[no-]display-cop-names')
|
135
146
|
option(opts, '-E', '--extra-details')
|
136
147
|
option(opts, '-S', '--display-style-guide')
|
137
148
|
option(opts, '-R', '--rails')
|
@@ -141,11 +152,11 @@ module RuboCop
|
|
141
152
|
end
|
142
153
|
option(opts, '-a', '--auto-correct')
|
143
154
|
|
144
|
-
option(opts, '
|
155
|
+
option(opts, '--[no-]color')
|
145
156
|
|
146
157
|
option(opts, '-v', '--version')
|
147
158
|
option(opts, '-V', '--verbose-version')
|
148
|
-
option(opts, '-
|
159
|
+
option(opts, '-P', '--parallel')
|
149
160
|
end
|
150
161
|
|
151
162
|
def add_list_options(opts)
|
@@ -167,24 +178,47 @@ module RuboCop
|
|
167
178
|
# e.g. [..., '--auto-correct', ...] to :auto_correct.
|
168
179
|
def long_opt_symbol(args)
|
169
180
|
long_opt = args.find { |arg| arg.start_with?('--') }
|
170
|
-
long_opt[2..-1].sub(
|
181
|
+
long_opt[2..-1].sub('[no-]', '').sub(/ .*/, '')
|
182
|
+
.tr('-', '_').gsub(/[\[\]]/, '').to_sym
|
171
183
|
end
|
172
184
|
end
|
173
185
|
|
174
186
|
# Validates option arguments and the options' compatibility with each other.
|
175
187
|
class OptionsValidator
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
+
class << self
|
189
|
+
# Cop name validation must be done later than option parsing, so it's not
|
190
|
+
# called from within Options.
|
191
|
+
def validate_cop_list(names)
|
192
|
+
return unless names
|
193
|
+
|
194
|
+
cop_names = Cop::Cop.registry.names
|
195
|
+
departments = Cop::Cop.registry.departments.map(&:to_s)
|
196
|
+
|
197
|
+
names.each do |name|
|
198
|
+
next if cop_names.include?(name)
|
199
|
+
next if departments.include?(name)
|
200
|
+
next if %w[Syntax Lint/Syntax].include?(name)
|
201
|
+
|
202
|
+
raise IncorrectCopNameError, format_message_from(name, cop_names)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
private
|
207
|
+
|
208
|
+
def format_message_from(name, cop_names)
|
209
|
+
message = 'Unrecognized cop or department: %{name}.'
|
210
|
+
message_with_candidate = "#{message}\nDid you mean? %{candidate}"
|
211
|
+
corrections = cop_names.select do |cn|
|
212
|
+
score = StringUtil.similarity(cn, name)
|
213
|
+
score >= NameSimilarity::MINIMUM_SIMILARITY_TO_SUGGEST
|
214
|
+
end.sort
|
215
|
+
|
216
|
+
if corrections.empty?
|
217
|
+
format message, name: name
|
218
|
+
else
|
219
|
+
format message_with_candidate, name: name,
|
220
|
+
candidate: corrections.join(', ')
|
221
|
+
end
|
188
222
|
end
|
189
223
|
end
|
190
224
|
|
@@ -192,7 +226,7 @@ module RuboCop
|
|
192
226
|
@options = options
|
193
227
|
end
|
194
228
|
|
195
|
-
def validate_compatibility
|
229
|
+
def validate_compatibility # rubocop:disable Metrics/MethodLength
|
196
230
|
if only_includes_unneeded_disable?
|
197
231
|
raise ArgumentError, 'Lint/UnneededDisable can not be used with --only.'
|
198
232
|
end
|
@@ -206,23 +240,45 @@ module RuboCop
|
|
206
240
|
raise ArgumentError, '--no-offense-counts can only be used together ' \
|
207
241
|
'with --auto-gen-config.'
|
208
242
|
end
|
243
|
+
validate_parallel
|
244
|
+
|
209
245
|
return if incompatible_options.size <= 1
|
210
246
|
raise ArgumentError, 'Incompatible cli options: ' \
|
211
247
|
"#{incompatible_options.inspect}"
|
212
248
|
end
|
213
249
|
|
250
|
+
def validate_parallel
|
251
|
+
return unless @options.key?(:parallel)
|
252
|
+
|
253
|
+
if @options[:cache] == 'false'
|
254
|
+
raise ArgumentError, '-P/--parallel uses caching to speed up ' \
|
255
|
+
'execution, so combining with --cache false is ' \
|
256
|
+
'not allowed.'
|
257
|
+
end
|
258
|
+
|
259
|
+
combos = {
|
260
|
+
auto_gen_config: '-P/--parallel uses caching to speed up execution, ' \
|
261
|
+
'while --auto-gen-config needs a non-cached run, ' \
|
262
|
+
'so they cannot be combined.',
|
263
|
+
fail_fast: '-P/--parallel can not be combined with -F/--fail-fast.',
|
264
|
+
auto_correct: '-P/--parallel can not be combined with --auto-correct.'
|
265
|
+
}
|
266
|
+
|
267
|
+
combos.each { |key, msg| raise ArgumentError, msg if @options.key?(key) }
|
268
|
+
end
|
269
|
+
|
214
270
|
def only_includes_unneeded_disable?
|
215
271
|
@options.key?(:only) &&
|
216
|
-
(@options[:only] & %w
|
272
|
+
(@options[:only] & %w[Lint/UnneededDisable UnneededDisable]).any?
|
217
273
|
end
|
218
274
|
|
219
275
|
def except_syntax?
|
220
276
|
@options.key?(:except) &&
|
221
|
-
(@options[:except] & %w
|
277
|
+
(@options[:except] & %w[Lint/Syntax Syntax]).any?
|
222
278
|
end
|
223
279
|
|
224
280
|
def boolean_or_empty_cache?
|
225
|
-
!@options.key?(:cache) || %w
|
281
|
+
!@options.key?(:cache) || %w[true false].include?(@options[:cache])
|
226
282
|
end
|
227
283
|
|
228
284
|
def no_offense_counts_without_auto_gen_config?
|
@@ -253,65 +309,75 @@ module RuboCop
|
|
253
309
|
module OptionsHelp
|
254
310
|
MAX_EXCL = RuboCop::Options::DEFAULT_MAXIMUM_EXCLUSION_ITEMS.to_s
|
255
311
|
TEXT = {
|
256
|
-
only:
|
257
|
-
only_guide_cops:
|
258
|
-
|
259
|
-
except:
|
260
|
-
require:
|
261
|
-
config:
|
262
|
-
auto_gen_config:
|
263
|
-
|
264
|
-
no_offense_counts:
|
265
|
-
|
266
|
-
exclude_limit:
|
267
|
-
|
268
|
-
|
269
|
-
force_exclusion:
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
'
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
312
|
+
only: 'Run only the given cop(s).',
|
313
|
+
only_guide_cops: ['Run only cops for rules that link to a',
|
314
|
+
'style guide.'],
|
315
|
+
except: 'Disable the given cop(s).',
|
316
|
+
require: 'Require Ruby file.',
|
317
|
+
config: 'Specify configuration file.',
|
318
|
+
auto_gen_config: ['Generate a configuration file acting as a',
|
319
|
+
'TODO list.'],
|
320
|
+
no_offense_counts: ['Do not include offense counts in configuration',
|
321
|
+
'file generated by --auto-gen-config.'],
|
322
|
+
exclude_limit: ['Used together with --auto-gen-config to',
|
323
|
+
'set the limit for how many Exclude',
|
324
|
+
"properties to generate. Default is #{MAX_EXCL}."],
|
325
|
+
force_exclusion: ['Force excluding files specified in the',
|
326
|
+
'configuration `Exclude` even if they are',
|
327
|
+
'explicitly passed as arguments.'],
|
328
|
+
ignore_parent_exclusion:
|
329
|
+
['Prevent from inheriting AllCops/Exclude from',
|
330
|
+
'parent folders.'],
|
331
|
+
force_default_config: ['Use default configuration even if configuration',
|
332
|
+
'files are present in the directory tree.'],
|
333
|
+
format: ['Choose an output formatter. This option',
|
334
|
+
'can be specified multiple times to enable',
|
335
|
+
'multiple formatters at the same time.',
|
336
|
+
' [p]rogress (default)',
|
337
|
+
' [s]imple',
|
338
|
+
' [c]lang',
|
339
|
+
' [d]isabled cops via inline comments',
|
340
|
+
' [fu]ubar',
|
341
|
+
' [e]macs',
|
342
|
+
' [j]son',
|
343
|
+
' [h]tml',
|
344
|
+
' [fi]les',
|
345
|
+
' [o]ffenses',
|
346
|
+
' [w]orst',
|
347
|
+
' [t]ap',
|
348
|
+
' [q]uiet',
|
349
|
+
' custom formatter class name'],
|
350
|
+
out: ['Write output to a file instead of STDOUT.',
|
351
|
+
'This option applies to the previously',
|
352
|
+
'specified --format, or the default format',
|
353
|
+
'if no format is specified.'],
|
354
|
+
fail_level: ['Minimum severity (A/R/C/W/E/F) for exit',
|
355
|
+
'with error code.'],
|
356
|
+
show_cops: ['Shows the given cops, or all cops by',
|
357
|
+
'default, and their configurations for the',
|
358
|
+
'current directory.'],
|
359
|
+
fail_fast: ['Inspect files in order of modification',
|
360
|
+
'time and stop after the first file',
|
361
|
+
'containing offenses.'],
|
362
|
+
cache: ["Use result caching (FLAG=true) or don't",
|
363
|
+
'(FLAG=false), default determined by',
|
364
|
+
'configuration parameter AllCops: UseCache.'],
|
365
|
+
debug: 'Display debug info.',
|
366
|
+
display_cop_names: ['Display cop names in offense messages.',
|
367
|
+
'Default is true.'],
|
368
|
+
display_style_guide: 'Display style guide URLs in offense messages.',
|
369
|
+
extra_details: 'Display extra details in offense messages.',
|
370
|
+
rails: 'Run extra Rails cops.',
|
371
|
+
lint: 'Run only lint cops.',
|
372
|
+
list_target_files: 'List all files RuboCop will inspect.',
|
373
|
+
auto_correct: 'Auto-correct offenses.',
|
374
|
+
color: 'Force color output on or off.',
|
375
|
+
version: 'Display version.',
|
376
|
+
verbose_version: 'Display verbose version.',
|
377
|
+
parallel: ['Use available CPUs to execute inspection in',
|
378
|
+
'parallel.'],
|
379
|
+
stdin: ['Pipe source from STDIN, using FILE in offense',
|
380
|
+
'reports. This is useful for editor integration.']
|
315
381
|
}.freeze
|
316
382
|
end
|
317
383
|
end
|
data/lib/rubocop/path_util.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
module RuboCop
|
@@ -6,21 +5,48 @@ module RuboCop
|
|
6
5
|
module PathUtil
|
7
6
|
module_function
|
8
7
|
|
9
|
-
def relative_path(path, base_dir =
|
8
|
+
def relative_path(path, base_dir = PathUtil.pwd)
|
10
9
|
# Optimization for the common case where path begins with the base
|
11
10
|
# dir. Just cut off the first part.
|
12
|
-
|
11
|
+
if path.start_with?(base_dir)
|
12
|
+
base_dir_length = base_dir.length
|
13
|
+
result_length = path.length - base_dir_length - 1
|
14
|
+
return path[base_dir_length + 1, result_length]
|
15
|
+
end
|
13
16
|
|
14
17
|
path_name = Pathname.new(File.expand_path(path))
|
15
18
|
path_name.relative_path_from(Pathname.new(base_dir)).to_s
|
16
19
|
end
|
17
20
|
|
21
|
+
def smart_path(path)
|
22
|
+
# Ideally, we calculate this relative to the project root.
|
23
|
+
base_dir = PathUtil.pwd
|
24
|
+
|
25
|
+
if path.start_with? base_dir
|
26
|
+
relative_path(path, base_dir)
|
27
|
+
else
|
28
|
+
path
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
18
32
|
def match_path?(pattern, path)
|
19
33
|
case pattern
|
20
34
|
when String
|
21
35
|
File.fnmatch?(pattern, path, File::FNM_PATHNAME)
|
22
36
|
when Regexp
|
23
|
-
|
37
|
+
begin
|
38
|
+
path =~ pattern
|
39
|
+
rescue ArgumentError => e
|
40
|
+
return false if e.message.start_with?('invalid byte sequence')
|
41
|
+
raise e
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def find_file_upwards(filename, start_dir = PathUtil.pwd)
|
47
|
+
Pathname(File.expand_path(start_dir)).ascend do |dir|
|
48
|
+
file = File.join(dir, filename)
|
49
|
+
return file if File.exist?(file)
|
24
50
|
end
|
25
51
|
end
|
26
52
|
|
@@ -28,5 +54,13 @@ module RuboCop
|
|
28
54
|
def absolute?(path)
|
29
55
|
path =~ %r{\A([A-Z]:)?/}
|
30
56
|
end
|
57
|
+
|
58
|
+
def self.pwd
|
59
|
+
@pwd ||= Dir.pwd
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.reset_pwd
|
63
|
+
@pwd = nil
|
64
|
+
end
|
31
65
|
end
|
32
66
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'digest/md5'
|
@@ -14,16 +13,16 @@ module RuboCop
|
|
14
13
|
:parser_error, :raw_source, :ruby_version
|
15
14
|
|
16
15
|
def self.from_file(path, ruby_version)
|
17
|
-
file = File.read(path)
|
16
|
+
file = File.read(path, mode: 'rb')
|
18
17
|
new(file, ruby_version, path)
|
19
18
|
rescue Errno::ENOENT
|
20
19
|
raise RuboCop::Error, "No such file or directory: #{path}"
|
21
20
|
end
|
22
21
|
|
23
22
|
def initialize(source, ruby_version, path = nil)
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
23
|
+
# Defaults source encoding to UTF-8, regardless of the encoding it has
|
24
|
+
# been read with, which could be non-utf8 depending on the default
|
25
|
+
# external encoding.
|
27
26
|
unless source.encoding == Encoding::UTF_8
|
28
27
|
source.force_encoding(Encoding::UTF_8)
|
29
28
|
end
|
@@ -32,6 +31,7 @@ module RuboCop
|
|
32
31
|
@path = path
|
33
32
|
@diagnostics = []
|
34
33
|
@ruby_version = ruby_version
|
34
|
+
@parser_error = nil
|
35
35
|
|
36
36
|
parse(source, ruby_version)
|
37
37
|
end
|
@@ -54,7 +54,7 @@ module RuboCop
|
|
54
54
|
def lines
|
55
55
|
@lines ||= begin
|
56
56
|
all_lines = @buffer.source_lines
|
57
|
-
last_token_line = tokens.any? ? tokens.last.
|
57
|
+
last_token_line = tokens.any? ? tokens.last.line : all_lines.size
|
58
58
|
result = []
|
59
59
|
all_lines.each_with_index do |line, ix|
|
60
60
|
break if ix >= last_token_line && line == '__END__'
|
@@ -70,7 +70,7 @@ module RuboCop
|
|
70
70
|
|
71
71
|
def valid_syntax?
|
72
72
|
return false if @parser_error
|
73
|
-
@diagnostics.none? { |d| [
|
73
|
+
@diagnostics.none? { |d| %i[error fatal].include?(d.level) }
|
74
74
|
end
|
75
75
|
|
76
76
|
# Raw source checksum for tracking infinite loops.
|
@@ -91,26 +91,25 @@ module RuboCop
|
|
91
91
|
return
|
92
92
|
end
|
93
93
|
|
94
|
-
|
94
|
+
@ast, @comments, @tokens = tokenize(create_parser(ruby_version))
|
95
|
+
end
|
95
96
|
|
97
|
+
def tokenize(parser)
|
96
98
|
begin
|
97
|
-
|
98
|
-
|
99
|
+
ast, comments, tokens = parser.tokenize(@buffer)
|
100
|
+
ast.complete! if ast
|
99
101
|
rescue Parser::SyntaxError # rubocop:disable Lint/HandleExceptions
|
100
102
|
# All errors are in diagnostics. No need to handle exception.
|
101
103
|
end
|
102
104
|
|
103
|
-
|
105
|
+
tokens = tokens.map { |t| Token.from_parser_token(t) } if tokens
|
106
|
+
|
107
|
+
[ast, comments, tokens]
|
104
108
|
end
|
105
109
|
|
106
|
-
|
110
|
+
# rubocop:disable Metrics/MethodLength
|
111
|
+
def parser_class(ruby_version)
|
107
112
|
case ruby_version
|
108
|
-
when 1.9
|
109
|
-
require 'parser/ruby19'
|
110
|
-
Parser::Ruby19
|
111
|
-
when 2.0
|
112
|
-
require 'parser/ruby20'
|
113
|
-
Parser::Ruby20
|
114
113
|
when 2.1
|
115
114
|
require 'parser/ruby21'
|
116
115
|
Parser::Ruby21
|
@@ -123,16 +122,20 @@ module RuboCop
|
|
123
122
|
when 2.4
|
124
123
|
require 'parser/ruby24'
|
125
124
|
Parser::Ruby24
|
125
|
+
when 2.5
|
126
|
+
require 'parser/ruby25'
|
127
|
+
Parser::Ruby25
|
126
128
|
else
|
127
129
|
raise ArgumentError, "Unknown Ruby version: #{ruby_version.inspect}"
|
128
130
|
end
|
129
131
|
end
|
132
|
+
# rubocop:enable Metrics/MethodLength
|
130
133
|
|
131
134
|
def create_parser(ruby_version)
|
132
|
-
builder = RuboCop::
|
135
|
+
builder = RuboCop::AST::Builder.new
|
133
136
|
|
134
137
|
parser_class(ruby_version).new(builder).tap do |parser|
|
135
|
-
# On JRuby
|
138
|
+
# On JRuby there's a risk that we hang in tokenize() if we
|
136
139
|
# don't set the all errors as fatal flag. The problem is caused by a bug
|
137
140
|
# in Racc that is discussed in issue #93 of the whitequark/parser
|
138
141
|
# project on GitHub.
|
data/lib/rubocop/rake_task.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'rake'
|
@@ -18,25 +17,21 @@ module RuboCop
|
|
18
17
|
attr_accessor :requires
|
19
18
|
attr_accessor :options
|
20
19
|
|
21
|
-
def initialize(*args, &task_block)
|
22
|
-
setup_ivars(
|
20
|
+
def initialize(name = :rubocop, *args, &task_block)
|
21
|
+
setup_ivars(name)
|
23
22
|
|
24
23
|
desc 'Run RuboCop' unless ::Rake.application.last_description
|
25
24
|
|
26
25
|
task(name, *args) do |_, task_args|
|
27
|
-
RakeFileUtils.
|
26
|
+
RakeFileUtils.verbose(verbose) do
|
28
27
|
yield(*[self, task_args].slice(0, task_block.arity)) if block_given?
|
29
|
-
|
28
|
+
run_cli(verbose, full_options)
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
33
32
|
setup_subtasks(name, *args, &task_block)
|
34
33
|
end
|
35
34
|
|
36
|
-
def run_main_task(verbose)
|
37
|
-
run_cli(verbose, full_options)
|
38
|
-
end
|
39
|
-
|
40
35
|
private
|
41
36
|
|
42
37
|
def run_cli(verbose, options)
|
@@ -51,19 +46,14 @@ module RuboCop
|
|
51
46
|
end
|
52
47
|
|
53
48
|
def full_options
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
result.concat(patterns)
|
59
|
-
end
|
49
|
+
formatters.map { |f| ['--format', f] }.flatten
|
50
|
+
.concat(requires.map { |r| ['--require', r] }.flatten)
|
51
|
+
.concat(options.flatten)
|
52
|
+
.concat(patterns)
|
60
53
|
end
|
61
54
|
|
62
|
-
def setup_ivars(
|
63
|
-
|
64
|
-
require 'rubocop/options'
|
65
|
-
|
66
|
-
@name = args.shift || :rubocop
|
55
|
+
def setup_ivars(name)
|
56
|
+
@name = name
|
67
57
|
@verbose = true
|
68
58
|
@fail_on_error = true
|
69
59
|
@patterns = []
|
@@ -73,13 +63,15 @@ module RuboCop
|
|
73
63
|
end
|
74
64
|
|
75
65
|
def setup_subtasks(name, *args, &task_block)
|
76
|
-
namespace
|
66
|
+
namespace(name) do
|
77
67
|
desc 'Auto-correct RuboCop offenses'
|
78
68
|
|
79
69
|
task(:auto_correct, *args) do |_, task_args|
|
80
|
-
|
81
|
-
|
82
|
-
|
70
|
+
RakeFileUtils.verbose(verbose) do
|
71
|
+
yield(*[self, task_args].slice(0, task_block.arity)) if block_given?
|
72
|
+
options = full_options.unshift('--auto-correct')
|
73
|
+
run_cli(verbose, options)
|
74
|
+
end
|
83
75
|
end
|
84
76
|
end
|
85
77
|
end
|