rubocop 0.51.0 → 0.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/LICENSE.txt +1 -1
- data/README.md +53 -42
- data/assets/output.html.erb +1 -1
- data/bin/console +10 -0
- data/bin/setup +7 -0
- data/config/default.yml +3137 -552
- data/lib/rubocop/ast_aliases.rb +8 -0
- data/lib/rubocop/cached_data.rb +2 -2
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +140 -0
- data/lib/rubocop/cli/command/base.rb +33 -0
- data/lib/rubocop/cli/command/execute_runner.rb +76 -0
- data/lib/rubocop/cli/command/init_dotfile.rb +45 -0
- data/lib/rubocop/cli/command/show_cops.rb +76 -0
- data/lib/rubocop/cli/command/version.rb +17 -0
- data/lib/rubocop/cli/command.rb +21 -0
- data/lib/rubocop/cli/environment.rb +21 -0
- data/lib/rubocop/cli.rb +58 -131
- data/lib/rubocop/comment_config.rb +65 -14
- data/lib/rubocop/config.rb +106 -342
- data/lib/rubocop/config_loader.rb +122 -153
- data/lib/rubocop/config_loader_resolver.rb +198 -8
- data/lib/rubocop/config_obsoletion.rb +277 -0
- data/lib/rubocop/config_store.rb +12 -2
- data/lib/rubocop/config_validator.rb +223 -0
- data/lib/rubocop/cop/autocorrect_logic.rb +73 -4
- data/lib/rubocop/cop/badge.rb +6 -6
- data/lib/rubocop/cop/base.rb +399 -0
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +12 -10
- data/lib/rubocop/cop/bundler/gem_comment.rb +133 -0
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +21 -28
- data/lib/rubocop/cop/bundler/ordered_gems.rb +16 -5
- data/lib/rubocop/cop/commissioner.rb +68 -67
- data/lib/rubocop/cop/cop.rb +101 -208
- data/lib/rubocop/cop/corrector.rb +82 -98
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +142 -0
- data/lib/rubocop/cop/correctors/condition_corrector.rb +27 -0
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +53 -0
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +26 -0
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +73 -0
- data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +136 -0
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +61 -0
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +68 -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/percent_literal_corrector.rb +117 -0
- data/lib/rubocop/cop/correctors/punctuation_corrector.rb +29 -0
- data/lib/rubocop/cop/correctors/space_corrector.rb +46 -0
- data/lib/rubocop/cop/correctors/string_literal_corrector.rb +25 -0
- data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +43 -0
- data/lib/rubocop/cop/force.rb +1 -0
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +104 -0
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +16 -8
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +85 -0
- data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +55 -0
- data/lib/rubocop/cop/generator/configuration_injector.rb +66 -0
- data/lib/rubocop/cop/generator/require_file_injector.rb +78 -0
- data/lib/rubocop/cop/generator.rb +81 -99
- data/lib/rubocop/cop/ignored_node.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +59 -0
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +44 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +13 -16
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +11 -10
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +7 -18
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +6 -4
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +3 -3
- data/lib/rubocop/cop/internal_affairs.rb +2 -1
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +22 -33
- data/lib/rubocop/cop/layout/{align_parameters.rb → argument_alignment.rb} +26 -24
- data/lib/rubocop/cop/layout/array_alignment.rb +82 -0
- data/lib/rubocop/cop/layout/{indent_assignment.rb → assignment_indentation.rb} +18 -5
- data/lib/rubocop/cop/{lint → layout}/block_alignment.rb +38 -32
- data/lib/rubocop/cop/layout/block_end_newline.rb +16 -13
- data/lib/rubocop/cop/layout/case_indentation.rb +26 -29
- data/lib/rubocop/cop/layout/class_structure.rb +343 -0
- data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +126 -0
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +145 -30
- data/lib/rubocop/cop/layout/comment_indentation.rb +76 -8
- data/lib/rubocop/cop/{lint → layout}/condition_position.rb +15 -5
- data/lib/rubocop/cop/{lint → layout}/def_end_alignment.rb +10 -14
- data/lib/rubocop/cop/layout/dot_position.rb +34 -22
- data/lib/rubocop/cop/layout/else_alignment.rb +37 -20
- data/lib/rubocop/cop/layout/empty_comment.rb +151 -0
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +157 -0
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +6 -5
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +30 -25
- data/lib/rubocop/cop/layout/empty_lines.rb +20 -4
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +138 -33
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +99 -0
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +121 -0
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +8 -5
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +13 -11
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +60 -11
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +13 -4
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +8 -4
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +29 -11
- data/lib/rubocop/cop/{lint → layout}/end_alignment.rb +53 -21
- data/lib/rubocop/cop/layout/end_of_line.rb +48 -8
- data/lib/rubocop/cop/layout/extra_spacing.rb +66 -102
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +251 -0
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +171 -0
- data/lib/rubocop/cop/layout/first_array_element_line_break.rb +6 -2
- data/lib/rubocop/cop/layout/{indent_hash.rb → first_hash_element_indentation.rb} +83 -33
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +5 -1
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +8 -4
- data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +5 -1
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +61 -73
- data/lib/rubocop/cop/layout/hash_alignment.rb +365 -0
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +285 -0
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +173 -0
- data/lib/rubocop/cop/layout/indentation_consistency.rb +160 -8
- data/lib/rubocop/cop/layout/indentation_style.rb +117 -0
- data/lib/rubocop/cop/layout/indentation_width.rb +100 -45
- data/lib/rubocop/cop/layout/initial_indentation.rb +24 -8
- data/lib/rubocop/cop/layout/leading_comment_space.rb +67 -6
- data/lib/rubocop/cop/layout/leading_empty_lines.rb +53 -0
- data/lib/rubocop/cop/layout/line_length.rb +280 -0
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +61 -24
- data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +39 -0
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +21 -14
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +63 -28
- data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +54 -21
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +50 -0
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +52 -0
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +70 -33
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +20 -18
- data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +82 -33
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +34 -6
- data/lib/rubocop/cop/layout/parameter_alignment.rb +118 -0
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +125 -22
- data/lib/rubocop/cop/layout/space_after_colon.rb +6 -6
- data/lib/rubocop/cop/layout/space_after_comma.rb +7 -3
- data/lib/rubocop/cop/layout/space_after_method_name.rb +10 -7
- data/lib/rubocop/cop/layout/space_after_not.rb +4 -2
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +12 -1
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +74 -49
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +41 -17
- data/lib/rubocop/cop/layout/space_around_keyword.rb +36 -20
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +131 -0
- data/lib/rubocop/cop/layout/space_around_operators.rb +142 -46
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +54 -11
- data/lib/rubocop/cop/layout/space_before_comma.rb +16 -1
- data/lib/rubocop/cop/layout/space_before_comment.rb +6 -7
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +15 -4
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +5 -1
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +30 -39
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +229 -0
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +5 -5
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +110 -19
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +93 -46
- data/lib/rubocop/cop/layout/space_inside_parens.rb +92 -4
- data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +3 -3
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +17 -17
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +148 -0
- data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +37 -41
- data/lib/rubocop/cop/layout/{trailing_blank_lines.rb → trailing_empty_lines.rb} +54 -21
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +51 -2
- data/lib/rubocop/cop/legacy/corrections_proxy.rb +49 -0
- data/lib/rubocop/cop/legacy/corrector.rb +29 -0
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +16 -22
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +42 -1
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +15 -1
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +29 -26
- data/lib/rubocop/cop/lint/big_decimal_new.rb +44 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +14 -2
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +2 -2
- data/lib/rubocop/cop/lint/constant_resolution.rb +89 -0
- data/lib/rubocop/cop/lint/debugger.rb +8 -10
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +34 -13
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +137 -0
- data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +81 -0
- data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
- data/lib/rubocop/cop/lint/{duplicated_key.rb → duplicate_hash_key.rb} +2 -2
- data/lib/rubocop/cop/lint/duplicate_methods.rb +38 -25
- data/lib/rubocop/cop/lint/each_with_object_argument.rb +5 -2
- data/lib/rubocop/cop/lint/else_layout.rb +4 -3
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
- data/lib/rubocop/cop/lint/empty_expression.rb +1 -1
- data/lib/rubocop/cop/lint/empty_interpolation.rb +5 -5
- data/lib/rubocop/cop/lint/empty_when.rb +30 -7
- data/lib/rubocop/cop/lint/ensure_return.rb +23 -3
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +162 -0
- data/lib/rubocop/cop/lint/flip_flop.rb +32 -0
- data/lib/rubocop/cop/lint/float_out_of_range.rb +2 -2
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +62 -44
- data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +156 -0
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +21 -15
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +37 -59
- data/lib/rubocop/cop/lint/inherit_exception.rb +32 -16
- data/lib/rubocop/cop/lint/interpolation_check.rb +19 -3
- data/lib/rubocop/cop/lint/literal_as_condition.rb +16 -22
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +33 -11
- data/lib/rubocop/cop/lint/loop.rb +8 -6
- data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +84 -0
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +69 -0
- data/lib/rubocop/cop/lint/{multiple_compare.rb → multiple_comparison.rb} +4 -4
- data/lib/rubocop/cop/lint/nested_method_definition.rb +8 -7
- data/lib/rubocop/cop/lint/nested_percent_literal.rb +51 -0
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +2 -2
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +89 -0
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +14 -16
- data/lib/rubocop/cop/lint/number_conversion.rb +81 -0
- data/lib/rubocop/cop/lint/ordered_magic_comments.rb +86 -0
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +45 -15
- data/lib/rubocop/cop/lint/percent_string_array.rb +18 -22
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +18 -15
- data/lib/rubocop/cop/lint/raise_exception.rb +83 -0
- data/lib/rubocop/cop/lint/rand_one.rb +5 -5
- data/lib/rubocop/cop/lint/{unneeded_disable.rb → redundant_cop_disable_directive.rb} +87 -61
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +119 -0
- data/lib/rubocop/cop/lint/{unneeded_require_statement.rb → redundant_require_statement.rb} +10 -10
- data/lib/rubocop/cop/lint/{unneeded_splat_expansion.rb → redundant_splat_expansion.rb} +58 -27
- data/lib/rubocop/cop/lint/{string_conversion_in_interpolation.rb → redundant_string_coercion.rb} +18 -17
- data/lib/rubocop/cop/lint/redundant_with_index.rb +13 -8
- data/lib/rubocop/cop/lint/redundant_with_object.rb +9 -7
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +7 -1
- data/lib/rubocop/cop/lint/require_parentheses.rb +7 -2
- data/lib/rubocop/cop/lint/rescue_exception.rb +3 -2
- data/lib/rubocop/cop/lint/rescue_type.rb +10 -6
- data/lib/rubocop/cop/lint/return_in_void_context.rb +3 -3
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +23 -28
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +94 -0
- data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +46 -0
- data/lib/rubocop/cop/lint/script_permission.rb +33 -11
- data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +91 -0
- data/lib/rubocop/cop/lint/shadowed_argument.rb +182 -0
- data/lib/rubocop/cop/lint/shadowed_exception.rb +42 -23
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +2 -2
- data/lib/rubocop/cop/lint/struct_new_override.rb +58 -0
- data/lib/rubocop/cop/lint/suppressed_exception.rb +92 -0
- data/lib/rubocop/cop/lint/syntax.rb +12 -28
- data/lib/rubocop/cop/lint/to_json.rb +41 -0
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +26 -6
- data/lib/rubocop/cop/lint/unified_integer.rb +3 -3
- data/lib/rubocop/cop/lint/unreachable_code.rb +9 -7
- data/lib/rubocop/cop/lint/unused_block_argument.rb +26 -6
- data/lib/rubocop/cop/lint/unused_method_argument.rb +62 -12
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +17 -15
- data/lib/rubocop/cop/lint/uri_regexp.rb +7 -7
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +96 -37
- data/lib/rubocop/cop/lint/useless_assignment.rb +8 -10
- data/lib/rubocop/cop/lint/useless_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +9 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +14 -11
- data/lib/rubocop/cop/lint/void.rb +62 -30
- data/lib/rubocop/cop/message_annotator.rb +26 -13
- data/lib/rubocop/cop/metrics/abc_size.rb +4 -19
- data/lib/rubocop/cop/metrics/block_length.rb +42 -2
- data/lib/rubocop/cop/metrics/block_nesting.rb +2 -1
- data/lib/rubocop/cop/metrics/class_length.rb +37 -2
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +37 -4
- data/lib/rubocop/cop/metrics/method_length.rb +29 -2
- data/lib/rubocop/cop/metrics/module_length.rb +37 -2
- data/lib/rubocop/cop/metrics/parameter_lists.rb +9 -2
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +5 -5
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +84 -0
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +129 -0
- data/lib/rubocop/cop/metrics/utils/iterating_block.rb +61 -0
- data/lib/rubocop/cop/migration/department_name.rb +85 -0
- data/lib/rubocop/cop/mixin/alignment.rb +72 -0
- data/lib/rubocop/cop/mixin/allowed_methods.rb +19 -0
- data/lib/rubocop/cop/mixin/annotation_comment.rb +1 -0
- data/lib/rubocop/cop/mixin/array_min_size.rb +1 -3
- data/lib/rubocop/cop/mixin/array_syntax.rb +3 -1
- data/lib/rubocop/cop/mixin/auto_corrector.rb +12 -0
- data/lib/rubocop/cop/mixin/check_assignment.rb +13 -9
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +184 -0
- data/lib/rubocop/cop/mixin/code_length.rb +11 -1
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +8 -5
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +4 -7
- data/lib/rubocop/cop/mixin/configurable_max.rb +6 -2
- data/lib/rubocop/cop/mixin/configurable_naming.rb +1 -1
- data/lib/rubocop/cop/mixin/def_node.rb +8 -2
- data/lib/rubocop/cop/mixin/documentation_comment.rb +13 -7
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +34 -28
- data/lib/rubocop/cop/mixin/empty_parameter.rb +24 -0
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +19 -32
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +6 -10
- data/lib/rubocop/cop/mixin/first_element_line_break.rb +6 -10
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +32 -7
- data/lib/rubocop/cop/mixin/{hash_alignment.rb → hash_alignment_styles.rb} +38 -7
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +178 -0
- data/lib/rubocop/cop/mixin/heredoc.rb +22 -18
- data/lib/rubocop/cop/mixin/ignored_methods.rb +19 -0
- data/lib/rubocop/cop/mixin/ignored_pattern.rb +3 -1
- data/lib/rubocop/cop/mixin/integer_node.rb +3 -1
- data/lib/rubocop/cop/mixin/interpolation.rb +27 -0
- data/lib/rubocop/cop/mixin/line_length_help.rb +89 -0
- data/lib/rubocop/cop/mixin/match_range.rb +4 -0
- data/lib/rubocop/cop/mixin/method_complexity.rb +38 -8
- data/lib/rubocop/cop/mixin/method_preference.rb +2 -1
- data/lib/rubocop/cop/mixin/min_body_length.rb +3 -1
- data/lib/rubocop/cop/mixin/{array_hash_indentation.rb → multiline_element_indentation.rb} +5 -2
- data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +33 -0
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +50 -15
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +15 -50
- data/lib/rubocop/cop/mixin/negative_conditional.rb +5 -16
- data/lib/rubocop/cop/mixin/nil_methods.rb +23 -0
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +30 -32
- data/lib/rubocop/cop/mixin/parentheses.rb +3 -9
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +1 -1
- data/lib/rubocop/cop/mixin/percent_array.rb +2 -2
- data/lib/rubocop/cop/mixin/percent_literal.rb +3 -65
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +98 -6
- data/lib/rubocop/cop/mixin/preferred_delimiters.rb +53 -0
- data/lib/rubocop/cop/mixin/range_help.rb +117 -0
- data/lib/rubocop/cop/mixin/rational_literal.rb +18 -0
- data/lib/rubocop/cop/mixin/regexp_literal_help.rb +43 -0
- data/lib/rubocop/cop/mixin/rescue_node.rb +4 -3
- data/lib/rubocop/cop/mixin/safe_assignment.rb +4 -1
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +13 -14
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +16 -16
- data/lib/rubocop/cop/mixin/statement_modifier.rb +20 -33
- data/lib/rubocop/cop/mixin/string_help.rb +2 -0
- data/lib/rubocop/cop/mixin/string_literals_help.rb +4 -14
- data/lib/rubocop/cop/mixin/surrounding_space.rb +120 -9
- data/lib/rubocop/cop/mixin/target_ruby_version.rb +5 -1
- data/lib/rubocop/cop/mixin/too_many_lines.rb +5 -19
- data/lib/rubocop/cop/mixin/trailing_body.rb +26 -0
- data/lib/rubocop/cop/mixin/trailing_comma.rb +96 -45
- data/lib/rubocop/cop/mixin/uncommunicative_name.rb +113 -0
- data/lib/rubocop/cop/mixin/unused_argument.rb +3 -53
- data/lib/rubocop/cop/naming/accessor_method_name.rb +20 -10
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +64 -5
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +11 -9
- data/lib/rubocop/cop/naming/block_parameter_name.rb +49 -0
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +28 -14
- data/lib/rubocop/cop/naming/constant_name.rb +59 -6
- data/lib/rubocop/cop/naming/file_name.rb +72 -36
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +10 -16
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +8 -12
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +171 -0
- data/lib/rubocop/cop/naming/method_name.rb +58 -13
- data/lib/rubocop/cop/naming/method_parameter_name.rb +58 -0
- data/lib/rubocop/cop/naming/predicate_name.rb +22 -13
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +112 -0
- data/lib/rubocop/cop/naming/variable_name.rb +20 -3
- data/lib/rubocop/cop/naming/variable_number.rb +12 -29
- data/lib/rubocop/cop/offense.rb +55 -13
- data/lib/rubocop/cop/registry.rb +118 -14
- data/lib/rubocop/cop/security/eval.rb +3 -2
- data/lib/rubocop/cop/security/json_load.rb +7 -5
- data/lib/rubocop/cop/security/marshal_load.rb +5 -3
- data/lib/rubocop/cop/security/open.rb +71 -0
- data/lib/rubocop/cop/security/yaml_load.rb +2 -2
- data/lib/rubocop/cop/severity.rb +2 -3
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +132 -0
- data/lib/rubocop/cop/style/accessor_grouping.rb +136 -0
- data/lib/rubocop/cop/style/alias.rb +41 -37
- data/lib/rubocop/cop/style/and_or.rb +44 -38
- data/lib/rubocop/cop/style/array_join.rb +12 -3
- data/lib/rubocop/cop/style/ascii_comments.rb +29 -6
- data/lib/rubocop/cop/style/attr.rb +26 -8
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +14 -5
- data/lib/rubocop/cop/style/bare_percent_literals.rb +34 -13
- data/lib/rubocop/cop/style/begin_block.rb +7 -1
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +121 -0
- data/lib/rubocop/cop/style/block_comments.rb +27 -5
- data/lib/rubocop/cop/style/block_delimiters.rb +189 -30
- data/lib/rubocop/cop/style/case_equality.rb +37 -2
- data/lib/rubocop/cop/style/character_literal.rb +13 -3
- data/lib/rubocop/cop/style/class_and_module_children.rb +92 -10
- data/lib/rubocop/cop/style/class_check.rb +28 -9
- data/lib/rubocop/cop/style/class_methods.rb +20 -28
- data/lib/rubocop/cop/style/class_vars.rb +49 -3
- data/lib/rubocop/cop/style/collection_methods.rb +32 -2
- data/lib/rubocop/cop/style/colon_method_call.rb +19 -4
- data/lib/rubocop/cop/style/colon_method_definition.rb +37 -0
- data/lib/rubocop/cop/style/command_literal.rb +85 -28
- data/lib/rubocop/cop/style/comment_annotation.rb +51 -19
- data/lib/rubocop/cop/style/commented_keyword.rb +22 -30
- data/lib/rubocop/cop/style/conditional_assignment.rb +62 -92
- data/lib/rubocop/cop/style/constant_visibility.rb +77 -0
- data/lib/rubocop/cop/style/copyright.rb +39 -29
- data/lib/rubocop/cop/style/date_time.rb +44 -11
- data/lib/rubocop/cop/style/def_with_parentheses.rb +28 -3
- data/lib/rubocop/cop/style/dir.rb +7 -7
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
- data/lib/rubocop/cop/style/documentation.rb +72 -16
- data/lib/rubocop/cop/style/documentation_method.rb +51 -2
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +55 -0
- data/lib/rubocop/cop/style/double_negation.rb +43 -6
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +9 -9
- data/lib/rubocop/cop/style/each_with_object.rb +25 -11
- data/lib/rubocop/cop/style/empty_block_parameter.rb +48 -0
- data/lib/rubocop/cop/style/empty_case_condition.rb +30 -5
- data/lib/rubocop/cop/style/empty_else.rb +62 -26
- data/lib/rubocop/cop/style/empty_lambda_parameter.rb +45 -0
- data/lib/rubocop/cop/style/empty_literal.rb +32 -18
- data/lib/rubocop/cop/style/empty_method.rb +14 -21
- data/lib/rubocop/cop/style/encoding.rb +13 -5
- data/lib/rubocop/cop/style/end_block.rb +15 -1
- data/lib/rubocop/cop/style/eval_with_location.rb +148 -0
- data/lib/rubocop/cop/style/even_odd.rb +9 -7
- data/lib/rubocop/cop/style/expand_path_arguments.rb +194 -0
- data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
- data/lib/rubocop/cop/style/float_division.rb +94 -0
- data/lib/rubocop/cop/style/for.rb +54 -19
- data/lib/rubocop/cop/style/format_string.rb +63 -32
- data/lib/rubocop/cop/style/format_string_token.rb +45 -67
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +170 -32
- data/lib/rubocop/cop/style/global_vars.rb +14 -4
- data/lib/rubocop/cop/style/guard_clause.rb +66 -13
- data/lib/rubocop/cop/style/hash_each_methods.rb +89 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +69 -61
- data/lib/rubocop/cop/style/hash_transform_keys.rb +83 -0
- data/lib/rubocop/cop/style/hash_transform_values.rb +80 -0
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +17 -21
- data/lib/rubocop/cop/style/if_inside_else.rb +52 -10
- data/lib/rubocop/cop/style/if_unless_modifier.rb +132 -24
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +14 -2
- data/lib/rubocop/cop/style/if_with_semicolon.rb +28 -2
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +5 -5
- data/lib/rubocop/cop/style/infinite_loop.rb +51 -14
- data/lib/rubocop/cop/style/inline_comment.rb +5 -3
- data/lib/rubocop/cop/style/inverse_methods.rb +70 -22
- data/lib/rubocop/cop/style/ip_addresses.rb +76 -0
- data/lib/rubocop/cop/style/lambda.rb +25 -112
- data/lib/rubocop/cop/style/lambda_call.rb +13 -27
- data/lib/rubocop/cop/style/line_end_concatenation.rb +22 -16
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +169 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +52 -0
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +134 -34
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +12 -14
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +5 -2
- data/lib/rubocop/cop/style/method_def_parentheses.rb +102 -13
- data/lib/rubocop/cop/style/method_missing_super.rb +34 -0
- data/lib/rubocop/cop/style/min_max.rb +14 -14
- data/lib/rubocop/cop/style/missing_else.rb +79 -12
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +46 -0
- data/lib/rubocop/cop/style/mixin_grouping.rb +46 -33
- data/lib/rubocop/cop/style/mixin_usage.rb +32 -15
- data/lib/rubocop/cop/style/module_function.rb +102 -20
- data/lib/rubocop/cop/style/multiline_block_chain.rb +14 -3
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +7 -7
- data/lib/rubocop/cop/style/multiline_if_then.rb +16 -14
- data/lib/rubocop/cop/style/multiline_memoization.rb +12 -17
- data/lib/rubocop/cop/style/multiline_method_signature.rb +61 -0
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +31 -1
- data/lib/rubocop/cop/style/multiline_when_then.rb +74 -0
- data/lib/rubocop/cop/style/multiple_comparison.rb +19 -4
- data/lib/rubocop/cop/style/mutable_constant.rb +123 -15
- data/lib/rubocop/cop/style/negated_if.rb +26 -34
- data/lib/rubocop/cop/style/negated_unless.rb +89 -0
- data/lib/rubocop/cop/style/negated_while.rb +22 -6
- data/lib/rubocop/cop/style/nested_modifier.rb +28 -8
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +25 -24
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +39 -1
- data/lib/rubocop/cop/style/next.rb +64 -35
- data/lib/rubocop/cop/style/nil_comparison.rb +51 -11
- data/lib/rubocop/cop/style/non_nil_check.rb +42 -27
- data/lib/rubocop/cop/style/not.rb +21 -8
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +46 -23
- data/lib/rubocop/cop/style/numeric_literals.rb +31 -18
- data/lib/rubocop/cop/style/numeric_predicate.rb +26 -32
- data/lib/rubocop/cop/style/one_line_conditional.rb +36 -18
- data/lib/rubocop/cop/style/option_hash.rb +22 -14
- data/lib/rubocop/cop/style/optional_arguments.rb +3 -6
- data/lib/rubocop/cop/style/or_assignment.rb +17 -9
- data/lib/rubocop/cop/style/parallel_assignment.rb +16 -16
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +65 -5
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +33 -6
- data/lib/rubocop/cop/style/percent_q_literals.rb +29 -8
- data/lib/rubocop/cop/style/perl_backrefs.rb +10 -3
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +7 -10
- data/lib/rubocop/cop/style/proc.rb +12 -4
- data/lib/rubocop/cop/style/raise_args.rb +27 -21
- data/lib/rubocop/cop/style/random_with_offset.rb +152 -0
- data/lib/rubocop/cop/style/redundant_assignment.rb +117 -0
- data/lib/rubocop/cop/style/redundant_begin.rb +48 -5
- data/lib/rubocop/cop/style/{unneeded_capital_w.rb → redundant_capital_w.rb} +19 -9
- data/lib/rubocop/cop/style/redundant_condition.rb +124 -0
- data/lib/rubocop/cop/style/redundant_conditional.rb +17 -14
- data/lib/rubocop/cop/style/redundant_exception.rb +26 -17
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +122 -0
- data/lib/rubocop/cop/style/redundant_freeze.rb +24 -2
- data/lib/rubocop/cop/style/{unneeded_interpolation.rb → redundant_interpolation.rb} +20 -24
- data/lib/rubocop/cop/style/redundant_parentheses.rb +59 -27
- data/lib/rubocop/cop/style/{unneeded_percent_q.rb → redundant_percent_q.rb} +40 -24
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +90 -0
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +121 -0
- data/lib/rubocop/cop/style/redundant_return.rb +87 -51
- data/lib/rubocop/cop/style/redundant_self.rb +56 -41
- data/lib/rubocop/cop/style/redundant_sort.rb +165 -0
- data/lib/rubocop/cop/{performance → style}/redundant_sort_by.rb +9 -7
- data/lib/rubocop/cop/style/regexp_literal.rb +126 -20
- data/lib/rubocop/cop/style/rescue_modifier.rb +39 -3
- data/lib/rubocop/cop/style/rescue_standard_error.rb +124 -0
- data/lib/rubocop/cop/style/return_nil.rb +8 -12
- data/lib/rubocop/cop/style/safe_navigation.rb +123 -31
- data/lib/rubocop/cop/{performance → style}/sample.rb +17 -13
- data/lib/rubocop/cop/style/self_assignment.rb +14 -14
- data/lib/rubocop/cop/style/semicolon.rb +45 -14
- data/lib/rubocop/cop/style/send.rb +12 -2
- data/lib/rubocop/cop/style/signal_exception.rb +104 -3
- data/lib/rubocop/cop/style/single_line_block_params.rb +22 -2
- data/lib/rubocop/cop/style/single_line_methods.rb +41 -31
- data/lib/rubocop/cop/style/slicing_with_range.rb +39 -0
- data/lib/rubocop/cop/style/special_global_vars.rb +75 -24
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +13 -21
- data/lib/rubocop/cop/style/stderr_puts.rb +14 -5
- data/lib/rubocop/cop/style/string_hash_keys.rb +50 -0
- data/lib/rubocop/cop/style/string_literals.rb +29 -3
- data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +7 -9
- data/lib/rubocop/cop/style/string_methods.rb +19 -7
- data/lib/rubocop/cop/{performance/lstrip_rstrip.rb → style/strip.rb} +10 -7
- data/lib/rubocop/cop/style/struct_inheritance.rb +36 -8
- data/lib/rubocop/cop/style/symbol_array.rb +51 -17
- data/lib/rubocop/cop/style/symbol_literal.rb +3 -3
- data/lib/rubocop/cop/style/symbol_proc.rb +32 -54
- data/lib/rubocop/cop/style/ternary_parentheses.rb +69 -53
- data/lib/rubocop/cop/style/trailing_body_on_class.rb +43 -0
- data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +54 -0
- data/lib/rubocop/cop/style/trailing_body_on_module.rb +43 -0
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +69 -24
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +99 -0
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +88 -0
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +100 -0
- data/lib/rubocop/cop/style/trailing_method_end_statement.rb +91 -0
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +19 -9
- data/lib/rubocop/cop/style/trivial_accessors.rb +51 -20
- data/lib/rubocop/cop/style/unless_else.rb +21 -5
- data/lib/rubocop/cop/style/unpack_first.rb +61 -0
- data/lib/rubocop/cop/style/variable_interpolation.rb +22 -21
- data/lib/rubocop/cop/style/when_then.rb +15 -2
- data/lib/rubocop/cop/style/while_until_do.rb +26 -4
- data/lib/rubocop/cop/style/while_until_modifier.rb +26 -7
- data/lib/rubocop/cop/style/word_array.rb +22 -18
- data/lib/rubocop/cop/style/yoda_condition.rb +96 -36
- data/lib/rubocop/cop/style/zero_length_predicate.rb +40 -20
- data/lib/rubocop/cop/team.rb +159 -91
- data/lib/rubocop/cop/util.rb +51 -209
- data/lib/rubocop/cop/utils/format_string.rb +137 -0
- data/lib/rubocop/cop/variable_force/assignment.rb +9 -2
- data/lib/rubocop/cop/variable_force/branch.rb +5 -3
- data/lib/rubocop/cop/variable_force/branchable.rb +2 -0
- data/lib/rubocop/cop/variable_force/scope.rb +8 -5
- data/lib/rubocop/cop/variable_force/variable.rb +21 -10
- data/lib/rubocop/cop/variable_force/variable_table.rb +4 -3
- data/lib/rubocop/cop/variable_force.rb +41 -36
- data/lib/rubocop/core_ext/string.rb +23 -0
- data/lib/rubocop/error.rb +23 -0
- data/lib/rubocop/ext/processed_source.rb +18 -0
- data/lib/rubocop/file_finder.rb +42 -0
- data/lib/rubocop/formatter/auto_gen_config_formatter.rb +16 -0
- data/lib/rubocop/formatter/base_formatter.rb +3 -7
- data/lib/rubocop/formatter/clang_style_formatter.rb +9 -6
- data/lib/rubocop/formatter/disabled_config_formatter.rb +84 -49
- data/lib/rubocop/formatter/emacs_style_formatter.rb +22 -9
- data/lib/rubocop/formatter/file_list_formatter.rb +2 -1
- data/lib/rubocop/formatter/formatter_set.rb +17 -16
- data/lib/rubocop/formatter/fuubar_style_formatter.rb +2 -2
- data/lib/rubocop/formatter/html_formatter.rb +13 -6
- data/lib/rubocop/formatter/json_formatter.rb +16 -9
- data/lib/rubocop/formatter/junit_formatter.rb +84 -0
- data/lib/rubocop/formatter/offense_count_formatter.rb +17 -0
- data/lib/rubocop/formatter/pacman_formatter.rb +80 -0
- data/lib/rubocop/formatter/progress_formatter.rb +1 -1
- data/lib/rubocop/formatter/quiet_formatter.rb +13 -0
- data/lib/rubocop/formatter/simple_text_formatter.rb +18 -5
- data/lib/rubocop/formatter/tap_formatter.rb +17 -6
- data/lib/rubocop/magic_comment.rb +15 -11
- data/lib/rubocop/name_similarity.rb +17 -10
- data/lib/rubocop/options.rb +267 -139
- data/lib/rubocop/path_util.rb +45 -7
- data/lib/rubocop/platform.rb +1 -1
- data/lib/rubocop/rake_task.rb +7 -9
- data/lib/rubocop/remote_config.rb +23 -9
- data/lib/rubocop/result_cache.rb +50 -23
- data/lib/rubocop/rspec/cop_helper.rb +10 -37
- data/lib/rubocop/rspec/expect_offense.rb +124 -12
- data/lib/rubocop/rspec/host_environment_simulation_helper.rb +1 -5
- data/lib/rubocop/rspec/shared_contexts.rb +78 -39
- data/lib/rubocop/rspec/support.rb +5 -1
- data/lib/rubocop/runner.rb +109 -59
- data/lib/rubocop/string_interpreter.rb +8 -8
- data/lib/rubocop/target_finder.rb +62 -68
- data/lib/rubocop/target_ruby.rb +154 -0
- data/lib/rubocop/version.rb +8 -4
- data/lib/rubocop/yaml_duplication_checker.rb +39 -0
- data/lib/rubocop.rb +188 -149
- metadata +257 -182
- data/config/disabled.yml +0 -118
- data/config/enabled.yml +0 -1892
- data/lib/rubocop/ast/builder.rb +0 -70
- data/lib/rubocop/ast/node/and_node.rb +0 -37
- data/lib/rubocop/ast/node/args_node.rb +0 -12
- data/lib/rubocop/ast/node/array_node.rb +0 -57
- data/lib/rubocop/ast/node/block_node.rb +0 -116
- data/lib/rubocop/ast/node/case_node.rb +0 -64
- data/lib/rubocop/ast/node/def_node.rb +0 -71
- data/lib/rubocop/ast/node/ensure_node.rb +0 -25
- data/lib/rubocop/ast/node/for_node.rb +0 -61
- data/lib/rubocop/ast/node/hash_node.rb +0 -109
- data/lib/rubocop/ast/node/if_node.rb +0 -146
- data/lib/rubocop/ast/node/keyword_splat_node.rb +0 -45
- data/lib/rubocop/ast/node/mixin/binary_operator_node.rb +0 -23
- data/lib/rubocop/ast/node/mixin/collection_node.rb +0 -15
- data/lib/rubocop/ast/node/mixin/conditional_node.rb +0 -45
- data/lib/rubocop/ast/node/mixin/hash_element_node.rb +0 -125
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +0 -174
- data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +0 -89
- data/lib/rubocop/ast/node/mixin/modifier_node.rb +0 -17
- data/lib/rubocop/ast/node/mixin/parameterized_node.rb +0 -61
- data/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +0 -35
- data/lib/rubocop/ast/node/or_node.rb +0 -37
- data/lib/rubocop/ast/node/pair_node.rb +0 -64
- data/lib/rubocop/ast/node/regexp_node.rb +0 -35
- data/lib/rubocop/ast/node/resbody_node.rb +0 -25
- data/lib/rubocop/ast/node/send_node.rb +0 -25
- data/lib/rubocop/ast/node/super_node.rb +0 -21
- data/lib/rubocop/ast/node/until_node.rb +0 -43
- data/lib/rubocop/ast/node/when_node.rb +0 -61
- data/lib/rubocop/ast/node/while_node.rb +0 -43
- data/lib/rubocop/ast/node/yield_node.rb +0 -21
- data/lib/rubocop/ast/node.rb +0 -604
- data/lib/rubocop/ast/sexp.rb +0 -16
- data/lib/rubocop/ast/traversal.rb +0 -171
- data/lib/rubocop/cop/internal_affairs/deprecated_positional_arguments.rb +0 -81
- data/lib/rubocop/cop/layout/align_array.rb +0 -35
- data/lib/rubocop/cop/layout/align_hash.rb +0 -235
- data/lib/rubocop/cop/layout/indent_array.rb +0 -114
- data/lib/rubocop/cop/layout/indent_heredoc.rb +0 -168
- data/lib/rubocop/cop/layout/space_inside_brackets.rb +0 -20
- data/lib/rubocop/cop/layout/tab.rb +0 -60
- data/lib/rubocop/cop/lint/end_in_method.rb +0 -40
- data/lib/rubocop/cop/lint/handle_exceptions.rb +0 -56
- data/lib/rubocop/cop/lint/rescue_without_error_class.rb +0 -41
- data/lib/rubocop/cop/metrics/line_length.rb +0 -171
- data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +0 -149
- data/lib/rubocop/cop/mixin/classish_length.rb +0 -36
- data/lib/rubocop/cop/mixin/safe_mode.rb +0 -22
- data/lib/rubocop/cop/mixin/space_inside.rb +0 -76
- data/lib/rubocop/cop/mixin/target_rails_version.rb +0 -16
- data/lib/rubocop/cop/performance/caller.rb +0 -69
- data/lib/rubocop/cop/performance/case_when_splat.rb +0 -176
- data/lib/rubocop/cop/performance/casecmp.rb +0 -107
- data/lib/rubocop/cop/performance/compare_with_block.rb +0 -111
- data/lib/rubocop/cop/performance/count.rb +0 -100
- data/lib/rubocop/cop/performance/detect.rb +0 -107
- data/lib/rubocop/cop/performance/double_start_end_with.rb +0 -99
- data/lib/rubocop/cop/performance/end_with.rb +0 -55
- data/lib/rubocop/cop/performance/fixed_size.rb +0 -56
- data/lib/rubocop/cop/performance/flat_map.rb +0 -75
- data/lib/rubocop/cop/performance/hash_each_methods.rb +0 -128
- data/lib/rubocop/cop/performance/range_include.rb +0 -41
- data/lib/rubocop/cop/performance/redundant_block_call.rb +0 -93
- data/lib/rubocop/cop/performance/redundant_match.rb +0 -56
- data/lib/rubocop/cop/performance/redundant_merge.rb +0 -167
- data/lib/rubocop/cop/performance/regexp_match.rb +0 -223
- data/lib/rubocop/cop/performance/reverse_each.rb +0 -40
- data/lib/rubocop/cop/performance/size.rb +0 -71
- data/lib/rubocop/cop/performance/start_with.rb +0 -58
- data/lib/rubocop/cop/performance/string_replacement.rb +0 -170
- data/lib/rubocop/cop/performance/times_map.rb +0 -72
- data/lib/rubocop/cop/performance/unfreeze_string.rb +0 -50
- data/lib/rubocop/cop/performance/uri_default_parser.rb +0 -47
- data/lib/rubocop/cop/rails/action_filter.rb +0 -94
- data/lib/rubocop/cop/rails/active_support_aliases.rb +0 -67
- data/lib/rubocop/cop/rails/application_job.rb +0 -32
- data/lib/rubocop/cop/rails/application_record.rb +0 -32
- data/lib/rubocop/cop/rails/blank.rb +0 -141
- data/lib/rubocop/cop/rails/date.rb +0 -128
- data/lib/rubocop/cop/rails/delegate.rb +0 -135
- data/lib/rubocop/cop/rails/delegate_allow_blank.rb +0 -51
- data/lib/rubocop/cop/rails/dynamic_find_by.rb +0 -81
- data/lib/rubocop/cop/rails/enum_uniqueness.rb +0 -43
- data/lib/rubocop/cop/rails/exit.rb +0 -61
- data/lib/rubocop/cop/rails/file_path.rb +0 -72
- data/lib/rubocop/cop/rails/find_by.rb +0 -52
- data/lib/rubocop/cop/rails/find_each.rb +0 -47
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +0 -18
- data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +0 -72
- data/lib/rubocop/cop/rails/http_positional_arguments.rb +0 -107
- data/lib/rubocop/cop/rails/not_null_column.rb +0 -67
- data/lib/rubocop/cop/rails/output.rb +0 -23
- data/lib/rubocop/cop/rails/output_safety.rb +0 -99
- data/lib/rubocop/cop/rails/pluralization_grammar.rb +0 -106
- data/lib/rubocop/cop/rails/present.rb +0 -140
- data/lib/rubocop/cop/rails/read_write_attribute.rb +0 -65
- data/lib/rubocop/cop/rails/relative_date_constant.rb +0 -88
- data/lib/rubocop/cop/rails/request_referer.rb +0 -56
- data/lib/rubocop/cop/rails/reversible_migration.rb +0 -282
- data/lib/rubocop/cop/rails/safe_navigation.rb +0 -91
- data/lib/rubocop/cop/rails/save_bang.rb +0 -162
- data/lib/rubocop/cop/rails/scope_args.rb +0 -29
- data/lib/rubocop/cop/rails/skips_model_validations.rb +0 -70
- data/lib/rubocop/cop/rails/time_zone.rb +0 -198
- data/lib/rubocop/cop/rails/uniq_before_pluck.rb +0 -95
- data/lib/rubocop/cop/rails/unknown_env.rb +0 -63
- data/lib/rubocop/cop/rails/validation.rb +0 -64
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +0 -141
- data/lib/rubocop/cop/style/flip_flop.rb +0 -20
- data/lib/rubocop/cop/style/method_missing.rb +0 -68
- data/lib/rubocop/cop/style/trailing_comma_in_literal.rb +0 -56
- data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
- data/lib/rubocop/node_pattern.rb +0 -561
- data/lib/rubocop/processed_source.rb +0 -147
- data/lib/rubocop/rspec/shared_examples.rb +0 -92
- data/lib/rubocop/string_util.rb +0 -158
- data/lib/rubocop/token.rb +0 -25
- /data/{bin → exe}/rubocop +0 -0
data/lib/rubocop/options.rb
CHANGED
|
@@ -4,8 +4,15 @@ require 'optparse'
|
|
|
4
4
|
require 'shellwords'
|
|
5
5
|
|
|
6
6
|
module RuboCop
|
|
7
|
+
class IncorrectCopNameError < StandardError; end
|
|
8
|
+
class OptionArgumentError < StandardError; end
|
|
9
|
+
|
|
7
10
|
# This class handles command line options.
|
|
8
11
|
class Options
|
|
12
|
+
E_STDIN_NO_PATH = '-s/--stdin requires exactly one path, relative to the ' \
|
|
13
|
+
'root of the project. RuboCop will use this path to determine which ' \
|
|
14
|
+
'cops are enabled (via eg. Include/Exclude), and so that certain cops ' \
|
|
15
|
+
'like Naming/FileName can be checked.'
|
|
9
16
|
EXITING_OPTIONS = %i[version verbose_version show_cops].freeze
|
|
10
17
|
DEFAULT_MAXIMUM_EXCLUSION_ITEMS = 15
|
|
11
18
|
|
|
@@ -16,19 +23,15 @@ module RuboCop
|
|
|
16
23
|
|
|
17
24
|
def parse(command_line_args)
|
|
18
25
|
args = args_from_file.concat(args_from_env).concat(command_line_args)
|
|
19
|
-
define_options
|
|
20
|
-
# The --no-color CLI option sets `color: false` so we don't want the
|
|
21
|
-
# `no_color` key, which is created automatically.
|
|
22
|
-
@options.delete(:no_color)
|
|
26
|
+
define_options.parse!(args)
|
|
23
27
|
|
|
24
28
|
@validator.validate_compatibility
|
|
25
29
|
|
|
26
30
|
if @options[:stdin]
|
|
27
|
-
# The parser
|
|
28
|
-
# @options[:stdin].
|
|
29
|
-
if args.any?
|
|
30
|
-
|
|
31
|
-
end
|
|
31
|
+
# The parser will put the file name given after --stdin into
|
|
32
|
+
# @options[:stdin]. If it did, then the args array should be empty.
|
|
33
|
+
raise OptionArgumentError, E_STDIN_NO_PATH if args.any?
|
|
34
|
+
|
|
32
35
|
# We want the STDIN contents in @options[:stdin] and the file name in
|
|
33
36
|
# args to simplify the rest of the processing.
|
|
34
37
|
args = [@options[:stdin]]
|
|
@@ -42,7 +45,7 @@ module RuboCop
|
|
|
42
45
|
|
|
43
46
|
def args_from_file
|
|
44
47
|
if File.exist?('.rubocop') && !File.directory?('.rubocop')
|
|
45
|
-
|
|
48
|
+
File.read('.rubocop').shellsplit
|
|
46
49
|
else
|
|
47
50
|
[]
|
|
48
51
|
end
|
|
@@ -52,13 +55,13 @@ module RuboCop
|
|
|
52
55
|
Shellwords.split(ENV.fetch('RUBOCOP_OPTS', ''))
|
|
53
56
|
end
|
|
54
57
|
|
|
55
|
-
def define_options
|
|
58
|
+
def define_options
|
|
56
59
|
OptionParser.new do |opts|
|
|
57
60
|
opts.banner = 'Usage: rubocop [options] [file1, file2, ...]'
|
|
58
61
|
|
|
59
62
|
add_list_options(opts)
|
|
60
63
|
add_only_options(opts)
|
|
61
|
-
add_configuration_options(opts
|
|
64
|
+
add_configuration_options(opts)
|
|
62
65
|
add_formatting_options(opts)
|
|
63
66
|
|
|
64
67
|
option(opts, '-r', '--require FILE') { |f| require f }
|
|
@@ -66,6 +69,7 @@ module RuboCop
|
|
|
66
69
|
add_severity_option(opts)
|
|
67
70
|
add_flags_with_optional_args(opts)
|
|
68
71
|
add_boolean_flags(opts)
|
|
72
|
+
add_aliases(opts)
|
|
69
73
|
|
|
70
74
|
option(opts, '-s', '--stdin FILE')
|
|
71
75
|
end
|
|
@@ -79,6 +83,12 @@ module RuboCop
|
|
|
79
83
|
|
|
80
84
|
def add_cop_selection_csv_option(option, opts)
|
|
81
85
|
option(opts, "--#{option} [COP1,COP2,...]") do |list|
|
|
86
|
+
unless list
|
|
87
|
+
message = "--#{option} argument should be [COP1,COP2,...]."
|
|
88
|
+
|
|
89
|
+
raise OptionArgumentError, message
|
|
90
|
+
end
|
|
91
|
+
|
|
82
92
|
@options[:"#{option}"] =
|
|
83
93
|
if list.empty?
|
|
84
94
|
['']
|
|
@@ -90,23 +100,34 @@ module RuboCop
|
|
|
90
100
|
end
|
|
91
101
|
end
|
|
92
102
|
|
|
93
|
-
def add_configuration_options(opts
|
|
103
|
+
def add_configuration_options(opts)
|
|
94
104
|
option(opts, '-c', '--config FILE')
|
|
105
|
+
option(opts, '--force-exclusion')
|
|
106
|
+
option(opts, '--only-recognized-file-types')
|
|
107
|
+
option(opts, '--ignore-parent-exclusion')
|
|
108
|
+
option(opts, '--force-default-config')
|
|
109
|
+
add_auto_gen_options(opts)
|
|
110
|
+
end
|
|
95
111
|
|
|
112
|
+
def add_auto_gen_options(opts)
|
|
96
113
|
option(opts, '--auto-gen-config')
|
|
97
114
|
|
|
98
115
|
option(opts, '--exclude-limit COUNT') do
|
|
99
|
-
@validator.validate_exclude_limit_option
|
|
116
|
+
@validator.validate_exclude_limit_option
|
|
100
117
|
end
|
|
101
118
|
|
|
102
|
-
option(opts, '--
|
|
103
|
-
option(opts, '--ignore-parent-exclusion')
|
|
104
|
-
|
|
105
|
-
option(opts, '--force-default-config')
|
|
119
|
+
option(opts, '--disable-uncorrectable')
|
|
106
120
|
|
|
107
121
|
option(opts, '--no-offense-counts') do
|
|
108
122
|
@options[:no_offense_counts] = true
|
|
109
123
|
end
|
|
124
|
+
|
|
125
|
+
option(opts, '--auto-gen-only-exclude')
|
|
126
|
+
option(opts, '--no-auto-gen-timestamp') do
|
|
127
|
+
@options[:no_auto_gen_timestamp] = true
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
option(opts, '--init')
|
|
110
131
|
end
|
|
111
132
|
|
|
112
133
|
def add_formatting_options(opts)
|
|
@@ -122,6 +143,8 @@ module RuboCop
|
|
|
122
143
|
@options[:output_path] = path
|
|
123
144
|
end
|
|
124
145
|
end
|
|
146
|
+
|
|
147
|
+
option(opts, '--display-only-failed')
|
|
125
148
|
end
|
|
126
149
|
|
|
127
150
|
def add_severity_option(opts)
|
|
@@ -131,6 +154,7 @@ module RuboCop
|
|
|
131
154
|
table) do |severity|
|
|
132
155
|
@options[:fail_level] = severity
|
|
133
156
|
end
|
|
157
|
+
option(opts, '--display-only-fail-level-offenses')
|
|
134
158
|
end
|
|
135
159
|
|
|
136
160
|
def add_flags_with_optional_args(opts)
|
|
@@ -139,26 +163,49 @@ module RuboCop
|
|
|
139
163
|
end
|
|
140
164
|
end
|
|
141
165
|
|
|
142
|
-
|
|
166
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
|
167
|
+
def add_boolean_flags(opts)
|
|
143
168
|
option(opts, '-F', '--fail-fast')
|
|
144
169
|
option(opts, '-C', '--cache FLAG')
|
|
145
170
|
option(opts, '-d', '--debug')
|
|
146
|
-
option(opts, '-D', '--display-cop-names')
|
|
171
|
+
option(opts, '-D', '--[no-]display-cop-names')
|
|
147
172
|
option(opts, '-E', '--extra-details')
|
|
148
173
|
option(opts, '-S', '--display-style-guide')
|
|
149
|
-
option(opts, '-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
174
|
+
option(opts, '-a', '--auto-correct') do
|
|
175
|
+
@options[:safe_auto_correct] = true
|
|
176
|
+
end
|
|
177
|
+
option(opts, '--safe-autocorrect') do
|
|
178
|
+
warn '--safe-autocorrect is deprecated; use --autocorrect'
|
|
179
|
+
@options[:safe_auto_correct] = @options[:auto_correct] = true
|
|
153
180
|
end
|
|
154
|
-
option(opts, '-
|
|
181
|
+
option(opts, '-A', '--auto-correct-all') do
|
|
182
|
+
@options[:auto_correct] = true
|
|
183
|
+
end
|
|
184
|
+
option(opts, '--disable-pending-cops')
|
|
185
|
+
option(opts, '--enable-pending-cops')
|
|
186
|
+
option(opts, '--ignore-disable-comments')
|
|
187
|
+
|
|
188
|
+
option(opts, '--safe')
|
|
155
189
|
|
|
156
|
-
option(opts, '--[no-]color')
|
|
190
|
+
option(opts, '--[no-]color')
|
|
157
191
|
|
|
158
192
|
option(opts, '-v', '--version')
|
|
159
193
|
option(opts, '-V', '--verbose-version')
|
|
160
194
|
option(opts, '-P', '--parallel')
|
|
161
195
|
end
|
|
196
|
+
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
|
197
|
+
|
|
198
|
+
def add_aliases(opts)
|
|
199
|
+
option(opts, '-l', '--lint') do
|
|
200
|
+
@options[:only] ||= []
|
|
201
|
+
@options[:only] << 'Lint'
|
|
202
|
+
end
|
|
203
|
+
option(opts, '-x', '--fix-layout') do
|
|
204
|
+
@options[:only] ||= []
|
|
205
|
+
@options[:only] << 'Layout'
|
|
206
|
+
@options[:auto_correct] = true
|
|
207
|
+
end
|
|
208
|
+
end
|
|
162
209
|
|
|
163
210
|
def add_list_options(opts)
|
|
164
211
|
option(opts, '-L', '--list-target-files')
|
|
@@ -179,25 +226,44 @@ module RuboCop
|
|
|
179
226
|
# e.g. [..., '--auto-correct', ...] to :auto_correct.
|
|
180
227
|
def long_opt_symbol(args)
|
|
181
228
|
long_opt = args.find { |arg| arg.start_with?('--') }
|
|
182
|
-
long_opt[2..-1].sub(
|
|
229
|
+
long_opt[2..-1].sub('[no-]', '').sub(/ .*/, '')
|
|
230
|
+
.tr('-', '_').gsub(/[\[\]]/, '').to_sym
|
|
183
231
|
end
|
|
184
232
|
end
|
|
185
233
|
|
|
186
234
|
# Validates option arguments and the options' compatibility with each other.
|
|
187
235
|
class OptionsValidator
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
236
|
+
class << self
|
|
237
|
+
# Cop name validation must be done later than option parsing, so it's not
|
|
238
|
+
# called from within Options.
|
|
239
|
+
def validate_cop_list(names)
|
|
240
|
+
return unless names
|
|
192
241
|
|
|
193
|
-
|
|
242
|
+
cop_names = Cop::Cop.registry.names
|
|
243
|
+
departments = Cop::Cop.registry.departments.map(&:to_s)
|
|
194
244
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
245
|
+
names.each do |name|
|
|
246
|
+
next if cop_names.include?(name)
|
|
247
|
+
next if departments.include?(name)
|
|
248
|
+
next if %w[Syntax Lint/Syntax].include?(name)
|
|
199
249
|
|
|
200
|
-
|
|
250
|
+
raise IncorrectCopNameError, format_message_from(name, cop_names)
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
private
|
|
255
|
+
|
|
256
|
+
def format_message_from(name, cop_names)
|
|
257
|
+
message = 'Unrecognized cop or department: %<name>s.'
|
|
258
|
+
message_with_candidate = "%<message>s\nDid you mean? %<candidate>s"
|
|
259
|
+
corrections = NameSimilarity.find_similar_names(name, cop_names)
|
|
260
|
+
|
|
261
|
+
if corrections.empty?
|
|
262
|
+
format(message, name: name)
|
|
263
|
+
else
|
|
264
|
+
format(message_with_candidate, message: format(message, name: name),
|
|
265
|
+
candidate: corrections.join(', '))
|
|
266
|
+
end
|
|
201
267
|
end
|
|
202
268
|
end
|
|
203
269
|
|
|
@@ -205,50 +271,103 @@ module RuboCop
|
|
|
205
271
|
@options = options
|
|
206
272
|
end
|
|
207
273
|
|
|
208
|
-
def
|
|
209
|
-
|
|
210
|
-
|
|
274
|
+
def validate_cop_options
|
|
275
|
+
%i[only except].each do |opt|
|
|
276
|
+
OptionsValidator.validate_cop_list(@options[opt])
|
|
211
277
|
end
|
|
212
|
-
|
|
213
|
-
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
# rubocop:disable Metrics/AbcSize
|
|
281
|
+
def validate_compatibility # rubocop:disable Metrics/MethodLength
|
|
282
|
+
if only_includes_redundant_disable?
|
|
283
|
+
raise OptionArgumentError, 'Lint/RedundantCopDisableDirective cannot ' \
|
|
284
|
+
'be used with --only.'
|
|
214
285
|
end
|
|
286
|
+
raise OptionArgumentError, 'Syntax checking cannot be turned off.' if except_syntax?
|
|
215
287
|
unless boolean_or_empty_cache?
|
|
216
|
-
raise
|
|
288
|
+
raise OptionArgumentError, '-C/--cache argument must be true or false'
|
|
217
289
|
end
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
290
|
+
|
|
291
|
+
if display_only_fail_level_offenses_with_autocorrect?
|
|
292
|
+
raise OptionArgumentError, '--autocorrect cannot be used with ' \
|
|
293
|
+
'--display-only-fail-level-offenses'
|
|
221
294
|
end
|
|
295
|
+
validate_auto_gen_config
|
|
296
|
+
validate_auto_correct
|
|
297
|
+
validate_display_only_failed
|
|
222
298
|
validate_parallel
|
|
223
299
|
|
|
224
300
|
return if incompatible_options.size <= 1
|
|
225
|
-
|
|
226
|
-
|
|
301
|
+
|
|
302
|
+
raise OptionArgumentError, 'Incompatible cli options: ' \
|
|
303
|
+
"#{incompatible_options.inspect}"
|
|
304
|
+
end
|
|
305
|
+
# rubocop:enable Metrics/AbcSize
|
|
306
|
+
|
|
307
|
+
def validate_auto_gen_config
|
|
308
|
+
return if @options.key?(:auto_gen_config)
|
|
309
|
+
|
|
310
|
+
message = '--%<flag>s can only be used together with --auto-gen-config.'
|
|
311
|
+
|
|
312
|
+
%i[exclude_limit no_offense_counts no_auto_gen_timestamp
|
|
313
|
+
auto_gen_only_exclude].each do |option|
|
|
314
|
+
if @options.key?(option)
|
|
315
|
+
raise OptionArgumentError,
|
|
316
|
+
format(message, flag: option.to_s.tr('_', '-'))
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
def validate_display_only_failed
|
|
322
|
+
return unless @options.key?(:display_only_failed)
|
|
323
|
+
return if @options[:format] == 'junit'
|
|
324
|
+
|
|
325
|
+
raise OptionArgumentError,
|
|
326
|
+
format('--display-only-failed can only be used together with --format junit.')
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def validate_auto_correct
|
|
330
|
+
return if @options.key?(:auto_correct)
|
|
331
|
+
return unless @options.key?(:disable_uncorrectable)
|
|
332
|
+
|
|
333
|
+
raise OptionArgumentError,
|
|
334
|
+
format('--disable-uncorrectable can only be used together with --auto-correct.')
|
|
227
335
|
end
|
|
228
336
|
|
|
229
337
|
def validate_parallel
|
|
230
338
|
return unless @options.key?(:parallel)
|
|
231
339
|
|
|
232
340
|
if @options[:cache] == 'false'
|
|
233
|
-
raise
|
|
234
|
-
|
|
235
|
-
|
|
341
|
+
raise OptionArgumentError, '-P/--parallel uses caching to speed up ' \
|
|
342
|
+
'execution, so combining with --cache ' \
|
|
343
|
+
'false is not allowed.'
|
|
236
344
|
end
|
|
237
345
|
|
|
346
|
+
validate_parallel_with_combo_option
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
def validate_parallel_with_combo_option
|
|
238
350
|
combos = {
|
|
239
351
|
auto_gen_config: '-P/--parallel uses caching to speed up execution, ' \
|
|
240
352
|
'while --auto-gen-config needs a non-cached run, ' \
|
|
241
353
|
'so they cannot be combined.',
|
|
242
|
-
fail_fast: '-P/--parallel
|
|
243
|
-
auto_correct: '-P/--parallel
|
|
354
|
+
fail_fast: '-P/--parallel cannot be combined with -F/--fail-fast.',
|
|
355
|
+
auto_correct: '-P/--parallel cannot be combined with --auto-correct.'
|
|
244
356
|
}
|
|
245
357
|
|
|
246
|
-
combos.each
|
|
358
|
+
combos.each do |key, msg|
|
|
359
|
+
raise OptionArgumentError, msg if @options.key?(key)
|
|
360
|
+
end
|
|
247
361
|
end
|
|
248
362
|
|
|
249
|
-
def
|
|
363
|
+
def only_includes_redundant_disable?
|
|
250
364
|
@options.key?(:only) &&
|
|
251
|
-
(@options[:only] & %w[Lint/
|
|
365
|
+
(@options[:only] & %w[Lint/RedundantCopDisableDirective
|
|
366
|
+
RedundantCopDisableDirective]).any?
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
def display_only_fail_level_offenses_with_autocorrect?
|
|
370
|
+
@options[:display_only_fail_level_offenses] && @options[:autocorrect]
|
|
252
371
|
end
|
|
253
372
|
|
|
254
373
|
def except_syntax?
|
|
@@ -260,101 +379,110 @@ module RuboCop
|
|
|
260
379
|
!@options.key?(:cache) || %w[true false].include?(@options[:cache])
|
|
261
380
|
end
|
|
262
381
|
|
|
263
|
-
def no_offense_counts_without_auto_gen_config?
|
|
264
|
-
@options.key?(:no_offense_counts) && !@options.key?(:auto_gen_config)
|
|
265
|
-
end
|
|
266
|
-
|
|
267
382
|
def incompatible_options
|
|
268
383
|
@incompatible_options ||= @options.keys & Options::EXITING_OPTIONS
|
|
269
384
|
end
|
|
270
385
|
|
|
271
|
-
def validate_exclude_limit_option
|
|
272
|
-
if @options[:exclude_limit]
|
|
273
|
-
# Emulate OptionParser's behavior to make failures consistent regardless
|
|
274
|
-
# of option order.
|
|
275
|
-
raise OptionParser::MissingArgument
|
|
276
|
-
end
|
|
277
|
-
|
|
278
|
-
# --exclude-limit is valid if there's a parsed or yet unparsed
|
|
279
|
-
# --auto-gen-config.
|
|
280
|
-
return if @options[:auto_gen_config] || args.include?('--auto-gen-config')
|
|
386
|
+
def validate_exclude_limit_option
|
|
387
|
+
return if /^\d+$/.match?(@options[:exclude_limit])
|
|
281
388
|
|
|
282
|
-
|
|
283
|
-
|
|
389
|
+
# Emulate OptionParser's behavior to make failures consistent regardless
|
|
390
|
+
# of option order.
|
|
391
|
+
raise OptionParser::MissingArgument
|
|
284
392
|
end
|
|
285
393
|
end
|
|
286
394
|
|
|
287
395
|
# This module contains help texts for command line options.
|
|
288
396
|
module OptionsHelp
|
|
289
397
|
MAX_EXCL = RuboCop::Options::DEFAULT_MAXIMUM_EXCLUSION_ITEMS.to_s
|
|
398
|
+
FORMATTER_OPTION_LIST = RuboCop::Formatter::FormatterSet::BUILTIN_FORMATTERS_FOR_KEYS.keys
|
|
399
|
+
|
|
290
400
|
TEXT = {
|
|
291
|
-
only:
|
|
292
|
-
only_guide_cops:
|
|
293
|
-
|
|
294
|
-
except:
|
|
295
|
-
require:
|
|
296
|
-
config:
|
|
297
|
-
auto_gen_config:
|
|
298
|
-
|
|
299
|
-
no_offense_counts:
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
401
|
+
only: 'Run only the given cop(s).',
|
|
402
|
+
only_guide_cops: ['Run only cops for rules that link to a',
|
|
403
|
+
'style guide.'],
|
|
404
|
+
except: 'Disable the given cop(s).',
|
|
405
|
+
require: 'Require Ruby file.',
|
|
406
|
+
config: 'Specify configuration file.',
|
|
407
|
+
auto_gen_config: ['Generate a configuration file acting as a',
|
|
408
|
+
'TODO list.'],
|
|
409
|
+
no_offense_counts: ['Do not include offense counts in configuration',
|
|
410
|
+
'file generated by --auto-gen-config.'],
|
|
411
|
+
no_auto_gen_timestamp:
|
|
412
|
+
['Do not include the date and time when',
|
|
413
|
+
'the --auto-gen-config was run in the file it',
|
|
414
|
+
'generates.'],
|
|
415
|
+
auto_gen_only_exclude:
|
|
416
|
+
['Generate only Exclude parameters and not Max',
|
|
417
|
+
'when running --auto-gen-config, except if the',
|
|
418
|
+
'number of files with offenses is bigger than',
|
|
419
|
+
'exclude-limit.'],
|
|
420
|
+
exclude_limit: ['Used together with --auto-gen-config to',
|
|
421
|
+
'set the limit for how many Exclude',
|
|
422
|
+
"properties to generate. Default is #{MAX_EXCL}."],
|
|
423
|
+
disable_uncorrectable: ['Used with --auto-correct to annotate any',
|
|
424
|
+
'offenses that do not support autocorrect',
|
|
425
|
+
'with `rubocop:todo` comments.'],
|
|
426
|
+
force_exclusion: ['Force excluding files specified in the',
|
|
427
|
+
'configuration `Exclude` even if they are',
|
|
428
|
+
'explicitly passed as arguments.'],
|
|
429
|
+
only_recognized_file_types: ['Inspect files given on the command line only if',
|
|
430
|
+
'they are listed in AllCops/Include parameters',
|
|
431
|
+
'of user configuration or default configuration.'],
|
|
432
|
+
ignore_disable_comments: ['Run cops even when they are disabled locally',
|
|
433
|
+
'with a comment.'],
|
|
434
|
+
ignore_parent_exclusion: ['Prevent from inheriting AllCops/Exclude from',
|
|
435
|
+
'parent folders.'],
|
|
436
|
+
force_default_config: ['Use default configuration even if configuration',
|
|
437
|
+
'files are present in the directory tree.'],
|
|
438
|
+
format: ['Choose an output formatter. This option',
|
|
439
|
+
'can be specified multiple times to enable',
|
|
440
|
+
'multiple formatters at the same time.',
|
|
441
|
+
'[p]rogress is used by default',
|
|
442
|
+
*FORMATTER_OPTION_LIST.map { |item| " #{item}" },
|
|
443
|
+
' custom formatter class name'],
|
|
444
|
+
out: ['Write output to a file instead of STDOUT.',
|
|
445
|
+
'This option applies to the previously',
|
|
446
|
+
'specified --format, or the default format',
|
|
447
|
+
'if no format is specified.'],
|
|
448
|
+
fail_level: ['Minimum severity (A/R/C/W/E/F) for exit',
|
|
449
|
+
'with error code.'],
|
|
450
|
+
display_only_failed: ['Only output offense messages. Omit passing',
|
|
451
|
+
'cops. Only valid for --format junit.'],
|
|
452
|
+
display_only_fail_level_offenses:
|
|
453
|
+
['Only output offense messages at',
|
|
454
|
+
'the specified --fail-level or above'],
|
|
455
|
+
show_cops: ['Shows the given cops, or all cops by',
|
|
456
|
+
'default, and their configurations for the',
|
|
457
|
+
'current directory.'],
|
|
458
|
+
fail_fast: ['Inspect files in order of modification',
|
|
459
|
+
'time and stop after the first file',
|
|
460
|
+
'containing offenses.'],
|
|
461
|
+
cache: ["Use result caching (FLAG=true) or don't",
|
|
462
|
+
'(FLAG=false), default determined by',
|
|
463
|
+
'configuration parameter AllCops: UseCache.'],
|
|
464
|
+
debug: 'Display debug info.',
|
|
465
|
+
display_cop_names: ['Display cop names in offense messages.',
|
|
466
|
+
'Default is true.'],
|
|
467
|
+
disable_pending_cops: 'Run without pending cops.',
|
|
468
|
+
display_style_guide: 'Display style guide URLs in offense messages.',
|
|
469
|
+
enable_pending_cops: 'Run with pending cops.',
|
|
470
|
+
extra_details: 'Display extra details in offense messages.',
|
|
471
|
+
lint: 'Run only lint cops.',
|
|
472
|
+
safe: 'Run only safe cops.',
|
|
473
|
+
list_target_files: 'List all files RuboCop will inspect.',
|
|
474
|
+
auto_correct: 'Auto-correct offenses (only when it\'s safe).',
|
|
475
|
+
safe_autocorrect: '(same, deprecated)',
|
|
476
|
+
auto_correct_all: 'Auto-correct offenses (safe and unsafe)',
|
|
477
|
+
fix_layout: 'Run only layout cops, with auto-correct on.',
|
|
478
|
+
color: 'Force color output on or off.',
|
|
479
|
+
version: 'Display version.',
|
|
480
|
+
verbose_version: 'Display verbose version.',
|
|
481
|
+
parallel: ['Use available CPUs to execute inspection in',
|
|
482
|
+
'parallel.'],
|
|
483
|
+
stdin: ['Pipe source from STDIN, using FILE in offense',
|
|
484
|
+
'reports. This is useful for editor integration.'],
|
|
485
|
+
init: 'Generate a .rubocop.yml file in the current directory.'
|
|
358
486
|
}.freeze
|
|
359
487
|
end
|
|
360
488
|
end
|
data/lib/rubocop/path_util.rb
CHANGED
|
@@ -5,18 +5,26 @@ module RuboCop
|
|
|
5
5
|
module PathUtil
|
|
6
6
|
module_function
|
|
7
7
|
|
|
8
|
-
def relative_path(path, base_dir =
|
|
8
|
+
def relative_path(path, base_dir = PathUtil.pwd)
|
|
9
9
|
# Optimization for the common case where path begins with the base
|
|
10
10
|
# dir. Just cut off the first part.
|
|
11
|
-
|
|
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
|
|
12
16
|
|
|
13
17
|
path_name = Pathname.new(File.expand_path(path))
|
|
14
|
-
|
|
18
|
+
begin
|
|
19
|
+
path_name.relative_path_from(Pathname.new(base_dir)).to_s
|
|
20
|
+
rescue ArgumentError
|
|
21
|
+
path
|
|
22
|
+
end
|
|
15
23
|
end
|
|
16
24
|
|
|
17
25
|
def smart_path(path)
|
|
18
26
|
# Ideally, we calculate this relative to the project root.
|
|
19
|
-
base_dir =
|
|
27
|
+
base_dir = PathUtil.pwd
|
|
20
28
|
|
|
21
29
|
if path.start_with? base_dir
|
|
22
30
|
relative_path(path, base_dir)
|
|
@@ -28,12 +36,14 @@ module RuboCop
|
|
|
28
36
|
def match_path?(pattern, path)
|
|
29
37
|
case pattern
|
|
30
38
|
when String
|
|
31
|
-
File.fnmatch?(pattern, path, File::FNM_PATHNAME)
|
|
39
|
+
File.fnmatch?(pattern, path, File::FNM_PATHNAME | File::FNM_EXTGLOB) ||
|
|
40
|
+
hidden_file_in_not_hidden_dir?(pattern, path)
|
|
32
41
|
when Regexp
|
|
33
42
|
begin
|
|
34
|
-
path
|
|
43
|
+
pattern.match?(path)
|
|
35
44
|
rescue ArgumentError => e
|
|
36
45
|
return false if e.message.start_with?('invalid byte sequence')
|
|
46
|
+
|
|
37
47
|
raise e
|
|
38
48
|
end
|
|
39
49
|
end
|
|
@@ -41,7 +51,35 @@ module RuboCop
|
|
|
41
51
|
|
|
42
52
|
# Returns true for an absolute Unix or Windows path.
|
|
43
53
|
def absolute?(path)
|
|
44
|
-
|
|
54
|
+
%r{\A([A-Z]:)?/}i.match?(path)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def self.pwd
|
|
58
|
+
@pwd ||= Dir.pwd
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def self.reset_pwd
|
|
62
|
+
@pwd = nil
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def self.chdir(dir, &block)
|
|
66
|
+
reset_pwd
|
|
67
|
+
Dir.chdir(dir, &block)
|
|
68
|
+
ensure
|
|
69
|
+
reset_pwd
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def hidden_file_in_not_hidden_dir?(pattern, path)
|
|
73
|
+
File.fnmatch?(
|
|
74
|
+
pattern, path,
|
|
75
|
+
File::FNM_PATHNAME | File::FNM_EXTGLOB | File::FNM_DOTMATCH
|
|
76
|
+
) && File.basename(path).start_with?('.') && !hidden_dir?(path)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def hidden_dir?(path)
|
|
80
|
+
File.dirname(path).split(File::SEPARATOR).any? do |dir|
|
|
81
|
+
dir.start_with?('.')
|
|
82
|
+
end
|
|
45
83
|
end
|
|
46
84
|
end
|
|
47
85
|
end
|