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
@@ -13,8 +13,9 @@ module Rubocop
|
|
13
13
|
|
14
14
|
prev_line = 1
|
15
15
|
|
16
|
-
processed_source.tokens.each do |token|
|
16
|
+
processed_source.tokens.sort_by { |t| t.pos.line }.each do |token|
|
17
17
|
cur_line = token.pos.line
|
18
|
+
|
18
19
|
line_diff = cur_line - prev_line
|
19
20
|
|
20
21
|
if line_diff > LINE_OFFSET
|
@@ -28,7 +29,7 @@ module Rubocop
|
|
28
29
|
processed_source[0...(line - 1)],
|
29
30
|
0,
|
30
31
|
1)
|
31
|
-
|
32
|
+
add_offense(range, range)
|
32
33
|
end
|
33
34
|
end
|
34
35
|
end
|
@@ -33,11 +33,11 @@ module Rubocop
|
|
33
33
|
|
34
34
|
case node
|
35
35
|
when ARRAY_NODE
|
36
|
-
|
36
|
+
add_offense(node, :expression, ARR_MSG)
|
37
37
|
when HASH_NODE
|
38
|
-
|
38
|
+
add_offense(node, :expression, HASH_MSG)
|
39
39
|
when STR_NODE
|
40
|
-
|
40
|
+
add_offense(node, :expression, STR_MSG)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -16,7 +16,7 @@ module Rubocop
|
|
16
16
|
line_number += 1 if processed_source[line_number] =~ /^#!/
|
17
17
|
line = processed_source[line_number]
|
18
18
|
unless line =~ /#.*coding\s?[:=]\s?(UTF|utf)-8/
|
19
|
-
|
19
|
+
add_offense(nil,
|
20
20
|
source_range(processed_source.buffer,
|
21
21
|
processed_source[0...line_number],
|
22
22
|
0, 1),
|
@@ -13,13 +13,13 @@ module Rubocop
|
|
13
13
|
encoding: buffer.source.encoding)
|
14
14
|
original_source.lines.each_with_index do |line, index|
|
15
15
|
if line =~ /\r$/
|
16
|
-
|
16
|
+
add_offense(nil,
|
17
17
|
source_range(buffer,
|
18
18
|
processed_source[0...index],
|
19
19
|
0, line.length),
|
20
20
|
MSG)
|
21
21
|
# Usually there will be carriage return characters on all or none
|
22
|
-
# of the lines in a file, so we report only one
|
22
|
+
# of the lines in a file, so we report only one offense.
|
23
23
|
break
|
24
24
|
end
|
25
25
|
end
|
@@ -28,11 +28,11 @@ module Rubocop
|
|
28
28
|
return unless div_by_2?(receiver)
|
29
29
|
|
30
30
|
if args == ZERO
|
31
|
-
|
31
|
+
add_offense(node,
|
32
32
|
:expression,
|
33
33
|
method == :== ? MSG_EVEN : MSG_ODD)
|
34
34
|
elsif args == ONE
|
35
|
-
|
35
|
+
add_offense(node,
|
36
36
|
:expression,
|
37
37
|
method == :== ? MSG_ODD : MSG_EVEN)
|
38
38
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cop makes sure that Ruby source files have snake_case names.
|
7
|
+
class FileName < Cop
|
8
|
+
MSG = 'Use snake_case for source file names.'
|
9
|
+
|
10
|
+
SNAKE_CASE = /^[\da-z_]+$/
|
11
|
+
|
12
|
+
def investigate(processed_source)
|
13
|
+
file_path = processed_source.buffer.name
|
14
|
+
|
15
|
+
return if config.file_to_include?(file_path)
|
16
|
+
|
17
|
+
basename = File.basename(file_path).sub(/\.[^\.]+$/, '')
|
18
|
+
|
19
|
+
unless basename =~ SNAKE_CASE
|
20
|
+
add_offense(nil,
|
21
|
+
source_range(processed_source.buffer,
|
22
|
+
processed_source[0..0],
|
23
|
+
0, 1))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -8,11 +8,11 @@ module Rubocop
|
|
8
8
|
MSG = 'Avoid the use of flip flop operators.'
|
9
9
|
|
10
10
|
def on_iflipflop(node)
|
11
|
-
|
11
|
+
add_offense(node, :expression)
|
12
12
|
end
|
13
13
|
|
14
14
|
def on_eflipflop(node)
|
15
|
-
|
15
|
+
add_offense(node, :expression)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -12,7 +12,7 @@ module Rubocop
|
|
12
12
|
|
13
13
|
def on_for(node)
|
14
14
|
if style == :each
|
15
|
-
|
15
|
+
add_offense(node, :keyword, 'Prefer *each* over *for*.') do
|
16
16
|
opposite_style_detected
|
17
17
|
end
|
18
18
|
else
|
@@ -34,7 +34,7 @@ module Rubocop
|
|
34
34
|
range = Parser::Source::Range.new(processed_source.buffer,
|
35
35
|
end_pos - 'each'.length,
|
36
36
|
end_pos)
|
37
|
-
|
37
|
+
add_offense(range, range, 'Prefer *for* over *each*.') do
|
38
38
|
opposite_style_detected
|
39
39
|
end
|
40
40
|
else
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cop enforces the use of a single string formatting utility.
|
7
|
+
# Valid options include Kernel#format, Kernel#sprintf and String#%.
|
8
|
+
#
|
9
|
+
# The detection of String#% cannot be implemented in a reliable
|
10
|
+
# manner for all cases, so only two scenarios are considered -
|
11
|
+
# if the first argument is a string literal and if the second
|
12
|
+
# argument is an array literal.
|
13
|
+
class FormatString < Cop
|
14
|
+
include ConfigurableEnforcedStyle
|
15
|
+
|
16
|
+
def on_send(node)
|
17
|
+
add_offense(node, :selector) if offending_node?(node)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def offending_node?(node)
|
23
|
+
case style
|
24
|
+
when :format
|
25
|
+
sprintf?(node) || percent?(node)
|
26
|
+
when :sprintf
|
27
|
+
format?(node) || percent?(node)
|
28
|
+
when :percent
|
29
|
+
format?(node) || sprintf?(node)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def format?(node)
|
34
|
+
command?(:format, node)
|
35
|
+
end
|
36
|
+
|
37
|
+
def sprintf?(node)
|
38
|
+
command?(:sprintf, node)
|
39
|
+
end
|
40
|
+
|
41
|
+
def percent?(node)
|
42
|
+
receiver_node, method_name, *arg_nodes = *node
|
43
|
+
|
44
|
+
method_name == :% &&
|
45
|
+
([:str, :dstr].include?(receiver_node.type) ||
|
46
|
+
arg_nodes[0].type == :array)
|
47
|
+
end
|
48
|
+
|
49
|
+
def message(node)
|
50
|
+
_receiver_node, method_name, *_arg_nodes = *node
|
51
|
+
|
52
|
+
preferred =
|
53
|
+
if style == :percent
|
54
|
+
'String#%'
|
55
|
+
else
|
56
|
+
style
|
57
|
+
end
|
58
|
+
|
59
|
+
method_name = 'String#%' if method_name == :%
|
60
|
+
|
61
|
+
"Favor #{preferred} over #{method_name}."
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -4,7 +4,7 @@ module Rubocop
|
|
4
4
|
module Cop
|
5
5
|
module Style
|
6
6
|
# This cops looks for uses of global variables.
|
7
|
-
# It does not report
|
7
|
+
# It does not report offenses for built-in global variables.
|
8
8
|
# Built-in global variables are allowed by default. Additionally
|
9
9
|
# users can allow additional variables via the AllowedVariables option.
|
10
10
|
#
|
@@ -66,7 +66,7 @@ module Rubocop
|
|
66
66
|
def check(node)
|
67
67
|
global_var, = *node
|
68
68
|
|
69
|
-
|
69
|
+
add_offense(node, :name) unless allowed_var?(global_var)
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
@@ -8,7 +8,7 @@ module Rubocop
|
|
8
8
|
# It can enforce either the use of the class hash rocket syntax or
|
9
9
|
# the use of the newer Ruby 1.9 syntax (when applicable).
|
10
10
|
#
|
11
|
-
# A separate
|
11
|
+
# A separate offense is registered for each problematic pair.
|
12
12
|
class HashSyntax < Cop
|
13
13
|
include ConfigurableEnforcedStyle
|
14
14
|
|
@@ -41,7 +41,7 @@ module Rubocop
|
|
41
41
|
# Don't do the correction if there is no space before '=>'. The
|
42
42
|
# combined corrections of this cop and SpaceAroundOperators could
|
43
43
|
# produce code with illegal syntax.
|
44
|
-
|
44
|
+
return
|
45
45
|
end
|
46
46
|
|
47
47
|
@corrections << lambda do |corrector|
|
@@ -65,7 +65,7 @@ module Rubocop
|
|
65
65
|
def check(pairs, delim, msg)
|
66
66
|
pairs.each do |pair|
|
67
67
|
if pair.loc.operator && pair.loc.operator.is?(delim)
|
68
|
-
|
68
|
+
add_offense(pair,
|
69
69
|
pair.loc.expression.begin.join(pair.loc.operator),
|
70
70
|
msg) do
|
71
71
|
opposite_style_detected
|
@@ -5,6 +5,7 @@ module Rubocop
|
|
5
5
|
module Style
|
6
6
|
# Checks for if and unless statements that would fit on one line
|
7
7
|
# if written as a modifier if/unless.
|
8
|
+
# The maximum line length is configurable.
|
8
9
|
class IfUnlessModifier < Cop
|
9
10
|
include StatementModifier
|
10
11
|
|
@@ -23,7 +24,7 @@ module Rubocop
|
|
23
24
|
next if if_else?(node)
|
24
25
|
|
25
26
|
if check(node, processed_source.comments)
|
26
|
-
|
27
|
+
add_offense(node, :keyword,
|
27
28
|
error_message(node.loc.keyword.source))
|
28
29
|
end
|
29
30
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cops checks the indentation of the first element in an array
|
7
|
+
# literal where the opening bracket and the first element are on separate
|
8
|
+
# lines. The other elements' indentations are handled by the AlignArray
|
9
|
+
# cop.
|
10
|
+
#
|
11
|
+
# Array literals shall have their first element indented one step (2
|
12
|
+
# spaces) more than the start of the line where the opening bracket is.
|
13
|
+
class IndentArray < Cop
|
14
|
+
include AutocorrectAlignment
|
15
|
+
|
16
|
+
def on_array(node)
|
17
|
+
first_pair = node.children.first
|
18
|
+
return if first_pair.nil?
|
19
|
+
|
20
|
+
left_bracket = node.loc.begin
|
21
|
+
return if left_bracket.nil?
|
22
|
+
|
23
|
+
return if first_pair.loc.expression.line == left_bracket.line
|
24
|
+
|
25
|
+
column = first_pair.loc.expression.column
|
26
|
+
base_column = left_bracket.source_line =~ /\S/
|
27
|
+
expected_column = base_column + IndentationWidth::CORRECT_INDENTATION
|
28
|
+
@column_delta = expected_column - column
|
29
|
+
|
30
|
+
add_offense(first_pair, :expression) if @column_delta != 0
|
31
|
+
end
|
32
|
+
|
33
|
+
def message(_)
|
34
|
+
format('Use %d spaces for indentation in an array, relative to ' \
|
35
|
+
'the start of the line where the left bracket is.',
|
36
|
+
IndentationWidth::CORRECT_INDENTATION)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cops checks the indentation of the first key in a hash literal
|
7
|
+
# where the opening brace and the first key are on separate lines. The
|
8
|
+
# other keys' indentations are handled by the AlignHash cop.
|
9
|
+
#
|
10
|
+
# Hash literals that are arguments in a method call with parentheses, and
|
11
|
+
# where the opening curly brace of the hash is on the same line as the
|
12
|
+
# opening parenthesis of the method call, shall have their first key
|
13
|
+
# indented one step (two spaces) more than the position inside the
|
14
|
+
# opening parenthesis.
|
15
|
+
#
|
16
|
+
# Other hash literals shall have their first key indented one step more
|
17
|
+
# than the start of the line where the opening curly brace is.
|
18
|
+
class IndentHash < Cop
|
19
|
+
include AutocorrectAlignment
|
20
|
+
include ConfigurableEnforcedStyle
|
21
|
+
|
22
|
+
def on_hash(node)
|
23
|
+
left_brace = node.loc.begin
|
24
|
+
check(node, left_brace, nil) if left_brace
|
25
|
+
end
|
26
|
+
|
27
|
+
def on_send(node)
|
28
|
+
_receiver, _method_name, *args = *node
|
29
|
+
left_parenthesis = node.loc.begin
|
30
|
+
return unless left_parenthesis
|
31
|
+
|
32
|
+
args.each do |arg|
|
33
|
+
on_node(:hash, arg, :send) do |hash_node|
|
34
|
+
left_brace = hash_node.loc.begin
|
35
|
+
if left_brace && left_brace.line == left_parenthesis.line
|
36
|
+
check(hash_node, left_brace, left_parenthesis)
|
37
|
+
ignore_node(hash_node)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def check(hash_node, left_brace, left_parenthesis)
|
46
|
+
return if ignored_node?(hash_node)
|
47
|
+
|
48
|
+
first_pair = hash_node.children.first
|
49
|
+
return if first_pair.nil?
|
50
|
+
|
51
|
+
left_brace = hash_node.loc.begin
|
52
|
+
return if first_pair.loc.expression.line == left_brace.line
|
53
|
+
|
54
|
+
column = first_pair.loc.expression.column
|
55
|
+
@column_delta =
|
56
|
+
expected_column(left_brace, left_parenthesis) - column
|
57
|
+
|
58
|
+
if @column_delta == 0
|
59
|
+
correct_style_detected
|
60
|
+
else
|
61
|
+
add_offense(first_pair, :expression,
|
62
|
+
message(base_description(left_parenthesis))) do
|
63
|
+
if column == unexpected_column(left_brace, left_parenthesis)
|
64
|
+
opposite_style_detected
|
65
|
+
else
|
66
|
+
unrecognized_style_detected
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Returns the expected, or correct indentation.
|
73
|
+
def expected_column(left_brace, left_parenthesis)
|
74
|
+
base_column =
|
75
|
+
if left_parenthesis && style == :special_inside_parentheses
|
76
|
+
left_parenthesis.column + 1
|
77
|
+
else
|
78
|
+
left_brace.source_line =~ /\S/
|
79
|
+
end
|
80
|
+
|
81
|
+
base_column + IndentationWidth::CORRECT_INDENTATION
|
82
|
+
end
|
83
|
+
|
84
|
+
# Returns the description of what the correct indentation is based on.
|
85
|
+
def base_description(left_parenthesis)
|
86
|
+
if left_parenthesis && style == :special_inside_parentheses
|
87
|
+
'the first position after the preceding left parenthesis'
|
88
|
+
else
|
89
|
+
'the start of the line where the left curly brace is'
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
# Returns the "unexpected column", which is the column that would be
|
94
|
+
# correct if the configuration was changed.
|
95
|
+
def unexpected_column(left_brace, left_parenthesis)
|
96
|
+
# Set a crazy value by default, indicating that there's no other
|
97
|
+
# configuration that can be chosen to make the used indentation
|
98
|
+
# accepted.
|
99
|
+
unexpected_base_column = -1000
|
100
|
+
|
101
|
+
if left_parenthesis
|
102
|
+
unexpected_base_column = if style == :special_inside_parentheses
|
103
|
+
left_brace.source_line =~ /\S/
|
104
|
+
else
|
105
|
+
left_parenthesis.column + 1
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
unexpected_base_column + IndentationWidth::CORRECT_INDENTATION
|
110
|
+
end
|
111
|
+
|
112
|
+
def message(base_description)
|
113
|
+
format('Use %d spaces for indentation in a hash, relative to %s.',
|
114
|
+
IndentationWidth::CORRECT_INDENTATION, base_description)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|