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
@@ -24,7 +24,7 @@ module Rubocop
|
|
24
24
|
range = source_range(processed_source.buffer,
|
25
25
|
processed_source[0...-blank_lines],
|
26
26
|
0, range_size)
|
27
|
-
|
27
|
+
add_offense(range, range, format(MSG, blank_lines))
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -33,7 +33,7 @@ module Rubocop
|
|
33
33
|
# auto-correction in the two cops would result in clobbering.
|
34
34
|
if range.source =~ / / &&
|
35
35
|
config.for_cop('TrailingWhitespace')['Enabled']
|
36
|
-
|
36
|
+
return
|
37
37
|
end
|
38
38
|
|
39
39
|
@corrections << ->(corrector) { corrector.remove(range) }
|
@@ -83,8 +83,8 @@ module Rubocop
|
|
83
83
|
range = Parser::Source::Range.new(sb, comma_begin_pos,
|
84
84
|
comma_begin_pos + 1)
|
85
85
|
article = kind =~ /array/ ? 'an' : 'a'
|
86
|
-
|
87
|
-
|
86
|
+
add_offense(nil, range,
|
87
|
+
format(MSG, 'Avoid', format(kind, article)))
|
88
88
|
end
|
89
89
|
|
90
90
|
def put_comma(items, kind, sb)
|
@@ -93,8 +93,8 @@ module Rubocop
|
|
93
93
|
ix += last_expr.source[ix..-1] =~ /\S/
|
94
94
|
range = Parser::Source::Range.new(sb, last_expr.begin_pos + ix,
|
95
95
|
last_expr.end_pos)
|
96
|
-
|
97
|
-
|
96
|
+
add_offense(nil, range,
|
97
|
+
format(MSG, 'Put a', format(kind, 'a multiline')))
|
98
98
|
end
|
99
99
|
end
|
100
100
|
end
|
@@ -5,6 +5,7 @@ module Rubocop
|
|
5
5
|
module Style
|
6
6
|
# Checks for while and until statements that would fit on one line
|
7
7
|
# if written as a modifier while/until.
|
8
|
+
# The maximum line length is configurable.
|
8
9
|
class WhileUntilModifier < Cop
|
9
10
|
include StatementModifier
|
10
11
|
|
@@ -15,7 +16,7 @@ module Rubocop
|
|
15
16
|
next unless node.loc.end
|
16
17
|
|
17
18
|
if check(node, processed_source.comments)
|
18
|
-
|
19
|
+
add_offense(node, :keyword,
|
19
20
|
message(node.loc.keyword.source))
|
20
21
|
end
|
21
22
|
end
|
@@ -8,7 +8,7 @@ module Rubocop
|
|
8
8
|
class WordArray < Cop
|
9
9
|
include ArraySyntax
|
10
10
|
# The parameter is called MinSize (meaning the minimum array size for
|
11
|
-
# which an
|
11
|
+
# which an offense can be registered), but essentially it's a Max
|
12
12
|
# parameter (the maximum number of something that's allowed).
|
13
13
|
include ConfigurableMax
|
14
14
|
|
@@ -18,7 +18,7 @@ module Rubocop
|
|
18
18
|
array_elems = node.children
|
19
19
|
if array_of?(:str, node) && !complex_content?(array_elems) &&
|
20
20
|
array_elems.size > min_size && !comments_in_array?(node)
|
21
|
-
|
21
|
+
add_offense(node, :expression) { self.max = array_elems.size }
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
data/lib/rubocop/cop/team.rb
CHANGED
@@ -4,7 +4,9 @@ module Rubocop
|
|
4
4
|
module Cop
|
5
5
|
# FIXME
|
6
6
|
class Team
|
7
|
-
attr_reader :errors
|
7
|
+
attr_reader :errors, :updated_source_file
|
8
|
+
|
9
|
+
alias_method :updated_source_file?, :updated_source_file
|
8
10
|
|
9
11
|
def initialize(cop_classes, config, options = nil)
|
10
12
|
@cop_classes = cop_classes
|
@@ -26,23 +28,23 @@ module Rubocop
|
|
26
28
|
processed_source = SourceParser.parse_file(file)
|
27
29
|
rescue Encoding::UndefinedConversionError, ArgumentError => e
|
28
30
|
range = Struct.new(:line, :column, :source_line).new(1, 0, '')
|
29
|
-
return [
|
31
|
+
return [Offense.new(:fatal, range, e.message.capitalize + '.',
|
30
32
|
'Parser')]
|
31
33
|
end
|
32
34
|
|
33
|
-
# If we got any syntax errors, return only the syntax
|
35
|
+
# If we got any syntax errors, return only the syntax offenses.
|
34
36
|
# Parser may return nil for AST even though there are no syntax errors.
|
35
37
|
# e.g. sources which contain only comments
|
36
38
|
unless processed_source.valid_syntax?
|
37
39
|
diagnostics = processed_source.diagnostics
|
38
|
-
return Lint::Syntax.
|
40
|
+
return Lint::Syntax.offenses_from_diagnostics(diagnostics)
|
39
41
|
end
|
40
42
|
|
41
43
|
commissioner = Commissioner.new(cops)
|
42
|
-
|
44
|
+
offenses = commissioner.investigate(processed_source)
|
43
45
|
process_commissioner_errors(file, commissioner.errors)
|
44
46
|
autocorrect(processed_source.buffer, cops)
|
45
|
-
|
47
|
+
offenses
|
46
48
|
end
|
47
49
|
|
48
50
|
def cops
|
@@ -57,6 +59,7 @@ module Rubocop
|
|
57
59
|
private
|
58
60
|
|
59
61
|
def autocorrect(buffer, cops)
|
62
|
+
@updated_source_file = false
|
60
63
|
return unless autocorrect?
|
61
64
|
|
62
65
|
corrections = cops.reduce([]) do |array, cop|
|
@@ -65,14 +68,28 @@ module Rubocop
|
|
65
68
|
end
|
66
69
|
|
67
70
|
corrector = Corrector.new(buffer, corrections)
|
68
|
-
new_source =
|
71
|
+
new_source = begin
|
72
|
+
corrector.rewrite
|
73
|
+
rescue RangeError, RuntimeError
|
74
|
+
autocorrect_one_cop(buffer, cops)
|
75
|
+
end
|
69
76
|
|
70
77
|
unless new_source == buffer.source
|
71
78
|
filename = buffer.name
|
72
79
|
File.open(filename, 'w') { |f| f.write(new_source) }
|
80
|
+
@updated_source_file = true
|
73
81
|
end
|
74
82
|
end
|
75
83
|
|
84
|
+
# Does a slower but safer auto-correction run by correcting for just one
|
85
|
+
# cop. The re-running of auto-corrections will make sure that the full
|
86
|
+
# set of auto-corrections is tried again after this method has finished.
|
87
|
+
def autocorrect_one_cop(buffer, cops)
|
88
|
+
cop_with_corrections = cops.find { |cop| cop.corrections.any? }
|
89
|
+
corrector = Corrector.new(buffer, cop_with_corrections.corrections)
|
90
|
+
corrector.rewrite
|
91
|
+
end
|
92
|
+
|
76
93
|
def process_commissioner_errors(file, file_errors)
|
77
94
|
file_errors.each do |cop, errors|
|
78
95
|
errors.each do |e|
|
data/lib/rubocop/cop/util.rb
CHANGED
@@ -15,9 +15,9 @@ module Rubocop
|
|
15
15
|
# http://phrogz.net/programmingruby/language.html#table_18.4
|
16
16
|
# Backtick is added last just to help editors parse this code.
|
17
17
|
OPERATOR_METHODS = %w(
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
| ^ & <=> == === =~ > >= < <= << >>
|
19
|
+
+ - * / % ** ~ +@ -@ [] []= ! != !~
|
20
|
+
).map(&:to_sym) + [:'`']
|
21
21
|
|
22
22
|
module_function
|
23
23
|
|
@@ -278,19 +278,8 @@ module Rubocop
|
|
278
278
|
# as referenced by ignoring AST order since they would be referenced
|
279
279
|
# in next iteration.
|
280
280
|
def mark_assignments_as_referenced_in_loop(node)
|
281
|
-
referenced_variable_names_in_loop =
|
282
|
-
|
283
|
-
|
284
|
-
# #scan does not consider scope,
|
285
|
-
# but we don't need to care about it here.
|
286
|
-
scan(node) do |scanning_node|
|
287
|
-
case scanning_node.type
|
288
|
-
when :lvar
|
289
|
-
referenced_variable_names_in_loop << scanning_node.children.first
|
290
|
-
when :lvasgn
|
291
|
-
assignment_nodes_in_loop << scanning_node
|
292
|
-
end
|
293
|
-
end
|
281
|
+
referenced_variable_names_in_loop, assignment_nodes_in_loop =
|
282
|
+
find_variables_in_loop(node)
|
294
283
|
|
295
284
|
referenced_variable_names_in_loop.each do |name|
|
296
285
|
variable = variable_table.find_variable(name)
|
@@ -306,6 +295,29 @@ module Rubocop
|
|
306
295
|
end
|
307
296
|
end
|
308
297
|
|
298
|
+
def find_variables_in_loop(loop_node)
|
299
|
+
referenced_variable_names_in_loop = []
|
300
|
+
assignment_nodes_in_loop = []
|
301
|
+
|
302
|
+
# #scan does not consider scope,
|
303
|
+
# but we don't need to care about it here.
|
304
|
+
scan(loop_node) do |node|
|
305
|
+
case node.type
|
306
|
+
when :lvar
|
307
|
+
referenced_variable_names_in_loop << node.children.first
|
308
|
+
when *OPERATOR_ASSIGNMENT_TYPES
|
309
|
+
asgn_node = node.children.first
|
310
|
+
if asgn_node.type == :lvasgn
|
311
|
+
referenced_variable_names_in_loop << asgn_node.children.first
|
312
|
+
end
|
313
|
+
when :lvasgn
|
314
|
+
assignment_nodes_in_loop << node
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
[referenced_variable_names_in_loop, assignment_nodes_in_loop]
|
319
|
+
end
|
320
|
+
|
309
321
|
# Simple recursive scan
|
310
322
|
def scan(node, &block)
|
311
323
|
node.children.each do |child|
|
@@ -16,7 +16,7 @@ module Rubocop
|
|
16
16
|
def initialize(node, variable)
|
17
17
|
unless VARIABLE_ASSIGNMENT_TYPES.include?(node.type)
|
18
18
|
fail ArgumentError,
|
19
|
-
"Node type must be any of #{VARIABLE_ASSIGNMENT_TYPES}, "
|
19
|
+
"Node type must be any of #{VARIABLE_ASSIGNMENT_TYPES}, " \
|
20
20
|
"passed #{node.type}"
|
21
21
|
end
|
22
22
|
|
@@ -18,7 +18,7 @@ module Rubocop
|
|
18
18
|
def initialize(node, scope)
|
19
19
|
unless VARIABLE_REFERENCE_TYPES.include?(node.type)
|
20
20
|
fail ArgumentError,
|
21
|
-
"Node type must be any of #{VARIABLE_REFERENCE_TYPES}, "
|
21
|
+
"Node type must be any of #{VARIABLE_REFERENCE_TYPES}, " \
|
22
22
|
"passed #{node.type}"
|
23
23
|
end
|
24
24
|
|
@@ -13,7 +13,7 @@ module Rubocop
|
|
13
13
|
# Accept begin node for top level scope.
|
14
14
|
unless SCOPE_TYPES.include?(node.type) || node.type == :begin
|
15
15
|
fail ArgumentError,
|
16
|
-
"Node type must be any of #{SCOPE_TYPES}, "
|
16
|
+
"Node type must be any of #{SCOPE_TYPES}, " \
|
17
17
|
"passed #{node.type}"
|
18
18
|
end
|
19
19
|
@node = node
|
@@ -17,7 +17,7 @@ module Rubocop
|
|
17
17
|
def initialize(name, declaration_node, scope)
|
18
18
|
unless VARIABLE_DECLARATION_TYPES.include?(declaration_node.type)
|
19
19
|
fail ArgumentError,
|
20
|
-
"Node type must be any of #{VARIABLE_DECLARATION_TYPES}, "
|
20
|
+
"Node type must be any of #{VARIABLE_DECLARATION_TYPES}, " \
|
21
21
|
"passed #{declaration_node.type}"
|
22
22
|
end
|
23
23
|
|
@@ -69,7 +69,7 @@ module Rubocop
|
|
69
69
|
# Once the variable is captured by a block, we have no idea
|
70
70
|
# when, where and how many times the block would be invoked
|
71
71
|
# and it means we cannot track the usage of the variable.
|
72
|
-
# So we consider it's used to suppress false positive
|
72
|
+
# So we consider it's used to suppress false positive offenses.
|
73
73
|
def used?
|
74
74
|
@captured_by_block || referenced?
|
75
75
|
end
|
@@ -20,9 +20,9 @@ module Rubocop
|
|
20
20
|
|
21
21
|
target_files.each do |file|
|
22
22
|
break if yield
|
23
|
-
|
23
|
+
offenses = process_file(file, config_store)
|
24
24
|
|
25
|
-
any_failed = true unless
|
25
|
+
any_failed = true unless offenses.empty?
|
26
26
|
inspected_files << file
|
27
27
|
end
|
28
28
|
|
@@ -46,31 +46,30 @@ module Rubocop
|
|
46
46
|
|
47
47
|
def process_file(file, config_store)
|
48
48
|
puts "Scanning #{file}" if @options[:debug]
|
49
|
-
|
49
|
+
offenses = []
|
50
50
|
formatter_set.file_started(file, {})
|
51
51
|
|
52
52
|
# When running with --auto-correct, we need to inspect the file (which
|
53
53
|
# includes writing a corrected version of it) until no more corrections
|
54
54
|
# are made. This is because automatic corrections can introduce new
|
55
|
-
#
|
55
|
+
# offenses. In the normal case the loop is only executed once.
|
56
56
|
loop do
|
57
|
-
|
58
|
-
unique_new =
|
59
|
-
|
60
|
-
|
61
|
-
break unless unique_new.any?(&:corrected?)
|
57
|
+
new_offenses, updated_source_file = inspect_file(file, config_store)
|
58
|
+
unique_new = new_offenses.reject { |n| offenses.include?(n) }
|
59
|
+
offenses += unique_new
|
60
|
+
break unless updated_source_file
|
62
61
|
end
|
63
62
|
|
64
|
-
formatter_set.file_finished(file,
|
65
|
-
|
63
|
+
formatter_set.file_finished(file, offenses.sort.freeze)
|
64
|
+
offenses
|
66
65
|
end
|
67
66
|
|
68
67
|
def inspect_file(file, config_store)
|
69
68
|
config = config_store.for(file)
|
70
69
|
team = Cop::Team.new(mobilized_cop_classes(config), config, @options)
|
71
|
-
|
70
|
+
offenses = team.inspect_file(file)
|
72
71
|
@errors.concat(team.errors)
|
73
|
-
|
72
|
+
[offenses, team.updated_source_file?]
|
74
73
|
end
|
75
74
|
|
76
75
|
def mobilized_cop_classes(config)
|
@@ -93,13 +93,13 @@ module Rubocop
|
|
93
93
|
# @param file [String]
|
94
94
|
# the file path
|
95
95
|
#
|
96
|
-
# @param
|
97
|
-
# all detected
|
96
|
+
# @param offenses [Array(Rubocop::Cop::Offense)]
|
97
|
+
# all detected offenses for the file
|
98
98
|
#
|
99
99
|
# @return [void]
|
100
100
|
#
|
101
|
-
# @see Rubocop::Cop::
|
102
|
-
def file_finished(file,
|
101
|
+
# @see Rubocop::Cop::Offense
|
102
|
+
def file_finished(file, offenses)
|
103
103
|
end
|
104
104
|
|
105
105
|
# @api public
|