rubocop 0.18.1 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubocop might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.md +65 -1
- data/Gemfile +0 -3
- data/LICENSE.txt +1 -1
- data/README.md +179 -77
- data/Rakefile +8 -0
- data/config/default.yml +151 -14
- data/config/enabled.yml +65 -8
- data/lib/rubocop.rb +19 -4
- data/lib/rubocop/cli.rb +2 -1
- data/lib/rubocop/comment_config.rb +97 -0
- data/lib/rubocop/config.rb +1 -1
- data/lib/rubocop/config_loader.rb +3 -2
- data/lib/rubocop/config_store.rb +6 -2
- data/lib/rubocop/cop/commissioner.rb +2 -2
- data/lib/rubocop/cop/cop.rb +22 -26
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +2 -2
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -1
- data/lib/rubocop/cop/lint/block_alignment.rb +6 -6
- data/lib/rubocop/cop/lint/condition_position.rb +1 -1
- data/lib/rubocop/cop/lint/debugger.rb +1 -1
- data/lib/rubocop/cop/lint/deprecated_class_methods.rb +60 -0
- data/lib/rubocop/cop/lint/else_layout.rb +1 -1
- data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
- data/lib/rubocop/cop/lint/end_alignment.rb +14 -12
- data/lib/rubocop/cop/lint/end_in_method.rb +1 -1
- data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
- data/lib/rubocop/cop/lint/eval.rb +1 -1
- data/lib/rubocop/cop/lint/handle_exceptions.rb +1 -1
- data/lib/rubocop/cop/lint/literal_in_condition.rb +13 -2
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +28 -0
- data/lib/rubocop/cop/lint/loop.rb +4 -4
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
- data/lib/rubocop/cop/lint/require_parentheses.rb +6 -6
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +2 -2
- data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +30 -0
- data/lib/rubocop/cop/lint/syntax.rb +5 -5
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/useless_assignment.rb +5 -5
- data/lib/rubocop/cop/lint/useless_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
- data/lib/rubocop/cop/lint/void.rb +5 -5
- data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +8 -5
- data/lib/rubocop/cop/mixin/code_length.rb +2 -2
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +7 -7
- data/lib/rubocop/cop/mixin/configurable_max.rb +1 -1
- data/lib/rubocop/cop/mixin/configurable_naming.rb +1 -1
- data/lib/rubocop/cop/mixin/if_then_else.rb +1 -1
- data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -1
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +2 -2
- data/lib/rubocop/cop/mixin/space_after_punctuation.rb +3 -2
- data/lib/rubocop/cop/mixin/space_inside.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -0
- data/lib/rubocop/cop/mixin/string_help.rb +4 -4
- data/lib/rubocop/cop/{offence.rb → offense.rb} +7 -7
- data/lib/rubocop/cop/rails/action_filter.rb +73 -0
- data/lib/rubocop/cop/rails/default_scope.rb +1 -1
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +1 -1
- data/lib/rubocop/cop/rails/output.rb +1 -10
- data/lib/rubocop/cop/rails/read_attribute.rb +1 -1
- data/lib/rubocop/cop/rails/scope_args.rb +33 -0
- data/lib/rubocop/cop/rails/validation.rb +1 -1
- data/lib/rubocop/cop/style/access_modifier_indentation.rb +1 -1
- data/lib/rubocop/cop/style/accessor_method_name.rb +2 -2
- data/lib/rubocop/cop/style/alias.rb +2 -2
- data/lib/rubocop/cop/style/align_array.rb +1 -1
- data/lib/rubocop/cop/style/align_hash.rb +29 -2
- data/lib/rubocop/cop/style/align_parameters.rb +16 -2
- data/lib/rubocop/cop/style/and_or.rb +2 -2
- data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
- data/lib/rubocop/cop/style/ascii_identifiers.rb +1 -1
- data/lib/rubocop/cop/style/attr.rb +1 -1
- data/lib/rubocop/cop/style/begin_block.rb +1 -1
- data/lib/rubocop/cop/style/block_comments.rb +1 -1
- data/lib/rubocop/cop/style/block_nesting.rb +1 -1
- data/lib/rubocop/cop/style/blocks.rb +2 -2
- data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +2 -2
- data/lib/rubocop/cop/style/case_equality.rb +1 -1
- data/lib/rubocop/cop/style/case_indentation.rb +2 -2
- data/lib/rubocop/cop/style/character_literal.rb +2 -2
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/style/class_and_module_children.rb +69 -0
- data/lib/rubocop/cop/style/class_methods.rb +1 -1
- data/lib/rubocop/cop/style/class_vars.rb +3 -3
- data/lib/rubocop/cop/style/collection_methods.rb +4 -4
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
- data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
- data/lib/rubocop/cop/style/constant_name.rb +1 -1
- data/lib/rubocop/cop/style/cyclomatic_complexity.rb +2 -2
- data/lib/rubocop/cop/style/def_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/documentation.rb +1 -1
- data/lib/rubocop/cop/style/dot_position.rb +10 -11
- data/lib/rubocop/cop/style/double_negation.rb +40 -0
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +8 -1
- data/lib/rubocop/cop/style/empty_lines.rb +3 -2
- data/lib/rubocop/cop/style/empty_lines_around_access_modifier.rb +1 -1
- data/lib/rubocop/cop/style/empty_lines_around_body.rb +1 -1
- data/lib/rubocop/cop/style/empty_literal.rb +3 -3
- data/lib/rubocop/cop/style/encoding.rb +1 -1
- data/lib/rubocop/cop/style/end_block.rb +1 -1
- data/lib/rubocop/cop/style/end_of_line.rb +2 -2
- data/lib/rubocop/cop/style/even_odd.rb +2 -2
- data/lib/rubocop/cop/style/favor_join.rb +1 -1
- data/lib/rubocop/cop/style/file_name.rb +29 -0
- data/lib/rubocop/cop/style/final_newline.rb +1 -1
- data/lib/rubocop/cop/style/flip_flop.rb +2 -2
- data/lib/rubocop/cop/style/for.rb +2 -2
- data/lib/rubocop/cop/style/format_string.rb +66 -0
- data/lib/rubocop/cop/style/global_vars.rb +2 -2
- data/lib/rubocop/cop/style/hash_methods.rb +1 -1
- data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +2 -1
- data/lib/rubocop/cop/style/indent_array.rb +41 -0
- data/lib/rubocop/cop/style/indent_hash.rb +119 -0
- data/lib/rubocop/cop/style/indentation_consistency.rb +3 -11
- data/lib/rubocop/cop/style/indentation_width.rb +44 -23
- data/lib/rubocop/cop/style/lambda.rb +2 -2
- data/lib/rubocop/cop/style/lambda_call.rb +3 -3
- data/lib/rubocop/cop/style/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/style/line_end_concatenation.rb +7 -3
- data/lib/rubocop/cop/style/line_length.rb +2 -2
- data/lib/rubocop/cop/style/method_call_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -2
- data/lib/rubocop/cop/style/method_def_parentheses.rb +9 -7
- data/lib/rubocop/cop/style/module_function.rb +1 -1
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -1
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -2
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +5 -5
- data/lib/rubocop/cop/style/op_method.rb +2 -2
- data/lib/rubocop/cop/style/parameter_lists.rb +1 -1
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +5 -4
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +143 -0
- data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
- data/lib/rubocop/cop/style/predicate_name.rb +1 -1
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +2 -2
- data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +1 -1
- data/lib/rubocop/cop/style/redundant_return.rb +1 -1
- data/lib/rubocop/cop/style/redundant_self.rb +2 -2
- data/lib/rubocop/cop/style/regexp_literal.rb +45 -19
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
- data/lib/rubocop/cop/style/self_assignment.rb +73 -0
- data/lib/rubocop/cop/style/semicolon.rb +12 -8
- data/lib/rubocop/cop/style/signal_exception.rb +2 -2
- data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
- data/lib/rubocop/cop/style/single_line_methods.rb +38 -1
- data/lib/rubocop/cop/style/space_after_colon.rb +3 -3
- data/lib/rubocop/cop/style/space_after_comma.rb +1 -1
- data/lib/rubocop/cop/style/space_after_control_keyword.rb +1 -1
- data/lib/rubocop/cop/style/space_after_method_name.rb +11 -3
- data/lib/rubocop/cop/style/space_after_not.rb +1 -1
- data/lib/rubocop/cop/style/space_after_semicolon.rb +1 -1
- data/lib/rubocop/cop/style/space_around_equals_in_parameter_default.rb +41 -6
- data/lib/rubocop/cop/style/space_around_operators.rb +4 -4
- data/lib/rubocop/cop/style/space_before_block_braces.rb +63 -0
- data/lib/rubocop/cop/style/space_before_modifier_keyword.rb +1 -1
- data/lib/rubocop/cop/style/{space_around_block_braces.rb → space_inside_block_braces.rb} +15 -24
- data/lib/rubocop/cop/style/space_inside_hash_literal_braces.rb +14 -7
- data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
- data/lib/rubocop/cop/style/string_literals.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +1 -1
- data/lib/rubocop/cop/style/tab.rb +1 -1
- data/lib/rubocop/cop/style/trailing_blank_lines.rb +2 -2
- data/lib/rubocop/cop/style/trailing_comma.rb +4 -4
- data/lib/rubocop/cop/style/trailing_whitespace.rb +1 -1
- data/lib/rubocop/cop/style/trivial_accessors.rb +2 -2
- data/lib/rubocop/cop/style/unless_else.rb +1 -1
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/when_then.rb +1 -1
- data/lib/rubocop/cop/style/while_until_do.rb +1 -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/team.rb +24 -7
- data/lib/rubocop/cop/util.rb +3 -3
- data/lib/rubocop/cop/variable_inspector.rb +25 -13
- data/lib/rubocop/cop/variable_inspector/assignment.rb +1 -1
- data/lib/rubocop/cop/variable_inspector/reference.rb +1 -1
- data/lib/rubocop/cop/variable_inspector/scope.rb +1 -1
- data/lib/rubocop/cop/variable_inspector/variable.rb +2 -2
- data/lib/rubocop/cop/variable_inspector/variable_table.rb +1 -1
- data/lib/rubocop/file_inspector.rb +12 -13
- data/lib/rubocop/formatter/base_formatter.rb +4 -4
- data/lib/rubocop/formatter/clang_style_formatter.rb +2 -2
- data/lib/rubocop/formatter/disabled_config_formatter.rb +12 -12
- data/lib/rubocop/formatter/emacs_style_formatter.rb +3 -2
- data/lib/rubocop/formatter/file_list_formatter.rb +4 -4
- data/lib/rubocop/formatter/formatter_set.rb +2 -1
- data/lib/rubocop/formatter/fuubar_style_formatter.rb +76 -0
- data/lib/rubocop/formatter/json_formatter.rb +17 -16
- data/lib/rubocop/formatter/offense_count_formatter.rb +54 -0
- data/lib/rubocop/formatter/progress_formatter.rb +16 -16
- data/lib/rubocop/formatter/simple_text_formatter.rb +25 -25
- data/lib/rubocop/options.rb +8 -7
- data/lib/rubocop/processed_source.rb +3 -2
- data/lib/rubocop/source_parser.rb +1 -59
- data/lib/rubocop/version.rb +3 -3
- data/relnotes/0.19.0.md +70 -0
- data/rubocop-todo.yml +6 -6
- data/rubocop.gemspec +2 -1
- data/spec/rubocop/cli_spec.rb +431 -268
- data/spec/rubocop/comment_config_spec.rb +103 -0
- data/spec/rubocop/config_loader_spec.rb +4 -4
- data/spec/rubocop/cop/commissioner_spec.rb +7 -7
- data/spec/rubocop/cop/cop_spec.rb +17 -17
- data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +16 -16
- data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +5 -5
- data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +19 -19
- data/spec/rubocop/cop/lint/block_alignment_spec.rb +52 -52
- data/spec/rubocop/cop/lint/condition_position_spec.rb +7 -7
- data/spec/rubocop/cop/lint/debugger_spec.rb +10 -10
- data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +33 -0
- data/spec/rubocop/cop/lint/else_layout_spec.rb +7 -7
- data/spec/rubocop/cop/lint/empty_ensure_spec.rb +4 -4
- data/spec/rubocop/cop/lint/end_alignment_spec.rb +33 -34
- data/spec/rubocop/cop/lint/end_in_method_spec.rb +5 -5
- data/spec/rubocop/cop/lint/ensure_return_spec.rb +4 -4
- data/spec/rubocop/cop/lint/eval_spec.rb +8 -8
- data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +4 -4
- data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +3 -3
- data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +65 -10
- data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +21 -0
- data/spec/rubocop/cop/lint/loop_spec.rb +6 -6
- data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +14 -14
- data/spec/rubocop/cop/lint/require_parentheses_spec.rb +15 -15
- data/spec/rubocop/cop/lint/rescue_exception_spec.rb +21 -21
- data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +16 -16
- data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +27 -0
- data/spec/rubocop/cop/lint/syntax_spec.rb +11 -11
- data/spec/rubocop/cop/lint/unreachable_code_spec.rb +8 -8
- data/spec/rubocop/cop/lint/useless_assignment_spec.rb +207 -169
- data/spec/rubocop/cop/lint/useless_comparison_spec.rb +5 -5
- data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +4 -4
- data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +17 -17
- data/spec/rubocop/cop/lint/void_spec.rb +8 -8
- data/spec/rubocop/cop/{offence_spec.rb → offense_spec.rb} +17 -17
- data/spec/rubocop/cop/rails/action_filter_spec.rb +69 -0
- data/spec/rubocop/cop/rails/default_scope_spec.rb +9 -9
- data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +2 -2
- data/spec/rubocop/cop/rails/output_spec.rb +8 -18
- data/spec/rubocop/cop/rails/read_attribute_spec.rb +2 -2
- data/spec/rubocop/cop/rails/scope_args_spec.rb +25 -0
- data/spec/rubocop/cop/rails/validation_spec.rb +3 -3
- data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +38 -38
- data/spec/rubocop/cop/style/accessor_method_name_spec.rb +14 -14
- data/spec/rubocop/cop/style/alias_spec.rb +11 -11
- data/spec/rubocop/cop/style/align_array_spec.rb +23 -7
- data/spec/rubocop/cop/style/align_hash_spec.rb +111 -30
- data/spec/rubocop/cop/style/align_parameters_spec.rb +260 -187
- data/spec/rubocop/cop/style/and_or_spec.rb +6 -6
- data/spec/rubocop/cop/style/ascii_comments_spec.rb +3 -3
- data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +5 -5
- data/spec/rubocop/cop/style/attr_spec.rb +2 -2
- data/spec/rubocop/cop/style/begin_block_spec.rb +2 -2
- data/spec/rubocop/cop/style/block_comments_spec.rb +3 -3
- data/spec/rubocop/cop/style/block_nesting_spec.rb +26 -26
- data/spec/rubocop/cop/style/blocks_spec.rb +8 -8
- data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +8 -8
- data/spec/rubocop/cop/style/case_equality_spec.rb +2 -2
- data/spec/rubocop/cop/style/case_indentation_spec.rb +21 -21
- data/spec/rubocop/cop/style/character_literal_spec.rb +6 -6
- data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +4 -4
- data/spec/rubocop/cop/style/class_and_module_children_spec.rb +129 -0
- data/spec/rubocop/cop/style/class_length_spec.rb +9 -9
- data/spec/rubocop/cop/style/class_methods_spec.rb +8 -8
- data/spec/rubocop/cop/style/class_vars_spec.rb +4 -4
- data/spec/rubocop/cop/style/collection_methods_spec.rb +6 -6
- data/spec/rubocop/cop/style/colon_method_call_spec.rb +16 -16
- data/spec/rubocop/cop/style/comment_annotation_spec.rb +16 -16
- data/spec/rubocop/cop/style/constant_name_spec.rb +12 -12
- data/spec/rubocop/cop/style/cyclomatic_complexity_spec.rb +16 -16
- data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +6 -6
- data/spec/rubocop/cop/style/documentation_spec.rb +14 -14
- data/spec/rubocop/cop/style/dot_position_spec.rb +23 -26
- data/spec/rubocop/cop/style/double_negation_spec.rb +22 -0
- data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +22 -14
- data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +4 -4
- data/spec/rubocop/cop/style/empty_lines_around_body_spec.rb +20 -20
- data/spec/rubocop/cop/style/empty_lines_spec.rb +17 -6
- data/spec/rubocop/cop/style/empty_literal_spec.rb +20 -20
- data/spec/rubocop/cop/style/encoding_spec.rb +5 -5
- data/spec/rubocop/cop/style/end_block_spec.rb +2 -2
- data/spec/rubocop/cop/style/end_of_line_spec.rb +4 -4
- data/spec/rubocop/cop/style/even_odd_spec.rb +18 -18
- data/spec/rubocop/cop/style/favor_join_spec.rb +7 -7
- data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +7 -7
- data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +3 -3
- data/spec/rubocop/cop/style/file_name_spec.rb +71 -0
- data/spec/rubocop/cop/style/final_newline_spec.rb +4 -4
- data/spec/rubocop/cop/style/flip_flop_spec.rb +4 -4
- data/spec/rubocop/cop/style/for_spec.rb +13 -13
- data/spec/rubocop/cop/style/format_string_spec.rb +136 -0
- data/spec/rubocop/cop/style/global_vars_spec.rb +7 -7
- data/spec/rubocop/cop/style/hash_methods_spec.rb +6 -6
- data/spec/rubocop/cop/style/hash_syntax_spec.rb +11 -11
- data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +29 -11
- data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +1 -1
- data/spec/rubocop/cop/style/indent_array_spec.rb +136 -0
- data/spec/rubocop/cop/style/indent_hash_spec.rb +238 -0
- data/spec/rubocop/cop/style/indentation_consistency_spec.rb +69 -49
- data/spec/rubocop/cop/style/indentation_width_spec.rb +264 -128
- data/spec/rubocop/cop/style/lambda_call_spec.rb +14 -14
- data/spec/rubocop/cop/style/lambda_spec.rb +7 -7
- data/spec/rubocop/cop/style/leading_comment_space_spec.rb +15 -15
- data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +11 -4
- data/spec/rubocop/cop/style/line_length_spec.rb +5 -5
- data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +5 -5
- data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +9 -9
- data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +19 -19
- data/spec/rubocop/cop/style/method_length_spec.rb +17 -17
- data/spec/rubocop/cop/style/method_name_spec.rb +21 -21
- data/spec/rubocop/cop/style/module_function_spec.rb +3 -3
- data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +13 -13
- data/spec/rubocop/cop/style/multiline_if_then_spec.rb +10 -10
- data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +3 -3
- data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +3 -3
- data/spec/rubocop/cop/style/nil_comparison_spec.rb +7 -7
- data/spec/rubocop/cop/style/not_spec.rb +6 -11
- data/spec/rubocop/cop/style/numeric_literals_spec.rb +8 -8
- data/spec/rubocop/cop/style/one_line_conditional_spec.rb +1 -1
- data/spec/rubocop/cop/style/op_method_spec.rb +13 -13
- data/spec/rubocop/cop/style/parameter_lists_spec.rb +6 -6
- data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +11 -10
- data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +250 -0
- data/spec/rubocop/cop/style/perl_backrefs_spec.rb +2 -2
- data/spec/rubocop/cop/style/predicate_name_spec.rb +3 -3
- data/spec/rubocop/cop/style/proc_spec.rb +4 -4
- data/spec/rubocop/cop/style/raise_args_spec.rb +20 -20
- data/spec/rubocop/cop/style/redundant_begin_spec.rb +6 -6
- data/spec/rubocop/cop/style/redundant_exception_spec.rb +6 -6
- data/spec/rubocop/cop/style/redundant_return_spec.rb +22 -22
- data/spec/rubocop/cop/style/redundant_self_spec.rb +14 -14
- data/spec/rubocop/cop/style/regexp_literal_spec.rb +88 -67
- data/spec/rubocop/cop/style/rescue_modifier_spec.rb +17 -17
- data/spec/rubocop/cop/style/self_assignment_spec.rb +43 -0
- data/spec/rubocop/cop/style/semicolon_spec.rb +31 -17
- data/spec/rubocop/cop/style/signal_exception_spec.rb +29 -29
- data/spec/rubocop/cop/style/single_line_block_params_spec.rb +6 -6
- data/spec/rubocop/cop/style/single_line_methods_spec.rb +44 -6
- data/spec/rubocop/cop/style/space_after_colon_spec.rb +1 -1
- data/spec/rubocop/cop/style/space_after_comma_spec.rb +3 -3
- data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +12 -12
- data/spec/rubocop/cop/style/space_after_method_name_spec.rb +8 -8
- data/spec/rubocop/cop/style/space_after_not_spec.rb +3 -3
- data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +1 -1
- data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +63 -21
- data/spec/rubocop/cop/style/space_around_operators_spec.rb +24 -24
- data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +72 -0
- data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +4 -4
- data/spec/rubocop/cop/style/{space_around_block_braces_spec.rb → space_inside_block_braces_spec.rb} +39 -41
- data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +1 -1
- data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +15 -15
- data/spec/rubocop/cop/style/space_inside_parens_spec.rb +1 -1
- data/spec/rubocop/cop/style/special_global_vars_spec.rb +10 -10
- data/spec/rubocop/cop/style/string_literals_spec.rb +31 -31
- data/spec/rubocop/cop/style/symbol_array_spec.rb +9 -9
- data/spec/rubocop/cop/style/tab_spec.rb +3 -3
- data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +3 -3
- data/spec/rubocop/cop/style/trailing_comma_spec.rb +32 -32
- data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +5 -5
- data/spec/rubocop/cop/style/trivial_accessors_spec.rb +39 -39
- data/spec/rubocop/cop/style/unless_else_spec.rb +1 -1
- data/spec/rubocop/cop/style/variable_interpolation_spec.rb +12 -12
- data/spec/rubocop/cop/style/variable_name_spec.rb +21 -21
- data/spec/rubocop/cop/style/when_then_spec.rb +1 -1
- data/spec/rubocop/cop/style/while_until_do_spec.rb +8 -8
- data/spec/rubocop/cop/style/while_until_modifier_spec.rb +25 -7
- data/spec/rubocop/cop/style/word_array_spec.rb +23 -23
- data/spec/rubocop/cop/team_spec.rb +14 -14
- data/spec/rubocop/file_inspector_spec.rb +14 -12
- data/spec/rubocop/formatter/base_formatter_spec.rb +19 -19
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +14 -14
- data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +7 -7
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +7 -7
- data/spec/rubocop/formatter/file_list_formatter_spec.rb +4 -4
- data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +129 -0
- data/spec/rubocop/formatter/json_formatter_spec.rb +23 -19
- data/spec/rubocop/formatter/offense_count_formatter_spec.rb +77 -0
- data/spec/rubocop/formatter/progress_formatter_spec.rb +27 -27
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +16 -16
- data/spec/rubocop/options_spec.rb +7 -8
- data/spec/rubocop/source_parser_spec.rb +0 -54
- data/spec/spec_helper.rb +11 -7
- data/spec/support/file_helper.rb +1 -1
- data/spec/support/mri_syntax_checker.rb +4 -4
- data/spec/support/shared_examples.rb +6 -6
- data/spec/support/statement_modifier_helper.rb +3 -3
- metadata +76 -16
- data/lib/rubocop/cop/style/favor_sprintf.rb +0 -26
- data/lib/rubocop/formatter/offence_count_formatter.rb +0 -49
- data/spec/rubocop/cop/style/favor_sprintf_spec.rb +0 -47
- data/spec/rubocop/formatter/offence_count_formatter_spec.rb +0 -52
@@ -14,6 +14,8 @@ module Rubocop
|
|
14
14
|
# end
|
15
15
|
# end
|
16
16
|
class IndentationConsistency < Cop
|
17
|
+
include AutocorrectAlignment
|
18
|
+
|
17
19
|
MSG = 'Inconsistent indentation detected.'
|
18
20
|
|
19
21
|
def on_begin(node)
|
@@ -33,17 +35,7 @@ module Rubocop
|
|
33
35
|
AccessModifierIndentation.modifier_node?(child)
|
34
36
|
end
|
35
37
|
|
36
|
-
children_to_check
|
37
|
-
if child2.line > child1.line && child2.column != child1.column
|
38
|
-
expr = child2.expression
|
39
|
-
indentation = expr.source_line =~ /\S/
|
40
|
-
end_pos = expr.begin_pos
|
41
|
-
begin_pos = end_pos - indentation
|
42
|
-
add_offence(nil,
|
43
|
-
Parser::Source::Range.new(expr.source_buffer,
|
44
|
-
begin_pos, end_pos))
|
45
|
-
end
|
46
|
-
end
|
38
|
+
check_alignment(children_to_check)
|
47
39
|
end
|
48
40
|
end
|
49
41
|
end
|
@@ -13,6 +13,7 @@ module Rubocop
|
|
13
13
|
# end
|
14
14
|
# end
|
15
15
|
class IndentationWidth < Cop
|
16
|
+
include AutocorrectAlignment
|
16
17
|
include CheckMethods
|
17
18
|
include CheckAssignment
|
18
19
|
include IfNode
|
@@ -49,10 +50,10 @@ module Rubocop
|
|
49
50
|
check_indentation(node.loc.keyword, body)
|
50
51
|
end
|
51
52
|
|
52
|
-
def on_while(node)
|
53
|
+
def on_while(node, base = node)
|
53
54
|
_condition, body = *node
|
54
55
|
if node.loc.keyword.begin_pos == node.loc.expression.begin_pos
|
55
|
-
check_indentation(
|
56
|
+
check_indentation(base.loc, body)
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
@@ -75,7 +76,7 @@ module Rubocop
|
|
75
76
|
end
|
76
77
|
end
|
77
78
|
|
78
|
-
def on_if(node,
|
79
|
+
def on_if(node, base = node)
|
79
80
|
return if ignored_node?(node)
|
80
81
|
return if ternary_op?(node)
|
81
82
|
return if modifier_if?(node)
|
@@ -86,7 +87,7 @@ module Rubocop
|
|
86
87
|
else _condition, body = *node
|
87
88
|
end
|
88
89
|
|
89
|
-
check_if(node, body, else_clause,
|
90
|
+
check_if(node, body, else_clause, base.loc) if body
|
90
91
|
end
|
91
92
|
|
92
93
|
private
|
@@ -97,29 +98,46 @@ module Rubocop
|
|
97
98
|
# we check its indentation.
|
98
99
|
rhs = first_part_of_call_chain(rhs)
|
99
100
|
|
100
|
-
if rhs
|
101
|
-
|
101
|
+
if rhs
|
102
|
+
end_alignment_config = config.for_cop('EndAlignment')
|
103
|
+
style = if end_alignment_config['Enabled']
|
104
|
+
end_alignment_config['AlignWith']
|
105
|
+
else
|
106
|
+
'keyword'
|
107
|
+
end
|
108
|
+
base = style == 'variable' ? node : rhs
|
109
|
+
|
110
|
+
case rhs.type
|
111
|
+
when :if then on_if(rhs, base)
|
112
|
+
when :while, :until then on_while(rhs, base)
|
113
|
+
else return
|
114
|
+
end
|
115
|
+
|
102
116
|
ignore_node(rhs)
|
103
117
|
end
|
104
118
|
end
|
105
119
|
|
106
|
-
def check_if(node, body, else_clause,
|
120
|
+
def check_if(node, body, else_clause, base_loc)
|
107
121
|
return if ternary_op?(node)
|
108
|
-
|
109
|
-
check_indentation(
|
122
|
+
|
123
|
+
check_indentation(base_loc, body)
|
124
|
+
|
110
125
|
if else_clause
|
111
126
|
if elsif?(else_clause)
|
112
127
|
_condition, inner_body, inner_else_clause = *else_clause
|
113
|
-
check_if(else_clause, inner_body, inner_else_clause,
|
128
|
+
check_if(else_clause, inner_body, inner_else_clause, base_loc)
|
114
129
|
else
|
115
130
|
check_indentation(node.loc.else, else_clause)
|
116
131
|
end
|
117
132
|
end
|
118
133
|
end
|
119
134
|
|
120
|
-
def check_indentation(base_loc, body_node
|
135
|
+
def check_indentation(base_loc, body_node)
|
121
136
|
return unless body_node
|
137
|
+
|
138
|
+
# Don't check if expression is on same line as "then" keyword, etc.
|
122
139
|
return if body_node.loc.line == base_loc.line
|
140
|
+
|
123
141
|
return if starts_with_access_modifier?(body_node)
|
124
142
|
|
125
143
|
# Don't check indentation if the line doesn't start with the body.
|
@@ -128,22 +146,25 @@ module Rubocop
|
|
128
146
|
return unless body_node.loc.column == first_char_pos_on_line
|
129
147
|
|
130
148
|
indentation = body_node.loc.column - base_loc.column
|
131
|
-
|
132
|
-
|
149
|
+
@column_delta = CORRECT_INDENTATION - indentation
|
150
|
+
return if @column_delta == 0
|
151
|
+
|
152
|
+
# This cop only auto-corrects the first statement in a def body, for
|
153
|
+
# example.
|
154
|
+
body_node = body_node.children.first if body_node.type == :begin
|
133
155
|
|
134
156
|
expr = body_node.loc.expression
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
end
|
157
|
+
pos = if indentation >= 0
|
158
|
+
(expr.begin_pos - indentation)..expr.begin_pos
|
159
|
+
else
|
160
|
+
expr.begin_pos..(expr.begin_pos - indentation)
|
161
|
+
end
|
141
162
|
|
142
|
-
|
163
|
+
add_offense(body_node,
|
143
164
|
Parser::Source::Range.new(expr.source_buffer,
|
144
|
-
|
145
|
-
|
146
|
-
|
165
|
+
pos.begin, pos.end),
|
166
|
+
format("Use #{CORRECT_INDENTATION} (not %d) spaces " \
|
167
|
+
'for indentation.', indentation))
|
147
168
|
end
|
148
169
|
|
149
170
|
def starts_with_access_modifier?(body_node)
|
@@ -24,9 +24,9 @@ module Rubocop
|
|
24
24
|
lambda_length = lambda_length(node)
|
25
25
|
|
26
26
|
if selector != '->' && lambda_length == 0
|
27
|
-
|
27
|
+
add_offense(block_method, :expression, SINGLE_MSG)
|
28
28
|
elsif selector == '->' && lambda_length > 0
|
29
|
-
|
29
|
+
add_offense(block_method, :expression, MULTI_MSG)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -21,8 +21,8 @@ module Rubocop
|
|
21
21
|
# we care only about `call` methods
|
22
22
|
return unless selector == :call
|
23
23
|
|
24
|
-
if
|
25
|
-
|
24
|
+
if offense?(node)
|
25
|
+
add_offense(node, :expression) { opposite_style_detected }
|
26
26
|
else
|
27
27
|
correct_style_detected
|
28
28
|
end
|
@@ -30,7 +30,7 @@ module Rubocop
|
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
|
-
def
|
33
|
+
def offense?(node)
|
34
34
|
# lambda.() does not have a selector
|
35
35
|
style == :call && node.loc.selector.nil? ||
|
36
36
|
style == :braces && node.loc.selector
|
@@ -20,7 +20,7 @@ module Rubocop
|
|
20
20
|
MSG = 'Use \\ instead of + to concatenate those strings.'
|
21
21
|
|
22
22
|
def on_send(node)
|
23
|
-
|
23
|
+
add_offense(node, :selector) if offending_node?(node)
|
24
24
|
end
|
25
25
|
|
26
26
|
def autocorrect(node)
|
@@ -38,9 +38,9 @@ module Rubocop
|
|
38
38
|
# TODO: Report Emacs bug.
|
39
39
|
return false unless :+ == method
|
40
40
|
|
41
|
-
return false unless receiver.type
|
41
|
+
return false unless string_type?(receiver.type)
|
42
42
|
|
43
|
-
return false unless arg.type
|
43
|
+
return false unless string_type?(arg.type)
|
44
44
|
|
45
45
|
plus_at_line_end?(node.loc.expression.source)
|
46
46
|
end
|
@@ -49,6 +49,10 @@ module Rubocop
|
|
49
49
|
# check if the first line of the expression ends with a +
|
50
50
|
expression =~ /.+\+\s*$/
|
51
51
|
end
|
52
|
+
|
53
|
+
def string_type?(node_type)
|
54
|
+
[:str, :dstr].include?(node_type)
|
55
|
+
end
|
52
56
|
end
|
53
57
|
end
|
54
58
|
end
|
@@ -13,8 +13,8 @@ module Rubocop
|
|
13
13
|
def investigate(processed_source)
|
14
14
|
processed_source.lines.each_with_index do |line, index|
|
15
15
|
if line.length > max
|
16
|
-
message =
|
17
|
-
|
16
|
+
message = format(MSG, line.length, max)
|
17
|
+
add_offense(nil,
|
18
18
|
source_range(processed_source.buffer,
|
19
19
|
processed_source[0...index], max,
|
20
20
|
line.length - max),
|
@@ -13,7 +13,7 @@ module Rubocop
|
|
13
13
|
# methods starting with a capital letter should be skipped
|
14
14
|
return if method_name =~ /\A[A-Z]/
|
15
15
|
|
16
|
-
|
16
|
+
add_offense(node, :begin) if args.empty? && node.loc.begin
|
17
17
|
end
|
18
18
|
|
19
19
|
def autocorrect(node)
|
@@ -22,7 +22,7 @@ module Rubocop
|
|
22
22
|
[EmptyLiteral::HASH_NODE,
|
23
23
|
EmptyLiteral::ARRAY_NODE,
|
24
24
|
EmptyLiteral::STR_NODE].include?(node)
|
25
|
-
|
25
|
+
return
|
26
26
|
end
|
27
27
|
@corrections << lambda do |corrector|
|
28
28
|
corrector.remove(node.loc.begin)
|
@@ -20,7 +20,7 @@ module Rubocop
|
|
20
20
|
# If the method that is chained on the do...end block is itself a
|
21
21
|
# method with a block, we allow it. It's pretty safe to assume that
|
22
22
|
# these calls are not missed by anyone reading code. We also want to
|
23
|
-
# avoid double reporting of
|
23
|
+
# avoid double reporting of offenses checked by the
|
24
24
|
# MultilineBlockChain cop.
|
25
25
|
ignore_node(method)
|
26
26
|
end
|
@@ -32,7 +32,7 @@ module Rubocop
|
|
32
32
|
range = Parser::Source::Range.new(receiver.loc.end.source_buffer,
|
33
33
|
receiver.loc.end.begin_pos,
|
34
34
|
node.loc.expression.end_pos)
|
35
|
-
|
35
|
+
add_offense(nil, range)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
@@ -12,7 +12,7 @@ module Rubocop
|
|
12
12
|
def check(node, _method_name, args, _body)
|
13
13
|
if style == :require_parentheses
|
14
14
|
if arguments?(args) && !parentheses?(args)
|
15
|
-
|
15
|
+
add_offense(node,
|
16
16
|
args.loc.expression,
|
17
17
|
'Use def with parentheses when there are ' \
|
18
18
|
'parameters.') do
|
@@ -22,7 +22,7 @@ module Rubocop
|
|
22
22
|
correct_style_detected
|
23
23
|
end
|
24
24
|
elsif parentheses?(args)
|
25
|
-
|
25
|
+
add_offense(args, :expression, 'Use def without parentheses.') do
|
26
26
|
opposite_style_detected
|
27
27
|
end
|
28
28
|
else
|
@@ -33,11 +33,13 @@ module Rubocop
|
|
33
33
|
def autocorrect(node)
|
34
34
|
@corrections << lambda do |corrector|
|
35
35
|
if style == :require_parentheses
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
args_expr = args_node(node).loc.expression
|
37
|
+
args_with_space = range_with_surrounding_space(args_expr, :left)
|
38
|
+
just_space = Parser::Source::Range.new(args_expr.source_buffer,
|
39
|
+
args_with_space.begin_pos,
|
40
|
+
args_expr.begin_pos)
|
41
|
+
corrector.replace(just_space, '(')
|
42
|
+
corrector.insert_after(args_expr, ')')
|
41
43
|
elsif style == :require_no_parentheses
|
42
44
|
corrector.replace(node.loc.begin, ' ')
|
43
45
|
corrector.remove(node.loc.end)
|
@@ -30,7 +30,7 @@ module Rubocop
|
|
30
30
|
Parser::Source::Range.new(end_kw_loc.source_buffer,
|
31
31
|
end_kw_loc.begin_pos,
|
32
32
|
method.loc.expression.end_pos)
|
33
|
-
|
33
|
+
add_offense(nil, range)
|
34
34
|
# Done. If there are more blocks in the chain, they will be
|
35
35
|
# found by subsequent calls to on_block.
|
36
36
|
break
|
@@ -6,7 +6,7 @@ module Rubocop
|
|
6
6
|
# This cop checks for nested ternary op expressions.
|
7
7
|
class NestedTernaryOperator < Cop
|
8
8
|
MSG = 'Ternary operators must not be nested. Prefer if/else ' \
|
9
|
-
|
9
|
+
'constructs instead.'
|
10
10
|
|
11
11
|
def on_if(node)
|
12
12
|
loc = node.loc
|
@@ -16,7 +16,7 @@ module Rubocop
|
|
16
16
|
|
17
17
|
node.children.each do |child|
|
18
18
|
on_node(:if, child) do |c|
|
19
|
-
|
19
|
+
add_offense(c, :expression) if c.loc.respond_to?(:question)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -7,12 +7,12 @@ module Rubocop
|
|
7
7
|
# of digits in them.
|
8
8
|
class NumericLiterals < Cop
|
9
9
|
# The parameter is called MinDigits (meaning the minimum number of
|
10
|
-
# digits for which an
|
10
|
+
# digits for which an offense can be registered), but essentially it's
|
11
11
|
# a Max parameter (the maximum number of something that's allowed).
|
12
12
|
include ConfigurableMax
|
13
13
|
|
14
14
|
MSG = 'Separate every 3 digits in the integer portion of a number ' \
|
15
|
-
|
15
|
+
'with underscores(_).'
|
16
16
|
|
17
17
|
def on_int(node)
|
18
18
|
check(node)
|
@@ -37,10 +37,10 @@ module Rubocop
|
|
37
37
|
if int.size >= min_digits
|
38
38
|
case int
|
39
39
|
when /^\d+$/
|
40
|
-
|
40
|
+
add_offense(node, :expression) { self.max = int.size }
|
41
41
|
when /\d{4}/, /_\d{1,2}_/
|
42
|
-
|
43
|
-
self.
|
42
|
+
add_offense(node, :expression) do
|
43
|
+
self.config_to_allow_offenses = { 'Enabled' => false }
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -17,8 +17,8 @@ module Rubocop
|
|
17
17
|
|
18
18
|
if name !~ /\A\w/ && !BLACKLISTED.include?(name) &&
|
19
19
|
args.children.size == 1 && args != TARGET_ARGS
|
20
|
-
|
21
|
-
|
20
|
+
add_offense(args.children[0], :expression,
|
21
|
+
format(MSG, name))
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -32,15 +32,16 @@ module Rubocop
|
|
32
32
|
# allow safe assignment
|
33
33
|
return if safe_assignment?(cond) && safe_assignment_allowed?
|
34
34
|
|
35
|
-
|
35
|
+
add_offense(cond, :expression, message(node))
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
def parens_required?(node)
|
40
|
-
|
41
|
-
|
40
|
+
exp = node.loc.expression
|
41
|
+
kw = node.loc.keyword
|
42
|
+
kw_offset = kw.begin_pos - exp.begin_pos
|
42
43
|
|
43
|
-
|
44
|
+
exp.source[kw_offset..-1].start_with?(kw.source + '(')
|
44
45
|
end
|
45
46
|
|
46
47
|
def message(node)
|