rubocop 0.50.0 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -6
- data/config/default.yml +20 -11
- data/config/enabled.yml +44 -7
- data/lib/rubocop.rb +526 -514
- data/lib/rubocop/ast/node.rb +9 -9
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +2 -2
- data/lib/rubocop/ast/node/send_node.rb +4 -0
- data/lib/rubocop/cached_data.rb +1 -6
- data/lib/rubocop/cli.rb +7 -6
- data/lib/rubocop/config.rb +58 -22
- data/lib/rubocop/config_loader.rb +37 -21
- data/lib/rubocop/config_loader_resolver.rb +3 -2
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +5 -3
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +4 -2
- data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -53
- data/lib/rubocop/cop/commissioner.rb +1 -4
- data/lib/rubocop/cop/cop.rb +50 -17
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +96 -0
- data/lib/rubocop/cop/generator.rb +8 -3
- data/lib/rubocop/cop/internal_affairs.rb +6 -5
- data/lib/rubocop/cop/internal_affairs/deprecated_positional_arguments.rb +81 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +21 -11
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +27 -14
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +38 -16
- data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
- data/lib/rubocop/cop/layout/block_end_newline.rb +1 -1
- data/lib/rubocop/cop/layout/case_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/comment_indentation.rb +4 -2
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +5 -2
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
- data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +2 -2
- data/lib/rubocop/cop/layout/indent_array.rb +1 -1
- data/lib/rubocop/cop/layout/indent_hash.rb +1 -1
- data/lib/rubocop/cop/layout/indent_heredoc.rb +2 -2
- data/lib/rubocop/cop/layout/indentation_width.rb +7 -5
- data/lib/rubocop/cop/layout/initial_indentation.rb +3 -2
- data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +2 -2
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -1
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -1
- data/lib/rubocop/cop/layout/space_after_colon.rb +2 -2
- data/lib/rubocop/cop/layout/space_after_method_name.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -2
- data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_keyword.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_operators.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +4 -4
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -1
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +6 -2
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +5 -2
- data/lib/rubocop/cop/layout/space_inside_parens.rb +9 -0
- data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +1 -1
- data/lib/rubocop/cop/layout/tab.rb +5 -2
- data/lib/rubocop/cop/layout/trailing_blank_lines.rb +4 -2
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +1 -1
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -1
- data/lib/rubocop/cop/lint/block_alignment.rb +1 -1
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +3 -14
- data/lib/rubocop/cop/lint/debugger.rb +7 -7
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +4 -4
- data/lib/rubocop/cop/lint/duplicate_methods.rb +5 -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_when.rb +1 -1
- data/lib/rubocop/cop/lint/end_in_method.rb +1 -1
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +1 -1
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +4 -3
- data/lib/rubocop/cop/lint/interpolation_check.rb +2 -1
- data/lib/rubocop/cop/lint/{literal_in_condition.rb → literal_as_condition.rb} +19 -5
- data/lib/rubocop/cop/lint/loop.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +3 -2
- data/lib/rubocop/cop/lint/percent_string_array.rb +1 -1
- data/lib/rubocop/cop/lint/rand_one.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_with_object.rb +81 -0
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +29 -0
- data/lib/rubocop/cop/lint/require_parentheses.rb +1 -1
- data/lib/rubocop/cop/lint/rescue_type.rb +5 -3
- data/lib/rubocop/cop/lint/rescue_without_error_class.rb +6 -3
- data/lib/rubocop/cop/lint/return_in_void_context.rb +24 -13
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
- data/lib/rubocop/cop/lint/script_permission.rb +1 -1
- data/lib/rubocop/cop/lint/shadowed_exception.rb +37 -10
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -1
- data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/syntax.rb +8 -2
- data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -1
- data/lib/rubocop/cop/lint/unified_integer.rb +2 -2
- data/lib/rubocop/cop/lint/unneeded_disable.rb +11 -4
- data/lib/rubocop/cop/lint/unneeded_require_statement.rb +50 -0
- data/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +2 -2
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -1
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +2 -2
- data/lib/rubocop/cop/lint/uri_regexp.rb +3 -3
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +9 -9
- data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/useless_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +5 -1
- data/lib/rubocop/cop/lint/void.rb +10 -5
- data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
- data/lib/rubocop/cop/metrics/line_length.rb +4 -1
- data/lib/rubocop/cop/metrics/parameter_lists.rb +1 -2
- data/lib/rubocop/cop/mixin/array_hash_indentation.rb +3 -2
- data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +1 -1
- data/lib/rubocop/cop/mixin/code_length.rb +1 -1
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -1
- data/lib/rubocop/cop/mixin/def_node.rb +1 -1
- data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +7 -2
- data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -1
- data/lib/rubocop/cop/mixin/enforce_superclass.rb +1 -1
- data/lib/rubocop/cop/mixin/heredoc.rb +1 -1
- data/lib/rubocop/cop/mixin/method_complexity.rb +3 -4
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +1 -1
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +10 -4
- data/lib/rubocop/cop/mixin/ordered_gem_node.rb +63 -0
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +4 -1
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -1
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +2 -1
- data/lib/rubocop/cop/mixin/space_inside.rb +1 -1
- data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
- data/lib/rubocop/cop/mixin/trailing_comma.rb +5 -5
- data/lib/rubocop/cop/mixin/unused_argument.rb +43 -2
- data/lib/rubocop/cop/naming/accessor_method_name.rb +8 -7
- data/lib/rubocop/cop/naming/ascii_identifiers.rb +1 -1
- data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/naming/constant_name.rb +1 -1
- data/lib/rubocop/cop/naming/file_name.rb +1 -1
- data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +1 -1
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +3 -2
- data/lib/rubocop/cop/naming/predicate_name.rb +36 -5
- data/lib/rubocop/cop/performance/caller.rb +2 -2
- data/lib/rubocop/cop/performance/case_when_splat.rb +1 -1
- data/lib/rubocop/cop/performance/casecmp.rb +1 -1
- data/lib/rubocop/cop/performance/compare_with_block.rb +6 -2
- data/lib/rubocop/cop/performance/count.rb +3 -1
- data/lib/rubocop/cop/performance/detect.rb +4 -4
- data/lib/rubocop/cop/performance/double_start_end_with.rb +6 -9
- data/lib/rubocop/cop/performance/end_with.rb +1 -1
- data/lib/rubocop/cop/performance/flat_map.rb +3 -1
- data/lib/rubocop/cop/performance/hash_each_methods.rb +13 -10
- data/lib/rubocop/cop/performance/lstrip_rstrip.rb +3 -1
- data/lib/rubocop/cop/performance/range_include.rb +1 -1
- data/lib/rubocop/cop/performance/redundant_block_call.rb +1 -1
- data/lib/rubocop/cop/performance/redundant_match.rb +6 -5
- data/lib/rubocop/cop/performance/redundant_merge.rb +1 -1
- data/lib/rubocop/cop/performance/redundant_sort_by.rb +4 -1
- data/lib/rubocop/cop/performance/regexp_match.rb +4 -4
- data/lib/rubocop/cop/performance/reverse_each.rb +1 -1
- data/lib/rubocop/cop/performance/sample.rb +1 -1
- data/lib/rubocop/cop/performance/size.rb +1 -1
- data/lib/rubocop/cop/performance/start_with.rb +1 -1
- data/lib/rubocop/cop/performance/string_replacement.rb +2 -2
- data/lib/rubocop/cop/performance/times_map.rb +3 -3
- data/lib/rubocop/cop/performance/unfreeze_string.rb +2 -2
- data/lib/rubocop/cop/performance/uri_default_parser.rb +2 -2
- data/lib/rubocop/cop/rails/action_filter.rb +1 -1
- data/lib/rubocop/cop/rails/active_support_aliases.rb +1 -2
- data/lib/rubocop/cop/rails/application_job.rb +1 -1
- data/lib/rubocop/cop/rails/application_record.rb +1 -1
- data/lib/rubocop/cop/rails/blank.rb +20 -17
- data/lib/rubocop/cop/rails/date.rb +7 -6
- data/lib/rubocop/cop/rails/delegate.rb +1 -1
- data/lib/rubocop/cop/rails/delegate_allow_blank.rb +1 -1
- data/lib/rubocop/cop/rails/dynamic_find_by.rb +2 -2
- data/lib/rubocop/cop/rails/enum_uniqueness.rb +2 -2
- data/lib/rubocop/cop/rails/exit.rb +1 -1
- data/lib/rubocop/cop/rails/file_path.rb +6 -8
- data/lib/rubocop/cop/rails/find_by.rb +2 -1
- data/lib/rubocop/cop/rails/find_each.rb +1 -1
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +1 -1
- data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +35 -11
- data/lib/rubocop/cop/rails/http_positional_arguments.rb +3 -2
- data/lib/rubocop/cop/rails/not_null_column.rb +5 -5
- data/lib/rubocop/cop/rails/output.rb +2 -2
- data/lib/rubocop/cop/rails/output_safety.rb +2 -1
- data/lib/rubocop/cop/rails/present.rb +14 -17
- data/lib/rubocop/cop/rails/read_write_attribute.rb +3 -3
- data/lib/rubocop/cop/rails/relative_date_constant.rb +1 -1
- data/lib/rubocop/cop/rails/request_referer.rb +2 -2
- data/lib/rubocop/cop/rails/reversible_migration.rb +21 -19
- data/lib/rubocop/cop/rails/safe_navigation.rb +2 -2
- data/lib/rubocop/cop/rails/save_bang.rb +12 -12
- data/lib/rubocop/cop/rails/scope_args.rb +1 -1
- data/lib/rubocop/cop/rails/skips_model_validations.rb +2 -2
- data/lib/rubocop/cop/rails/time_zone.rb +3 -2
- data/lib/rubocop/cop/rails/uniq_before_pluck.rb +3 -1
- data/lib/rubocop/cop/rails/unknown_env.rb +63 -0
- data/lib/rubocop/cop/rails/validation.rb +1 -1
- data/lib/rubocop/cop/registry.rb +2 -1
- data/lib/rubocop/cop/security/eval.rb +2 -2
- data/lib/rubocop/cop/security/json_load.rb +2 -2
- data/lib/rubocop/cop/security/marshal_load.rb +3 -3
- data/lib/rubocop/cop/security/yaml_load.rb +2 -2
- data/lib/rubocop/cop/style/alias.rb +3 -3
- data/lib/rubocop/cop/style/and_or.rb +1 -1
- data/lib/rubocop/cop/style/array_join.rb +1 -1
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
- data/lib/rubocop/cop/style/attr.rb +1 -1
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -2
- data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
- data/lib/rubocop/cop/style/begin_block.rb +1 -1
- data/lib/rubocop/cop/style/block_delimiters.rb +1 -1
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +22 -19
- data/lib/rubocop/cop/style/case_equality.rb +1 -1
- data/lib/rubocop/cop/style/class_and_module_children.rb +2 -2
- data/lib/rubocop/cop/style/class_check.rb +1 -1
- data/lib/rubocop/cop/style/class_methods.rb +2 -1
- data/lib/rubocop/cop/style/class_vars.rb +1 -1
- data/lib/rubocop/cop/style/collection_methods.rb +1 -1
- data/lib/rubocop/cop/style/colon_method_call.rb +2 -2
- data/lib/rubocop/cop/style/comment_annotation.rb +5 -2
- data/lib/rubocop/cop/style/commented_keyword.rb +81 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +1 -1
- data/lib/rubocop/cop/style/copyright.rb +1 -1
- data/lib/rubocop/cop/style/date_time.rb +44 -0
- data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/dir.rb +2 -6
- data/lib/rubocop/cop/style/documentation.rb +1 -1
- data/lib/rubocop/cop/style/double_negation.rb +1 -1
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
- data/lib/rubocop/cop/style/each_with_object.rb +2 -1
- data/lib/rubocop/cop/style/empty_case_condition.rb +1 -1
- data/lib/rubocop/cop/style/empty_else.rb +2 -2
- data/lib/rubocop/cop/style/empty_literal.rb +9 -9
- data/lib/rubocop/cop/style/encoding.rb +7 -51
- data/lib/rubocop/cop/style/end_block.rb +1 -1
- data/lib/rubocop/cop/style/even_odd.rb +1 -1
- data/lib/rubocop/cop/style/for.rb +6 -2
- data/lib/rubocop/cop/style/format_string.rb +4 -3
- data/lib/rubocop/cop/style/format_string_token.rb +2 -1
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -3
- data/lib/rubocop/cop/style/global_vars.rb +1 -1
- data/lib/rubocop/cop/style/guard_clause.rb +2 -2
- data/lib/rubocop/cop/style/hash_syntax.rb +2 -3
- data/lib/rubocop/cop/style/if_inside_else.rb +1 -1
- data/lib/rubocop/cop/style/if_unless_modifier.rb +2 -1
- data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +2 -1
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +2 -2
- data/lib/rubocop/cop/style/infinite_loop.rb +2 -2
- data/lib/rubocop/cop/style/inverse_methods.rb +4 -6
- data/lib/rubocop/cop/style/lambda.rb +3 -3
- data/lib/rubocop/cop/style/line_end_concatenation.rb +1 -1
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +1 -1
- data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -2
- data/lib/rubocop/cop/style/min_max.rb +2 -1
- data/lib/rubocop/cop/style/mixin_usage.rb +73 -0
- data/lib/rubocop/cop/style/module_function.rb +2 -2
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
- data/lib/rubocop/cop/style/multiline_if_then.rb +2 -1
- data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
- data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +3 -1
- data/lib/rubocop/cop/style/next.rb +2 -1
- data/lib/rubocop/cop/style/nil_comparison.rb +2 -2
- data/lib/rubocop/cop/style/non_nil_check.rb +2 -2
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +2 -2
- data/lib/rubocop/cop/style/option_hash.rb +0 -11
- data/lib/rubocop/cop/style/or_assignment.rb +1 -1
- data/lib/rubocop/cop/style/parallel_assignment.rb +1 -1
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
- data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +4 -4
- data/lib/rubocop/cop/style/redundant_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/redundant_return.rb +1 -1
- data/lib/rubocop/cop/style/regexp_literal.rb +2 -2
- data/lib/rubocop/cop/style/return_nil.rb +2 -7
- data/lib/rubocop/cop/style/safe_navigation.rb +27 -30
- data/lib/rubocop/cop/style/self_assignment.rb +2 -2
- data/lib/rubocop/cop/style/semicolon.rb +1 -1
- data/lib/rubocop/cop/style/send.rb +1 -1
- data/lib/rubocop/cop/style/signal_exception.rb +4 -3
- data/lib/rubocop/cop/style/stderr_puts.rb +52 -0
- data/lib/rubocop/cop/style/string_literals.rb +4 -3
- data/lib/rubocop/cop/style/string_methods.rb +1 -1
- data/lib/rubocop/cop/style/struct_inheritance.rb +3 -3
- data/lib/rubocop/cop/style/symbol_array.rb +1 -5
- data/lib/rubocop/cop/style/symbol_proc.rb +5 -5
- data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +46 -23
- data/lib/rubocop/cop/style/trivial_accessors.rb +3 -1
- data/lib/rubocop/cop/style/variable_interpolation.rb +0 -2
- data/lib/rubocop/cop/style/when_then.rb +1 -1
- data/lib/rubocop/cop/style/while_until_do.rb +2 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +2 -1
- data/lib/rubocop/cop/style/word_array.rb +2 -2
- data/lib/rubocop/cop/style/zero_length_predicate.rb +4 -4
- data/lib/rubocop/cop/util.rb +1 -12
- data/lib/rubocop/formatter/html_formatter.rb +1 -1
- data/lib/rubocop/formatter/simple_text_formatter.rb +2 -2
- data/lib/rubocop/node_pattern.rb +1 -1
- data/lib/rubocop/options.rb +4 -0
- data/lib/rubocop/processed_source.rb +2 -8
- data/lib/rubocop/rake_task.rb +16 -23
- data/lib/rubocop/remote_config.rb +8 -0
- data/lib/rubocop/rspec/shared_contexts.rb +0 -8
- data/lib/rubocop/rspec/support.rb +5 -5
- data/lib/rubocop/version.rb +1 -1
- metadata +40 -30
- data/lib/rubocop/cop/lint/invalid_character_literal.rb +0 -41
@@ -48,12 +48,12 @@ module RuboCop
|
|
48
48
|
|
49
49
|
def check_nested_style(node)
|
50
50
|
return unless compact_node_name?(node)
|
51
|
-
add_offense(node, :name, NESTED_MSG)
|
51
|
+
add_offense(node, location: :name, message: NESTED_MSG)
|
52
52
|
end
|
53
53
|
|
54
54
|
def check_compact_style(node, body)
|
55
55
|
return unless one_child?(body) && !compact_node_name?(node)
|
56
|
-
add_offense(node, :name, COMPACT_MSG)
|
56
|
+
add_offense(node, location: :name, message: COMPACT_MSG)
|
57
57
|
end
|
58
58
|
|
59
59
|
def one_child?(body)
|
@@ -51,7 +51,8 @@ module RuboCop
|
|
51
51
|
return unless name == definee
|
52
52
|
|
53
53
|
_, class_name = *definee
|
54
|
-
add_offense(definee, :name,
|
54
|
+
add_offense(definee, location: :name,
|
55
|
+
message: message(class_name, method_name))
|
55
56
|
end
|
56
57
|
|
57
58
|
def message(class_name, method_name)
|
@@ -10,7 +10,7 @@ module RuboCop
|
|
10
10
|
|
11
11
|
def_node_matcher :java_type_node?, <<-PATTERN
|
12
12
|
(send
|
13
|
-
(const nil :Java)
|
13
|
+
(const nil? :Java)
|
14
14
|
{:boolean :byte :char :double :float :int :long :short})
|
15
15
|
PATTERN
|
16
16
|
|
@@ -21,7 +21,7 @@ module RuboCop
|
|
21
21
|
return unless node.receiver && node.double_colon?
|
22
22
|
return if node.camel_case_method?
|
23
23
|
|
24
|
-
add_offense(node, :dot)
|
24
|
+
add_offense(node, location: :dot)
|
25
25
|
end
|
26
26
|
|
27
27
|
def autocorrect(node)
|
@@ -23,8 +23,11 @@ module RuboCop
|
|
23
23
|
!correct_annotation?(first_word, colon, space, note)
|
24
24
|
|
25
25
|
length = concat_length(first_word, colon, space)
|
26
|
-
add_offense(
|
27
|
-
|
26
|
+
add_offense(
|
27
|
+
comment,
|
28
|
+
location: annotation_range(comment, margin, length),
|
29
|
+
message: format(note ? MSG : MISSING_NOTE, first_word)
|
30
|
+
)
|
28
31
|
end
|
29
32
|
end
|
30
33
|
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cop checks for comments put on the same line as some keywords.
|
7
|
+
# These keywords are: `begin`, `class`, `def`, `end`, `module`.
|
8
|
+
#
|
9
|
+
# Note that some comments (such as `:nodoc:` and `rubocop:disable`) are
|
10
|
+
# allowed.
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# # bad
|
14
|
+
# if condition
|
15
|
+
# statement
|
16
|
+
# end # end if
|
17
|
+
#
|
18
|
+
# # bad
|
19
|
+
# class X # comment
|
20
|
+
# statement
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# # bad
|
24
|
+
# def x; end # comment
|
25
|
+
#
|
26
|
+
# # good
|
27
|
+
# if condition
|
28
|
+
# statement
|
29
|
+
# end
|
30
|
+
#
|
31
|
+
# # good
|
32
|
+
# class x # :nodoc:
|
33
|
+
# y
|
34
|
+
# end
|
35
|
+
class CommentedKeyword < Cop
|
36
|
+
MSG = 'Do not place comments on the same line as the ' \
|
37
|
+
'`%s` keyword.'.freeze
|
38
|
+
|
39
|
+
def investigate(processed_source)
|
40
|
+
heredoc_lines = extract_heredoc_lines(processed_source.ast)
|
41
|
+
|
42
|
+
processed_source.lines.each_with_index do |line, index|
|
43
|
+
next if heredoc_lines.any? { |r| r.include?(index + 1) }
|
44
|
+
next unless offensive?(line)
|
45
|
+
|
46
|
+
range = source_range(processed_source.buffer,
|
47
|
+
index + 1,
|
48
|
+
(line.index('#'))...(line.length))
|
49
|
+
|
50
|
+
add_offense(range, location: range)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
KEYWORDS = %w[begin class def end module].freeze
|
57
|
+
ALLOWED_COMMENTS = %w[:nodoc: rubocop:disable].freeze
|
58
|
+
|
59
|
+
def offensive?(line)
|
60
|
+
KEYWORDS.any? { |k| line =~ /^\s*#{k}\s+.*#/ } &&
|
61
|
+
ALLOWED_COMMENTS.none? { |c| line =~ /#\s*#{c}/ }
|
62
|
+
end
|
63
|
+
|
64
|
+
def message(node)
|
65
|
+
line = node.source_line
|
66
|
+
keyword = /^\s*(\S+).*#/.match(line)[1]
|
67
|
+
format(MSG, keyword)
|
68
|
+
end
|
69
|
+
|
70
|
+
def extract_heredoc_lines(ast)
|
71
|
+
return [] unless ast
|
72
|
+
ast.each_node.with_object([]) do |node, heredocs|
|
73
|
+
next unless node.location.is_a?(Parser::Source::Map::Heredoc)
|
74
|
+
body = node.location.heredoc_body
|
75
|
+
heredocs << (body.first_line...body.last_line)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -283,7 +283,7 @@ module RuboCop
|
|
283
283
|
return unless else_branch
|
284
284
|
return if allowed_single_line?([*branches, else_branch])
|
285
285
|
|
286
|
-
add_offense(node, :
|
286
|
+
add_offense(node, message: ASSIGN_TO_CONDITION_MSG)
|
287
287
|
end
|
288
288
|
|
289
289
|
def candidate_node?(node)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cop checks for uses of `DateTime` that should be replaced by
|
7
|
+
# `Date` or `Time`.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
#
|
11
|
+
# # bad - uses `DateTime` for current time
|
12
|
+
# DateTime.now
|
13
|
+
#
|
14
|
+
# # good - uses `Time` for current time
|
15
|
+
# Time.now
|
16
|
+
#
|
17
|
+
# # bad - uses `DateTime` for modern date
|
18
|
+
# DateTime.iso8601('2016-06-29')
|
19
|
+
#
|
20
|
+
# # good - uses `Date` for modern date
|
21
|
+
# Date.iso8601('2016-06-29')
|
22
|
+
#
|
23
|
+
# # good - uses `DateTime` with start argument for historical date
|
24
|
+
# DateTime.iso8601('1751-04-23', Date::ENGLAND)
|
25
|
+
class DateTime < Cop
|
26
|
+
MSG = 'Prefer Date or Time over DateTime.'.freeze
|
27
|
+
|
28
|
+
def_node_matcher :date_time?, <<-PATTERN
|
29
|
+
(send (const _ :DateTime) ...)
|
30
|
+
PATTERN
|
31
|
+
|
32
|
+
def_node_matcher :historic_date?, <<-PATTERN
|
33
|
+
(send _ _ _ (const (const _ :Date) _))
|
34
|
+
PATTERN
|
35
|
+
|
36
|
+
def on_send(node)
|
37
|
+
return unless date_time?(node)
|
38
|
+
return if historic_date?(node)
|
39
|
+
add_offense(node)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -17,18 +17,14 @@ module RuboCop
|
|
17
17
|
# # good
|
18
18
|
# path = __dir__
|
19
19
|
class Dir < Cop
|
20
|
-
extend TargetRubyVersion
|
21
|
-
|
22
20
|
MSG = 'Use `__dir__` to get an absolute path to the current ' \
|
23
21
|
"file's directory.".freeze
|
24
22
|
|
25
23
|
def_node_matcher :dir_replacement?, <<-PATTERN
|
26
|
-
{(send (const nil :File) :expand_path (send (const nil :File) :dirname #file_keyword?))
|
27
|
-
(send (const nil :File) :dirname (send (const nil :File) :realpath #file_keyword?))}
|
24
|
+
{(send (const nil? :File) :expand_path (send (const nil? :File) :dirname #file_keyword?))
|
25
|
+
(send (const nil? :File) :dirname (send (const nil? :File) :realpath #file_keyword?))}
|
28
26
|
PATTERN
|
29
27
|
|
30
|
-
minimum_target_ruby_version 2.0
|
31
|
-
|
32
28
|
def on_send(node)
|
33
29
|
dir_replacement?(node) do
|
34
30
|
add_offense(node)
|
@@ -38,7 +38,7 @@ module RuboCop
|
|
38
38
|
return if namespace?(body)
|
39
39
|
return if documentation_comment?(node) || nodoc_comment?(node)
|
40
40
|
|
41
|
-
add_offense(node, :keyword, format(MSG, type))
|
41
|
+
add_offense(node, location: :keyword, message: format(MSG, type))
|
42
42
|
end
|
43
43
|
|
44
44
|
def namespace?(node)
|
@@ -34,7 +34,8 @@ module RuboCop
|
|
34
34
|
return unless first_argument_returned?(args, return_value)
|
35
35
|
return if accumulator_param_assigned_to?(body, args)
|
36
36
|
|
37
|
-
add_offense(node, method.loc.selector,
|
37
|
+
add_offense(node, location: method.loc.selector,
|
38
|
+
message: format(MSG, method_name))
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
@@ -101,13 +101,13 @@ module RuboCop
|
|
101
101
|
def empty_check(node)
|
102
102
|
return unless node.else? && !node.else_branch
|
103
103
|
|
104
|
-
add_offense(node, :else)
|
104
|
+
add_offense(node, location: :else)
|
105
105
|
end
|
106
106
|
|
107
107
|
def nil_check(node)
|
108
108
|
return unless node.else_branch && node.else_branch.nil_type?
|
109
109
|
|
110
|
-
add_offense(node, :else)
|
110
|
+
add_offense(node, location: :else)
|
111
111
|
end
|
112
112
|
|
113
113
|
def autocorrect(node)
|
@@ -12,23 +12,23 @@ module RuboCop
|
|
12
12
|
HASH_MSG = 'Use hash literal `{}` instead of `Hash.new`.'.freeze
|
13
13
|
STR_MSG = 'Use string literal `%s` instead of `String.new`.'.freeze
|
14
14
|
|
15
|
-
def_node_matcher :array_node, '(send (const nil :Array) :new)'
|
16
|
-
def_node_matcher :hash_node, '(send (const nil :Hash) :new)'
|
17
|
-
def_node_matcher :str_node, '(send (const nil :String) :new)'
|
15
|
+
def_node_matcher :array_node, '(send (const nil? :Array) :new)'
|
16
|
+
def_node_matcher :hash_node, '(send (const nil? :Hash) :new)'
|
17
|
+
def_node_matcher :str_node, '(send (const nil? :String) :new)'
|
18
18
|
def_node_matcher :array_with_block,
|
19
|
-
'(block (send (const nil :Array) :new) args _)'
|
19
|
+
'(block (send (const nil? :Array) :new) args _)'
|
20
20
|
def_node_matcher :hash_with_block,
|
21
|
-
'(block (send (const nil :Hash) :new) args _)'
|
21
|
+
'(block (send (const nil? :Hash) :new) args _)'
|
22
22
|
|
23
23
|
def on_send(node)
|
24
|
-
add_offense(node, :
|
25
|
-
add_offense(node, :
|
24
|
+
add_offense(node, message: ARR_MSG) if offense_array_node?(node)
|
25
|
+
add_offense(node, message: HASH_MSG) if offense_hash_node?(node)
|
26
26
|
|
27
27
|
str_node(node) do
|
28
28
|
return if frozen_string_literals_enabled?
|
29
29
|
|
30
|
-
add_offense(node,
|
31
|
-
format(STR_MSG, preferred_string_literal))
|
30
|
+
add_offense(node,
|
31
|
+
message: format(STR_MSG, preferred_string_literal))
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -3,23 +3,10 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module Style
|
6
|
-
# This cop checks
|
7
|
-
# comment or not.
|
8
|
-
# Setting this check to "always" and "when_needed" makes sense only
|
9
|
-
# for code that should support Ruby 1.9, since in 2.0+ utf-8 is the
|
10
|
-
# default source file encoding. There are three styles:
|
11
|
-
#
|
12
|
-
# when_needed - only enforce an encoding comment if there are non ASCII
|
13
|
-
# characters, otherwise report an offense
|
14
|
-
# always - enforce encoding comment in all files
|
15
|
-
# never - enforce no encoding comment in all files
|
6
|
+
# This cop checks ensures source files have no utf-8 encoding comments.
|
16
7
|
class Encoding < Cop
|
17
|
-
include ConfigurableEnforcedStyle
|
18
|
-
|
19
|
-
MSG_MISSING = 'Missing utf-8 encoding comment.'.freeze
|
20
8
|
MSG_UNNECESSARY = 'Unnecessary utf-8 encoding comment.'.freeze
|
21
9
|
ENCODING_PATTERN = /#.*coding\s?[:=]\s?(?:UTF|utf)-8/
|
22
|
-
AUTO_CORRECT_ENCODING_COMMENT = 'AutoCorrectEncodingComment'.freeze
|
23
10
|
SHEBANG = '#!'.freeze
|
24
11
|
|
25
12
|
def investigate(processed_source)
|
@@ -29,56 +16,25 @@ module RuboCop
|
|
29
16
|
return unless (@message = offense(processed_source, line_number))
|
30
17
|
|
31
18
|
range = processed_source.buffer.line_range(line_number + 1)
|
32
|
-
add_offense(range, range, @message)
|
19
|
+
add_offense(range, location: range, message: @message)
|
33
20
|
end
|
34
21
|
|
35
22
|
def autocorrect(range)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
lambda do |corrector|
|
40
|
-
corrector.insert_before(range, "#{encoding}\n")
|
41
|
-
end
|
42
|
-
else
|
43
|
-
# Need to remove unnecessary encoding comment
|
44
|
-
lambda do |corrector|
|
45
|
-
corrector.remove(range_with_surrounding_space(range, :right))
|
46
|
-
end
|
23
|
+
lambda do |corrector|
|
24
|
+
corrector.remove(range_with_surrounding_space(range, :right))
|
47
25
|
end
|
48
26
|
end
|
49
27
|
|
50
28
|
private
|
51
29
|
|
52
|
-
def encoding
|
53
|
-
cop_config[AUTO_CORRECT_ENCODING_COMMENT]
|
54
|
-
end
|
55
|
-
|
56
|
-
def matching_encoding?
|
57
|
-
encoding =~ ENCODING_PATTERN
|
58
|
-
end
|
59
|
-
|
60
|
-
def encoding_mismatch_message
|
61
|
-
"#{encoding} does not match #{ENCODING_PATTERN}"
|
62
|
-
end
|
63
|
-
|
64
30
|
def offense(processed_source, line_number)
|
65
31
|
line = processed_source[line_number]
|
66
32
|
|
67
|
-
if
|
68
|
-
MSG_MISSING
|
69
|
-
elsif encoding_present?(line) && encoding_omitable?
|
70
|
-
MSG_UNNECESSARY
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def encoding_present?(line)
|
75
|
-
MagicComment.parse(line).encoding
|
33
|
+
MSG_UNNECESSARY if encoding_omitable?(line)
|
76
34
|
end
|
77
35
|
|
78
|
-
def encoding_omitable?
|
79
|
-
|
80
|
-
|
81
|
-
style != :always && processed_source.buffer.source.ascii_only?
|
36
|
+
def encoding_omitable?(line)
|
37
|
+
line =~ ENCODING_PATTERN
|
82
38
|
end
|
83
39
|
|
84
40
|
def encoding_line_number(processed_source)
|