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
|
@@ -4,14 +4,14 @@ module RuboCop
|
|
|
4
4
|
module Cop
|
|
5
5
|
class VariableForce
|
|
6
6
|
# A Variable represents existence of a local variable.
|
|
7
|
-
# This holds a variable declaration node
|
|
8
|
-
# and some states of the variable.
|
|
7
|
+
# This holds a variable declaration node and some states of the variable.
|
|
9
8
|
class Variable
|
|
10
9
|
VARIABLE_DECLARATION_TYPES =
|
|
11
10
|
(VARIABLE_ASSIGNMENT_TYPES + ARGUMENT_DECLARATION_TYPES).freeze
|
|
12
11
|
|
|
13
12
|
attr_reader :name, :declaration_node, :scope,
|
|
14
13
|
:assignments, :references, :captured_by_block
|
|
14
|
+
|
|
15
15
|
alias captured_by_block? captured_by_block
|
|
16
16
|
|
|
17
17
|
def initialize(name, declaration_node, scope)
|
|
@@ -38,6 +38,7 @@ module RuboCop
|
|
|
38
38
|
!@references.empty?
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
|
41
42
|
def reference!(node)
|
|
42
43
|
reference = Reference.new(node, @scope)
|
|
43
44
|
@references << reference
|
|
@@ -46,17 +47,27 @@ module RuboCop
|
|
|
46
47
|
@assignments.reverse_each do |assignment|
|
|
47
48
|
next if consumed_branches.include?(assignment.branch)
|
|
48
49
|
|
|
49
|
-
unless assignment.run_exclusively_with?(reference)
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
assignment.reference!(node) unless assignment.run_exclusively_with?(reference)
|
|
51
|
+
|
|
52
|
+
# Modifier if/unless conditions are special. Assignments made in
|
|
53
|
+
# them do not put the assigned variable in scope to the left of the
|
|
54
|
+
# if/unless keyword. A preceding assignment is needed to put the
|
|
55
|
+
# variable in scope. For this reason we skip to the next assignment
|
|
56
|
+
# here.
|
|
57
|
+
next if in_modifier_if?(assignment)
|
|
52
58
|
|
|
53
59
|
break if !assignment.branch || assignment.branch == reference.branch
|
|
54
60
|
|
|
55
|
-
unless assignment.branch.may_run_incompletely?
|
|
56
|
-
consumed_branches << assignment.branch
|
|
57
|
-
end
|
|
61
|
+
consumed_branches << assignment.branch unless assignment.branch.may_run_incompletely?
|
|
58
62
|
end
|
|
59
63
|
end
|
|
64
|
+
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
|
65
|
+
|
|
66
|
+
def in_modifier_if?(assignment)
|
|
67
|
+
parent = assignment.node.parent
|
|
68
|
+
parent = parent.parent if parent&.begin_type?
|
|
69
|
+
parent&.if_type? && parent&.modifier_form?
|
|
70
|
+
end
|
|
60
71
|
|
|
61
72
|
def capture_with_block!
|
|
62
73
|
@captured_by_block = true
|
|
@@ -67,8 +78,8 @@ module RuboCop
|
|
|
67
78
|
# For more precise usage check, refer Assignment#used?.
|
|
68
79
|
#
|
|
69
80
|
# Once the variable is captured by a block, we have no idea
|
|
70
|
-
# when, where and how many times the block would be invoked
|
|
71
|
-
#
|
|
81
|
+
# when, where, and how many times the block would be invoked.
|
|
82
|
+
# This means we cannot track the usage of the variable.
|
|
72
83
|
# So we consider it's used to suppress false positive offenses.
|
|
73
84
|
def used?
|
|
74
85
|
@captured_by_block || referenced?
|
|
@@ -5,8 +5,8 @@ module RuboCop
|
|
|
5
5
|
class VariableForce
|
|
6
6
|
# A VariableTable manages the lifetime of all scopes and local variables
|
|
7
7
|
# in a program.
|
|
8
|
-
# This holds scopes as stack structure,
|
|
9
|
-
# variables to current scope and find local variables by considering
|
|
8
|
+
# This holds scopes as stack structure, provides a way to add local
|
|
9
|
+
# variables to current scope, and find local variables by considering
|
|
10
10
|
# variable visibility of the current scope.
|
|
11
11
|
class VariableTable
|
|
12
12
|
def initialize(hook_receiver = nil)
|
|
@@ -14,7 +14,7 @@ module RuboCop
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def invoke_hook(hook_name, *args)
|
|
17
|
-
@hook_receiver
|
|
17
|
+
@hook_receiver&.send(hook_name, *args)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def scope_stack
|
|
@@ -120,6 +120,7 @@ module RuboCop
|
|
|
120
120
|
def mark_variable_as_captured_by_block_if_so(variable)
|
|
121
121
|
return unless current_scope.node.block_type?
|
|
122
122
|
return if variable.scope == current_scope
|
|
123
|
+
|
|
123
124
|
variable.capture_with_block!
|
|
124
125
|
end
|
|
125
126
|
end
|
|
@@ -50,8 +50,8 @@ module RuboCop
|
|
|
50
50
|
|
|
51
51
|
ZERO_ARITY_SUPER_TYPE = :zsuper
|
|
52
52
|
|
|
53
|
-
TWISTED_SCOPE_TYPES = %i[block class sclass defs].freeze
|
|
54
|
-
SCOPE_TYPES = (TWISTED_SCOPE_TYPES +
|
|
53
|
+
TWISTED_SCOPE_TYPES = %i[block class sclass defs module].freeze
|
|
54
|
+
SCOPE_TYPES = (TWISTED_SCOPE_TYPES + [:def]).freeze
|
|
55
55
|
|
|
56
56
|
SEND_TYPE = :send
|
|
57
57
|
|
|
@@ -82,10 +82,9 @@ module RuboCop
|
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
def process_node(node)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
end
|
|
85
|
+
method_name = node_handler_method_name(node)
|
|
86
|
+
retval = send(method_name, node) if method_name
|
|
87
|
+
process_children(node) unless retval == :skip_children
|
|
89
88
|
end
|
|
90
89
|
|
|
91
90
|
private
|
|
@@ -100,39 +99,40 @@ module RuboCop
|
|
|
100
99
|
def process_children(origin_node)
|
|
101
100
|
origin_node.each_child_node do |child_node|
|
|
102
101
|
next if scanned_node?(child_node)
|
|
102
|
+
|
|
103
103
|
process_node(child_node)
|
|
104
104
|
end
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
def skip_children!
|
|
108
|
-
|
|
108
|
+
:skip_children
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
# rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity
|
|
112
|
-
def
|
|
112
|
+
def node_handler_method_name(node)
|
|
113
113
|
case node.type
|
|
114
114
|
when VARIABLE_ASSIGNMENT_TYPE
|
|
115
|
-
process_variable_assignment
|
|
115
|
+
:process_variable_assignment
|
|
116
116
|
when REGEXP_NAMED_CAPTURE_TYPE
|
|
117
|
-
process_regexp_named_captures
|
|
117
|
+
:process_regexp_named_captures
|
|
118
118
|
when MULTIPLE_ASSIGNMENT_TYPE
|
|
119
|
-
process_variable_multiple_assignment
|
|
119
|
+
:process_variable_multiple_assignment
|
|
120
120
|
when VARIABLE_REFERENCE_TYPE
|
|
121
|
-
process_variable_referencing
|
|
121
|
+
:process_variable_referencing
|
|
122
122
|
when RESCUE_TYPE
|
|
123
|
-
process_rescue
|
|
123
|
+
:process_rescue
|
|
124
124
|
when ZERO_ARITY_SUPER_TYPE
|
|
125
|
-
process_zero_arity_super
|
|
125
|
+
:process_zero_arity_super
|
|
126
126
|
when SEND_TYPE
|
|
127
|
-
process_send
|
|
127
|
+
:process_send
|
|
128
128
|
when *ARGUMENT_DECLARATION_TYPES
|
|
129
|
-
process_variable_declaration
|
|
129
|
+
:process_variable_declaration
|
|
130
130
|
when *OPERATOR_ASSIGNMENT_TYPES
|
|
131
|
-
process_variable_operator_assignment
|
|
131
|
+
:process_variable_operator_assignment
|
|
132
132
|
when *LOOP_TYPES
|
|
133
|
-
process_loop
|
|
133
|
+
:process_loop
|
|
134
134
|
when *SCOPE_TYPES
|
|
135
|
-
process_scope
|
|
135
|
+
:process_scope
|
|
136
136
|
end
|
|
137
137
|
end
|
|
138
138
|
# rubocop:enable Metrics/MethodLength, Metrics/CyclomaticComplexity
|
|
@@ -152,9 +152,7 @@ module RuboCop
|
|
|
152
152
|
def process_variable_assignment(node)
|
|
153
153
|
name = node.children.first
|
|
154
154
|
|
|
155
|
-
unless variable_table.variable_exist?(name)
|
|
156
|
-
variable_table.declare_variable(name, node)
|
|
157
|
-
end
|
|
155
|
+
variable_table.declare_variable(name, node) unless variable_table.variable_exist?(name)
|
|
158
156
|
|
|
159
157
|
# Need to scan rhs before assignment so that we can mark previous
|
|
160
158
|
# assignments as referenced if rhs has referencing to the variable
|
|
@@ -175,6 +173,7 @@ module RuboCop
|
|
|
175
173
|
|
|
176
174
|
variable_names.each do |name|
|
|
177
175
|
next if variable_table.variable_exist?(name)
|
|
176
|
+
|
|
178
177
|
variable_table.declare_variable(name, node)
|
|
179
178
|
end
|
|
180
179
|
|
|
@@ -189,12 +188,16 @@ module RuboCop
|
|
|
189
188
|
end
|
|
190
189
|
|
|
191
190
|
def regexp_captured_names(node)
|
|
192
|
-
regexp_string = node.children
|
|
191
|
+
regexp_string = node.children.select(&:str_type?).map do |child|
|
|
192
|
+
child.children.first
|
|
193
|
+
end.join || ''
|
|
194
|
+
|
|
193
195
|
regexp = Regexp.new(regexp_string)
|
|
194
196
|
|
|
195
197
|
regexp.named_captures.keys
|
|
196
198
|
end
|
|
197
199
|
|
|
200
|
+
# rubocop:disable Metrics/AbcSize
|
|
198
201
|
def process_variable_operator_assignment(node)
|
|
199
202
|
if LOGICAL_OPERATOR_ASSIGNMENT_TYPES.include?(node.type)
|
|
200
203
|
asgn_node, rhs_node = *node
|
|
@@ -206,9 +209,7 @@ module RuboCop
|
|
|
206
209
|
|
|
207
210
|
name = asgn_node.children.first
|
|
208
211
|
|
|
209
|
-
unless variable_table.variable_exist?(name)
|
|
210
|
-
variable_table.declare_variable(name, asgn_node)
|
|
211
|
-
end
|
|
212
|
+
variable_table.declare_variable(name, asgn_node) unless variable_table.variable_exist?(name)
|
|
212
213
|
|
|
213
214
|
# The following statements:
|
|
214
215
|
#
|
|
@@ -231,6 +232,7 @@ module RuboCop
|
|
|
231
232
|
|
|
232
233
|
skip_children!
|
|
233
234
|
end
|
|
235
|
+
# rubocop:enable Metrics/AbcSize
|
|
234
236
|
|
|
235
237
|
def process_variable_multiple_assignment(node)
|
|
236
238
|
lhs_node, rhs_node = *node
|
|
@@ -273,6 +275,7 @@ module RuboCop
|
|
|
273
275
|
def process_zero_arity_super(node)
|
|
274
276
|
variable_table.accessible_variables.each do |variable|
|
|
275
277
|
next unless variable.method_argument?
|
|
278
|
+
|
|
276
279
|
variable.reference!(node)
|
|
277
280
|
end
|
|
278
281
|
end
|
|
@@ -280,11 +283,7 @@ module RuboCop
|
|
|
280
283
|
def process_scope(node)
|
|
281
284
|
if TWISTED_SCOPE_TYPES.include?(node.type)
|
|
282
285
|
# See the comment at the end of file for this behavior.
|
|
283
|
-
twisted_nodes
|
|
284
|
-
twisted_nodes << node.children[1] if node.class_type?
|
|
285
|
-
twisted_nodes.compact!
|
|
286
|
-
|
|
287
|
-
twisted_nodes.each do |twisted_node|
|
|
286
|
+
twisted_nodes(node).each do |twisted_node|
|
|
288
287
|
process_node(twisted_node)
|
|
289
288
|
scanned_nodes << twisted_node
|
|
290
289
|
end
|
|
@@ -294,6 +293,12 @@ module RuboCop
|
|
|
294
293
|
skip_children!
|
|
295
294
|
end
|
|
296
295
|
|
|
296
|
+
def twisted_nodes(node)
|
|
297
|
+
twisted_nodes = [node.children[0]]
|
|
298
|
+
twisted_nodes << node.children[1] if node.class_type?
|
|
299
|
+
twisted_nodes.compact
|
|
300
|
+
end
|
|
301
|
+
|
|
297
302
|
def process_send(node)
|
|
298
303
|
_receiver, method_name, args = *node
|
|
299
304
|
return unless method_name == :binding
|
|
@@ -316,11 +321,13 @@ module RuboCop
|
|
|
316
321
|
# Non related references which are caught in the above scan
|
|
317
322
|
# would be skipped here.
|
|
318
323
|
next unless variable
|
|
324
|
+
|
|
319
325
|
variable.assignments.each do |assignment|
|
|
320
326
|
next if assignment_nodes_in_loop.none? do |assignment_node|
|
|
321
327
|
assignment_node.equal?(assignment.node)
|
|
322
328
|
end
|
|
323
|
-
|
|
329
|
+
|
|
330
|
+
assignment.reference!(node)
|
|
324
331
|
end
|
|
325
332
|
end
|
|
326
333
|
end
|
|
@@ -358,9 +365,7 @@ module RuboCop
|
|
|
358
365
|
AssignmentReference.new(node)
|
|
359
366
|
when *OPERATOR_ASSIGNMENT_TYPES
|
|
360
367
|
asgn_node = node.children.first
|
|
361
|
-
if asgn_node.lvasgn_type?
|
|
362
|
-
VariableReference.new(asgn_node.children.first)
|
|
363
|
-
end
|
|
368
|
+
VariableReference.new(asgn_node.children.first) if asgn_node.lvasgn_type?
|
|
364
369
|
end
|
|
365
370
|
end
|
|
366
371
|
|
|
@@ -432,7 +437,7 @@ module RuboCop
|
|
|
432
437
|
# (send nil :puts
|
|
433
438
|
# (lvar :foo)))
|
|
434
439
|
#
|
|
435
|
-
# So the
|
|
440
|
+
# So the method argument nodes need to be processed
|
|
436
441
|
# in current scope.
|
|
437
442
|
#
|
|
438
443
|
# Same thing.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Extensions to the core String class
|
|
4
|
+
class String
|
|
5
|
+
unless method_defined? :blank?
|
|
6
|
+
# Checks whether a string is blank. A string is considered blank if it
|
|
7
|
+
# is either empty or contains only whitespace characters.
|
|
8
|
+
#
|
|
9
|
+
# @return [Boolean] true is the string is blank, false otherwise
|
|
10
|
+
#
|
|
11
|
+
# @example
|
|
12
|
+
# ''.blank? #=> true
|
|
13
|
+
#
|
|
14
|
+
# @example
|
|
15
|
+
# ' '.blank? #=> true
|
|
16
|
+
#
|
|
17
|
+
# @example
|
|
18
|
+
# ' test'.blank? #=> false
|
|
19
|
+
def blank?
|
|
20
|
+
empty? || strip.empty?
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
data/lib/rubocop/error.rb
CHANGED
|
@@ -8,4 +8,27 @@ module RuboCop
|
|
|
8
8
|
class Error < StandardError; end
|
|
9
9
|
|
|
10
10
|
class ValidationError < Error; end
|
|
11
|
+
|
|
12
|
+
# A wrapper to display errored location of analyzed file.
|
|
13
|
+
class ErrorWithAnalyzedFileLocation < Error
|
|
14
|
+
def initialize(cause:, node:, cop:)
|
|
15
|
+
@cause = cause
|
|
16
|
+
@cop = cop
|
|
17
|
+
@location = node.is_a?(RuboCop::AST::Node) ? node.loc : node
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
attr_reader :cause, :cop
|
|
21
|
+
|
|
22
|
+
def line
|
|
23
|
+
@location&.line
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def column
|
|
27
|
+
@location&.column
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def message
|
|
31
|
+
"cause: #{cause.inspect}"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
11
34
|
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RuboCop
|
|
4
|
+
module Ext
|
|
5
|
+
# Extensions to AST::ProcessedSource for our cached comment_config
|
|
6
|
+
module ProcessedSource
|
|
7
|
+
def comment_config
|
|
8
|
+
@comment_config ||= CommentConfig.new(self)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def disabled_line_ranges
|
|
12
|
+
comment_config.cop_disabled_line_ranges
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
RuboCop::ProcessedSource.include RuboCop::Ext::ProcessedSource
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'pathname'
|
|
4
|
+
|
|
5
|
+
module RuboCop
|
|
6
|
+
# Common methods for finding files.
|
|
7
|
+
module FileFinder
|
|
8
|
+
def self.root_level=(level)
|
|
9
|
+
@root_level = level
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.root_level?(path)
|
|
13
|
+
@root_level == path.to_s
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def find_file_upwards(filename, start_dir)
|
|
17
|
+
traverse_files_upwards(filename, start_dir) do |file|
|
|
18
|
+
# minimize iteration for performance
|
|
19
|
+
return file if file
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def find_files_upwards(filename, start_dir)
|
|
24
|
+
files = []
|
|
25
|
+
traverse_files_upwards(filename, start_dir) do |file|
|
|
26
|
+
files << file
|
|
27
|
+
end
|
|
28
|
+
files
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def traverse_files_upwards(filename, start_dir)
|
|
34
|
+
Pathname.new(start_dir).expand_path.ascend do |dir|
|
|
35
|
+
break if FileFinder.root_level?(dir)
|
|
36
|
+
|
|
37
|
+
file = dir + filename
|
|
38
|
+
yield(file.to_s) if file.exist?
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RuboCop
|
|
4
|
+
module Formatter
|
|
5
|
+
# Does not show individual offenses in the console.
|
|
6
|
+
class AutoGenConfigFormatter < ProgressFormatter
|
|
7
|
+
def finished(inspected_files)
|
|
8
|
+
output.puts
|
|
9
|
+
|
|
10
|
+
report_summary(inspected_files.size,
|
|
11
|
+
@total_offense_count,
|
|
12
|
+
@total_correction_count)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# rubocop:disable Metrics/LineLength
|
|
4
|
-
|
|
5
3
|
module RuboCop
|
|
6
4
|
module Formatter
|
|
7
5
|
# Abstract base class for formatter, implements all public API methods.
|
|
@@ -9,7 +7,7 @@ module RuboCop
|
|
|
9
7
|
# ## Creating Custom Formatter
|
|
10
8
|
#
|
|
11
9
|
# You can create a custom formatter by subclassing
|
|
12
|
-
# `RuboCop::Formatter::BaseFormatter` and overriding some methods
|
|
10
|
+
# `RuboCop::Formatter::BaseFormatter` and overriding some methods
|
|
13
11
|
# or by implementing all the methods by duck typing.
|
|
14
12
|
#
|
|
15
13
|
# ## Using Custom Formatter in Command Line
|
|
@@ -25,7 +23,7 @@ module RuboCop
|
|
|
25
23
|
# `Kernel.require`.
|
|
26
24
|
# If your custom formatter file is not in `$LOAD_PATH`,
|
|
27
25
|
# you need to specify the path as relative path prefixed with `./`
|
|
28
|
-
# explicitly
|
|
26
|
+
# explicitly or absolute path.
|
|
29
27
|
#
|
|
30
28
|
# ## Method Invocation Order
|
|
31
29
|
#
|
|
@@ -41,8 +39,6 @@ module RuboCop
|
|
|
41
39
|
# * `#finished`
|
|
42
40
|
#
|
|
43
41
|
class BaseFormatter
|
|
44
|
-
# rubocop:enable Metrics/LineLength
|
|
45
|
-
|
|
46
42
|
# @api public
|
|
47
43
|
#
|
|
48
44
|
# @!attribute [r] output
|
|
@@ -109,7 +105,7 @@ module RuboCop
|
|
|
109
105
|
|
|
110
106
|
# @api public
|
|
111
107
|
#
|
|
112
|
-
# Invoked after all files are inspected
|
|
108
|
+
# Invoked after all files are inspected or interrupted by user.
|
|
113
109
|
#
|
|
114
110
|
# @param inspected_files [Array(String)]
|
|
115
111
|
# the inspected file paths.
|
|
@@ -6,7 +6,7 @@ module RuboCop
|
|
|
6
6
|
# The precise location of the problem is shown together with the
|
|
7
7
|
# relevant source code.
|
|
8
8
|
class ClangStyleFormatter < SimpleTextFormatter
|
|
9
|
-
ELLIPSES = '...'
|
|
9
|
+
ELLIPSES = '...'
|
|
10
10
|
|
|
11
11
|
def report_file(file, offenses)
|
|
12
12
|
offenses.each { |offense| report_offense(file, offense) }
|
|
@@ -15,11 +15,15 @@ module RuboCop
|
|
|
15
15
|
private
|
|
16
16
|
|
|
17
17
|
def report_offense(file, offense)
|
|
18
|
-
output.printf(
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
output.printf(
|
|
19
|
+
"%<path>s:%<line>d:%<column>d: %<severity>s: %<message>s\n",
|
|
20
|
+
path: cyan(smart_path(file)),
|
|
21
|
+
line: offense.line,
|
|
22
|
+
column: offense.real_column,
|
|
23
|
+
severity: colored_severity_code(offense),
|
|
24
|
+
message: message(offense)
|
|
25
|
+
)
|
|
21
26
|
|
|
22
|
-
# rubocop:disable Lint/HandleExceptions
|
|
23
27
|
begin
|
|
24
28
|
return unless valid_line?(offense)
|
|
25
29
|
|
|
@@ -28,7 +32,6 @@ module RuboCop
|
|
|
28
32
|
rescue IndexError
|
|
29
33
|
# range is not on a valid line; perhaps the source file is empty
|
|
30
34
|
end
|
|
31
|
-
# rubocop:enable Lint/HandleExceptions
|
|
32
35
|
end
|
|
33
36
|
|
|
34
37
|
def valid_line?(offense)
|