rubocop 0.29.1 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rubocop might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +73 -1
- data/README.md +11 -2
- data/config/default.yml +194 -6
- data/config/disabled.yml +25 -1
- data/config/enabled.yml +74 -12
- data/lib/rubocop.rb +19 -2
- data/lib/rubocop/config.rb +23 -3
- data/lib/rubocop/config_loader.rb +9 -1
- data/lib/rubocop/cop/autocorrect_logic.rb +26 -0
- data/lib/rubocop/cop/cop.rb +33 -17
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +16 -4
- data/lib/rubocop/cop/lint/block_alignment.rb +5 -14
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +61 -0
- data/lib/rubocop/cop/lint/void.rb +11 -3
- data/lib/rubocop/cop/mixin/on_normal_if_unless.rb +17 -0
- data/lib/rubocop/cop/performance/detect.rb +72 -0
- data/lib/rubocop/cop/performance/flat_map.rb +64 -0
- data/lib/rubocop/cop/performance/reverse_each.rb +43 -0
- data/lib/rubocop/cop/performance/sample.rb +58 -0
- data/lib/rubocop/cop/performance/size.rb +64 -0
- data/lib/rubocop/cop/rails/date.rb +121 -0
- data/lib/rubocop/cop/rails/find_by.rb +52 -0
- data/lib/rubocop/cop/rails/find_each.rb +41 -0
- data/lib/rubocop/cop/rails/time_zone.rb +93 -0
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +45 -0
- data/lib/rubocop/cop/style/block_delimiters.rb +186 -0
- data/lib/rubocop/cop/style/closing_parenthesis_indentation.rb +76 -0
- data/lib/rubocop/cop/style/command_literal.rb +120 -0
- data/lib/rubocop/cop/style/copyright.rb +87 -0
- data/lib/rubocop/cop/style/documentation.rb +32 -0
- data/lib/rubocop/cop/style/empty_else.rb +85 -16
- data/lib/rubocop/cop/style/encoding.rb +14 -2
- data/lib/rubocop/cop/style/end_of_line.rb +5 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +86 -23
- data/lib/rubocop/cop/style/if_unless_modifier.rb +15 -0
- data/lib/rubocop/cop/style/indentation_consistency.rb +13 -6
- data/lib/rubocop/cop/style/indentation_width.rb +34 -10
- data/lib/rubocop/cop/style/lambda.rb +32 -17
- data/lib/rubocop/cop/style/line_end_concatenation.rb +4 -0
- data/lib/rubocop/cop/style/missing_else.rb +72 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +89 -58
- data/lib/rubocop/cop/style/space_around_operators.rb +13 -2
- data/lib/rubocop/cop/style/space_before_block_braces.rb +3 -3
- data/lib/rubocop/cop/style/space_inside_block_braces.rb +9 -5
- data/lib/rubocop/cop/style/symbol_literal.rb +36 -0
- data/lib/rubocop/cop/style/trailing_blank_lines.rb +7 -0
- data/lib/rubocop/cop/style/trailing_comma.rb +21 -7
- data/lib/rubocop/cop/style/trivial_accessors.rb +17 -3
- data/lib/rubocop/cop/style/unneeded_capital_w.rb +4 -6
- data/lib/rubocop/cop/style/while_until_modifier.rb +10 -0
- data/lib/rubocop/cop/util.rb +24 -19
- data/lib/rubocop/cop/variable_force.rb +14 -0
- data/lib/rubocop/cop/variable_force/reference.rb +10 -4
- data/lib/rubocop/formatter/html_formatter.rb +10 -4
- data/lib/rubocop/formatter/text_util.rb +5 -7
- data/lib/rubocop/options.rb +47 -45
- data/lib/rubocop/path_util.rb +12 -8
- data/lib/rubocop/processed_source.rb +12 -1
- data/lib/rubocop/rake_task.rb +2 -2
- data/lib/rubocop/version.rb +1 -1
- data/relnotes/v0.30.0.md +145 -0
- data/rubocop.gemspec +15 -3
- metadata +22 -545
- data/.gitignore +0 -54
- data/.rspec +0 -1
- data/.rubocop.yml +0 -11
- data/.rubocop_todo.yml +0 -28
- data/.travis.yml +0 -22
- data/Gemfile +0 -15
- data/Rakefile +0 -41
- data/lib/rubocop/cop/style/blocks.rb +0 -80
- data/lib/rubocop/cop/style/unneeded_percent_x.rb +0 -25
- data/logo/rubocop-final-logo.eps +0 -0
- data/spec/.rubocop.yml +0 -5
- data/spec/fixtures/html_formatter/expected.html +0 -495
- data/spec/fixtures/html_formatter/project/app/controllers/application_controller.rb +0 -5
- data/spec/fixtures/html_formatter/project/app/controllers/books_controller.rb +0 -74
- data/spec/fixtures/html_formatter/project/app/models/book.rb +0 -5
- data/spec/isolated_environment_spec.rb +0 -24
- data/spec/project_spec.rb +0 -119
- data/spec/rubocop/cli_spec.rb +0 -2740
- data/spec/rubocop/comment_config_spec.rb +0 -105
- data/spec/rubocop/config_loader_spec.rb +0 -377
- data/spec/rubocop/config_spec.rb +0 -235
- data/spec/rubocop/config_store_spec.rb +0 -53
- data/spec/rubocop/cop/commissioner_spec.rb +0 -85
- data/spec/rubocop/cop/cop_spec.rb +0 -135
- data/spec/rubocop/cop/corrector_spec.rb +0 -59
- data/spec/rubocop/cop/force_spec.rb +0 -29
- data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +0 -113
- data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +0 -35
- data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +0 -130
- data/spec/rubocop/cop/lint/block_alignment_spec.rb +0 -533
- data/spec/rubocop/cop/lint/condition_position_spec.rb +0 -51
- data/spec/rubocop/cop/lint/debugger_spec.rb +0 -73
- data/spec/rubocop/cop/lint/def_end_alignment_spec.rb +0 -108
- data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +0 -38
- data/spec/rubocop/cop/lint/duplicate_methods_spec.rb +0 -189
- data/spec/rubocop/cop/lint/else_layout_spec.rb +0 -65
- data/spec/rubocop/cop/lint/empty_ensure_spec.rb +0 -27
- data/spec/rubocop/cop/lint/empty_interpolation_spec.rb +0 -18
- data/spec/rubocop/cop/lint/end_alignment_spec.rb +0 -91
- data/spec/rubocop/cop/lint/end_in_method_spec.rb +0 -29
- data/spec/rubocop/cop/lint/ensure_return_spec.rb +0 -39
- data/spec/rubocop/cop/lint/eval_spec.rb +0 -33
- data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +0 -30
- data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +0 -33
- data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +0 -172
- data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +0 -31
- data/spec/rubocop/cop/lint/loop_spec.rb +0 -27
- data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +0 -57
- data/spec/rubocop/cop/lint/require_parentheses_spec.rb +0 -82
- data/spec/rubocop/cop/lint/rescue_exception_spec.rb +0 -123
- data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +0 -237
- data/spec/rubocop/cop/lint/space_before_first_arg_spec.rb +0 -66
- data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +0 -51
- data/spec/rubocop/cop/lint/syntax_spec.rb +0 -34
- data/spec/rubocop/cop/lint/underscore_prefixed_variable_name_spec.rb +0 -179
- data/spec/rubocop/cop/lint/unreachable_code_spec.rb +0 -63
- data/spec/rubocop/cop/lint/unused_block_argument_spec.rb +0 -231
- data/spec/rubocop/cop/lint/unused_method_argument_spec.rb +0 -278
- data/spec/rubocop/cop/lint/useless_access_modifier_spec.rb +0 -192
- data/spec/rubocop/cop/lint/useless_assignment_spec.rb +0 -1778
- data/spec/rubocop/cop/lint/useless_comparison_spec.rb +0 -30
- data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +0 -48
- data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +0 -211
- data/spec/rubocop/cop/lint/void_spec.rb +0 -64
- data/spec/rubocop/cop/metrics/abc_size_spec.rb +0 -109
- data/spec/rubocop/cop/metrics/block_nesting_spec.rb +0 -156
- data/spec/rubocop/cop/metrics/class_length_spec.rb +0 -131
- data/spec/rubocop/cop/metrics/cyclomatic_complexity_spec.rb +0 -204
- data/spec/rubocop/cop/metrics/line_length_spec.rb +0 -136
- data/spec/rubocop/cop/metrics/method_length_spec.rb +0 -147
- data/spec/rubocop/cop/metrics/parameter_lists_spec.rb +0 -44
- data/spec/rubocop/cop/metrics/perceived_complexity_spec.rb +0 -222
- data/spec/rubocop/cop/offense_spec.rb +0 -133
- data/spec/rubocop/cop/rails/action_filter_spec.rb +0 -64
- data/spec/rubocop/cop/rails/default_scope_spec.rb +0 -37
- data/spec/rubocop/cop/rails/delegate_spec.rb +0 -177
- data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +0 -13
- data/spec/rubocop/cop/rails/output_spec.rb +0 -37
- data/spec/rubocop/cop/rails/read_write_attribute_spec.rb +0 -130
- data/spec/rubocop/cop/rails/scope_args_spec.rb +0 -25
- data/spec/rubocop/cop/rails/validation_spec.rb +0 -28
- data/spec/rubocop/cop/severity_spec.rb +0 -113
- data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +0 -421
- data/spec/rubocop/cop/style/accessor_method_name_spec.rb +0 -81
- data/spec/rubocop/cop/style/alias_spec.rb +0 -59
- data/spec/rubocop/cop/style/align_array_spec.rb +0 -123
- data/spec/rubocop/cop/style/align_hash_spec.rb +0 -411
- data/spec/rubocop/cop/style/align_parameters_spec.rb +0 -431
- data/spec/rubocop/cop/style/and_or_spec.rb +0 -235
- data/spec/rubocop/cop/style/array_join_spec.rb +0 -29
- data/spec/rubocop/cop/style/ascii_comments_spec.rb +0 -21
- data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +0 -36
- data/spec/rubocop/cop/style/attr_spec.rb +0 -29
- data/spec/rubocop/cop/style/bare_percent_literals_spec.rb +0 -132
- data/spec/rubocop/cop/style/begin_block_spec.rb +0 -13
- data/spec/rubocop/cop/style/block_comments_spec.rb +0 -45
- data/spec/rubocop/cop/style/block_end_newline_spec.rb +0 -61
- data/spec/rubocop/cop/style/blocks_spec.rb +0 -121
- data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +0 -288
- data/spec/rubocop/cop/style/case_equality_spec.rb +0 -13
- data/spec/rubocop/cop/style/case_indentation_spec.rb +0 -293
- data/spec/rubocop/cop/style/character_literal_spec.rb +0 -37
- data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +0 -40
- data/spec/rubocop/cop/style/class_and_module_children_spec.rb +0 -133
- data/spec/rubocop/cop/style/class_check_spec.rb +0 -41
- data/spec/rubocop/cop/style/class_methods_spec.rb +0 -80
- data/spec/rubocop/cop/style/class_vars_spec.rb +0 -19
- data/spec/rubocop/cop/style/collection_methods_spec.rb +0 -48
- data/spec/rubocop/cop/style/colon_method_call_spec.rb +0 -65
- data/spec/rubocop/cop/style/comment_annotation_spec.rb +0 -86
- data/spec/rubocop/cop/style/comment_indentation_spec.rb +0 -179
- data/spec/rubocop/cop/style/constant_name_spec.rb +0 -65
- data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +0 -43
- data/spec/rubocop/cop/style/deprecated_hash_methods_spec.rb +0 -45
- data/spec/rubocop/cop/style/documentation_spec.rb +0 -146
- data/spec/rubocop/cop/style/dot_position_spec.rb +0 -132
- data/spec/rubocop/cop/style/double_negation_spec.rb +0 -22
- data/spec/rubocop/cop/style/each_with_object_spec.rb +0 -73
- data/spec/rubocop/cop/style/else_alignment_spec.rb +0 -506
- data/spec/rubocop/cop/style/empty_else_spec.rb +0 -100
- data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +0 -135
- data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +0 -178
- data/spec/rubocop/cop/style/empty_lines_around_block_body_spec.rb +0 -103
- data/spec/rubocop/cop/style/empty_lines_around_class_body_spec.rb +0 -135
- data/spec/rubocop/cop/style/empty_lines_around_method_body_spec.rb +0 -90
- data/spec/rubocop/cop/style/empty_lines_around_module_body_spec.rb +0 -79
- data/spec/rubocop/cop/style/empty_lines_spec.rb +0 -51
- data/spec/rubocop/cop/style/empty_literal_spec.rb +0 -117
- data/spec/rubocop/cop/style/encoding_spec.rb +0 -139
- data/spec/rubocop/cop/style/end_block_spec.rb +0 -13
- data/spec/rubocop/cop/style/end_of_line_spec.rb +0 -65
- data/spec/rubocop/cop/style/even_odd_spec.rb +0 -164
- data/spec/rubocop/cop/style/extra_spacing_spec.rb +0 -68
- data/spec/rubocop/cop/style/file_name_spec.rb +0 -84
- data/spec/rubocop/cop/style/first_parameter_indentation_spec.rb +0 -304
- data/spec/rubocop/cop/style/flip_flop_spec.rb +0 -23
- data/spec/rubocop/cop/style/for_spec.rb +0 -105
- data/spec/rubocop/cop/style/format_string_spec.rb +0 -184
- data/spec/rubocop/cop/style/global_vars_spec.rb +0 -34
- data/spec/rubocop/cop/style/guard_clause_spec.rb +0 -172
- data/spec/rubocop/cop/style/hash_syntax_spec.rb +0 -137
- data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +0 -146
- data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +0 -24
- data/spec/rubocop/cop/style/indent_array_spec.rb +0 -173
- data/spec/rubocop/cop/style/indent_hash_spec.rb +0 -367
- data/spec/rubocop/cop/style/indentation_consistency_spec.rb +0 -509
- data/spec/rubocop/cop/style/indentation_width_spec.rb +0 -885
- data/spec/rubocop/cop/style/infinite_loop_spec.rb +0 -48
- data/spec/rubocop/cop/style/inline_comment_spec.rb +0 -13
- data/spec/rubocop/cop/style/lambda_call_spec.rb +0 -65
- data/spec/rubocop/cop/style/lambda_spec.rb +0 -76
- data/spec/rubocop/cop/style/leading_comment_space_spec.rb +0 -64
- data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +0 -184
- data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +0 -59
- data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +0 -60
- data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +0 -108
- data/spec/rubocop/cop/style/method_name_spec.rb +0 -125
- data/spec/rubocop/cop/style/module_function_spec.rb +0 -24
- data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +0 -78
- data/spec/rubocop/cop/style/multiline_block_layout_spec.rb +0 -199
- data/spec/rubocop/cop/style/multiline_if_then_spec.rb +0 -134
- data/spec/rubocop/cop/style/multiline_operation_indentation_spec.rb +0 -464
- data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +0 -18
- data/spec/rubocop/cop/style/negated_if_spec.rb +0 -102
- data/spec/rubocop/cop/style/negated_while_spec.rb +0 -64
- data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +0 -21
- data/spec/rubocop/cop/style/next_spec.rb +0 -301
- data/spec/rubocop/cop/style/nil_comparison_spec.rb +0 -29
- data/spec/rubocop/cop/style/non_nil_check_spec.rb +0 -132
- data/spec/rubocop/cop/style/not_spec.rb +0 -28
- data/spec/rubocop/cop/style/numeric_literals_spec.rb +0 -80
- data/spec/rubocop/cop/style/one_line_conditional_spec.rb +0 -13
- data/spec/rubocop/cop/style/op_method_spec.rb +0 -85
- data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +0 -161
- data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +0 -316
- data/spec/rubocop/cop/style/percent_q_literals_spec.rb +0 -122
- data/spec/rubocop/cop/style/perl_backrefs_spec.rb +0 -22
- data/spec/rubocop/cop/style/predicate_name_spec.rb +0 -57
- data/spec/rubocop/cop/style/proc_spec.rb +0 -27
- data/spec/rubocop/cop/style/raise_args_spec.rb +0 -87
- data/spec/rubocop/cop/style/redundant_begin_spec.rb +0 -121
- data/spec/rubocop/cop/style/redundant_exception_spec.rb +0 -59
- data/spec/rubocop/cop/style/redundant_return_spec.rb +0 -171
- data/spec/rubocop/cop/style/redundant_self_spec.rb +0 -186
- data/spec/rubocop/cop/style/regexp_literal_spec.rb +0 -188
- data/spec/rubocop/cop/style/rescue_modifier_spec.rb +0 -116
- data/spec/rubocop/cop/style/self_assignment_spec.rb +0 -49
- data/spec/rubocop/cop/style/semicolon_spec.rb +0 -114
- data/spec/rubocop/cop/style/signal_exception_spec.rb +0 -289
- data/spec/rubocop/cop/style/single_line_block_params_spec.rb +0 -82
- data/spec/rubocop/cop/style/single_line_methods_spec.rb +0 -94
- data/spec/rubocop/cop/style/single_space_before_first_arg_spec.rb +0 -63
- data/spec/rubocop/cop/style/space_after_colon_spec.rb +0 -55
- data/spec/rubocop/cop/style/space_after_comma_spec.rb +0 -30
- data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +0 -84
- data/spec/rubocop/cop/style/space_after_method_name_spec.rb +0 -70
- data/spec/rubocop/cop/style/space_after_not_spec.rb +0 -22
- data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +0 -23
- data/spec/rubocop/cop/style/space_around_block_parameters_spec.rb +0 -155
- data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +0 -95
- data/spec/rubocop/cop/style/space_around_operators_spec.rb +0 -330
- data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +0 -73
- data/spec/rubocop/cop/style/space_before_comma_spec.rb +0 -42
- data/spec/rubocop/cop/style/space_before_comment_spec.rb +0 -34
- data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +0 -70
- data/spec/rubocop/cop/style/space_before_semicolon_spec.rb +0 -28
- data/spec/rubocop/cop/style/space_inside_block_braces_spec.rb +0 -317
- data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +0 -83
- data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +0 -147
- data/spec/rubocop/cop/style/space_inside_parens_spec.rb +0 -44
- data/spec/rubocop/cop/style/space_inside_range_literal_spec.rb +0 -64
- data/spec/rubocop/cop/style/special_global_vars_spec.rb +0 -62
- data/spec/rubocop/cop/style/string_literals_in_interpolation_spec.rb +0 -99
- data/spec/rubocop/cop/style/string_literals_spec.rb +0 -228
- data/spec/rubocop/cop/style/struct_inheritance_spec.rb +0 -44
- data/spec/rubocop/cop/style/symbol_array_spec.rb +0 -37
- data/spec/rubocop/cop/style/symbol_proc_spec.rb +0 -100
- data/spec/rubocop/cop/style/tab_spec.rb +0 -47
- data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +0 -83
- data/spec/rubocop/cop/style/trailing_comma_spec.rb +0 -390
- data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +0 -31
- data/spec/rubocop/cop/style/trivial_accessors_spec.rb +0 -558
- data/spec/rubocop/cop/style/unless_else_spec.rb +0 -23
- data/spec/rubocop/cop/style/unneeded_capital_w_spec.rb +0 -90
- data/spec/rubocop/cop/style/unneeded_percent_q_spec.rb +0 -127
- data/spec/rubocop/cop/style/unneeded_percent_x_spec.rb +0 -34
- data/spec/rubocop/cop/style/variable_interpolation_spec.rb +0 -76
- data/spec/rubocop/cop/style/variable_name_spec.rb +0 -107
- data/spec/rubocop/cop/style/when_then_spec.rb +0 -42
- data/spec/rubocop/cop/style/while_until_do_spec.rb +0 -55
- data/spec/rubocop/cop/style/while_until_modifier_spec.rb +0 -93
- data/spec/rubocop/cop/style/word_array_spec.rb +0 -117
- data/spec/rubocop/cop/team_spec.rb +0 -190
- data/spec/rubocop/cop/util_spec.rb +0 -102
- data/spec/rubocop/cop/variable_force/assignment_spec.rb +0 -200
- data/spec/rubocop/cop/variable_force/locatable_spec.rb +0 -699
- data/spec/rubocop/cop/variable_force/reference_spec.rb +0 -19
- data/spec/rubocop/cop/variable_force/scope_spec.rb +0 -319
- data/spec/rubocop/cop/variable_force/variable_spec.rb +0 -59
- data/spec/rubocop/cop/variable_force/variable_table_spec.rb +0 -276
- data/spec/rubocop/cop/variable_force_spec.rb +0 -26
- data/spec/rubocop/formatter/base_formatter_spec.rb +0 -191
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +0 -114
- data/spec/rubocop/formatter/colorizable_spec.rb +0 -107
- data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +0 -50
- data/spec/rubocop/formatter/disabled_lines_formatter_spec.rb +0 -67
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +0 -63
- data/spec/rubocop/formatter/file_list_formatter_spec.rb +0 -33
- data/spec/rubocop/formatter/formatter_set_spec.rb +0 -141
- data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +0 -129
- data/spec/rubocop/formatter/html_formatter_spec.rb +0 -48
- data/spec/rubocop/formatter/json_formatter_spec.rb +0 -152
- data/spec/rubocop/formatter/offense_count_formatter_spec.rb +0 -75
- data/spec/rubocop/formatter/progress_formatter_spec.rb +0 -182
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +0 -135
- data/spec/rubocop/formatter/text_util_spec.rb +0 -55
- data/spec/rubocop/options_spec.rb +0 -181
- data/spec/rubocop/path_util_spec.rb +0 -77
- data/spec/rubocop/processed_source_spec.rb +0 -184
- data/spec/rubocop/rake_task_spec.rb +0 -122
- data/spec/rubocop/runner_spec.rb +0 -99
- data/spec/rubocop/string_util_spec.rb +0 -46
- data/spec/rubocop/target_finder_spec.rb +0 -245
- data/spec/rubocop/token_spec.rb +0 -29
- data/spec/spec_helper.rb +0 -39
- data/spec/support/cop_helper.rb +0 -75
- data/spec/support/cops/class_must_be_a_module_cop.rb +0 -19
- data/spec/support/cops/module_must_be_a_class_cop.rb +0 -19
- data/spec/support/coverage.rb +0 -15
- data/spec/support/custom_matchers.rb +0 -58
- data/spec/support/file_helper.rb +0 -23
- data/spec/support/jruby_workaround.rb +0 -15
- data/spec/support/mri_syntax_checker.rb +0 -73
- data/spec/support/shared_contexts.rb +0 -53
- data/spec/support/shared_examples.rb +0 -55
- data/spec/support/statement_modifier_helper.rb +0 -41
@@ -3,81 +3,112 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module Style
|
6
|
-
# This cop
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# This cop enforces using // or %r around regular expressions.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # Good if EnforcedStyle is slashes or mixed, bad if percent_r.
|
10
|
+
# snake_case = /^[\dA-Z_]+$/
|
11
|
+
#
|
12
|
+
# # Good if EnforcedStyle is percent_r, bad if slashes or mixed.
|
13
|
+
# snake_case = %r{^[\dA-Z_]+$}
|
14
|
+
#
|
15
|
+
# # Good if EnforcedStyle is slashes, bad if percent_r or mixed.
|
16
|
+
# regex = /
|
17
|
+
# foo
|
18
|
+
# (bar)
|
19
|
+
# (baz)
|
20
|
+
# /x
|
21
|
+
#
|
22
|
+
# # Good if EnforcedStyle is percent_r or mixed, bad if slashes.
|
23
|
+
# regex = %r{
|
24
|
+
# foo
|
25
|
+
# (bar)
|
26
|
+
# (baz)
|
27
|
+
# }x
|
28
|
+
#
|
29
|
+
# # Bad unless AllowInnerSlashes is true.
|
30
|
+
# x =~ /home\//
|
9
31
|
class RegexpLiteral < Cop
|
10
|
-
|
11
|
-
|
12
|
-
|
32
|
+
include ConfigurableEnforcedStyle
|
33
|
+
|
34
|
+
MSG_USE_SLASHES = 'Use `//` around regular expression.'
|
35
|
+
MSG_USE_PERCENT_R = 'Use `%r` around regular expression.'
|
13
36
|
|
14
37
|
def on_regexp(node)
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
if delimiter_start == '/'
|
21
|
-
if slashes > max_slashes
|
22
|
-
add_offense(node, :expression, error_message(''))
|
23
|
-
end
|
24
|
-
elsif slashes <= max_slashes
|
25
|
-
add_offense(node, :expression, error_message('only '))
|
38
|
+
if slash_literal?(node)
|
39
|
+
check_slash_literal(node)
|
40
|
+
else
|
41
|
+
check_percent_r_literal(node)
|
26
42
|
end
|
27
|
-
|
28
|
-
configure_max(delimiter_start, slashes) if @options[:auto_gen_config]
|
29
43
|
end
|
30
44
|
|
31
45
|
private
|
32
46
|
|
33
|
-
def
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
47
|
+
def check_slash_literal(node)
|
48
|
+
return if style == :slashes && !contains_disallowed_slash?(node)
|
49
|
+
return if style == :mixed &&
|
50
|
+
single_line?(node) &&
|
51
|
+
!contains_disallowed_slash?(node)
|
52
|
+
|
53
|
+
add_offense(node, :expression, MSG_USE_PERCENT_R)
|
39
54
|
end
|
40
55
|
|
41
|
-
def
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
56
|
+
def check_percent_r_literal(node)
|
57
|
+
return if style == :slashes && contains_disallowed_slash?(node)
|
58
|
+
return if style == :percent_r
|
59
|
+
return if style == :mixed && multi_line?(node)
|
60
|
+
return if style == :mixed && contains_disallowed_slash?(node)
|
46
61
|
|
47
|
-
|
62
|
+
add_offense(node, :expression, MSG_USE_SLASHES)
|
63
|
+
end
|
48
64
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
# both requirements, just disable.
|
53
|
-
max = self.class.slash_count['/'].max
|
54
|
-
min = self.class.slash_count['%'].min
|
65
|
+
def contains_disallowed_slash?(node)
|
66
|
+
!allow_inner_slashes? && contains_slash?(node)
|
67
|
+
end
|
55
68
|
|
56
|
-
|
69
|
+
def contains_slash?(node)
|
70
|
+
node_body(node).include?('/')
|
57
71
|
end
|
58
72
|
|
59
|
-
def
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
elsif min < max_slashes + 1
|
67
|
-
if max < min
|
68
|
-
{ 'MaxSlashes' => min - 1 }
|
69
|
-
else
|
70
|
-
{ 'Enabled' => false }
|
71
|
-
end
|
72
|
-
end
|
73
|
+
def allow_inner_slashes?
|
74
|
+
cop_config['AllowInnerSlashes']
|
75
|
+
end
|
76
|
+
|
77
|
+
def node_body(node)
|
78
|
+
string_parts = node.children.select { |child| child.type == :str }
|
79
|
+
string_parts.map { |s| s.loc.expression.source }.join
|
73
80
|
end
|
74
81
|
|
75
|
-
def
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
82
|
+
def slash_literal?(node)
|
83
|
+
node.loc.begin.source == '/'
|
84
|
+
end
|
85
|
+
|
86
|
+
def single_line?(node)
|
87
|
+
!multi_line?(node)
|
88
|
+
end
|
89
|
+
|
90
|
+
def multi_line?(node)
|
91
|
+
block_length(node) > 1
|
92
|
+
end
|
93
|
+
|
94
|
+
def preferred_delimiters
|
95
|
+
config.for_cop('Style/PercentLiteralDelimiters') \
|
96
|
+
['PreferredDelimiters']['%r'].split(//)
|
97
|
+
end
|
98
|
+
|
99
|
+
def autocorrect(node)
|
100
|
+
fail CorrectionNotPossible if contains_slash?(node)
|
101
|
+
|
102
|
+
if slash_literal?(node)
|
103
|
+
replacement = ['%r', ''].zip(preferred_delimiters).map(&:join)
|
104
|
+
else
|
105
|
+
replacement = %w(/ /)
|
106
|
+
end
|
107
|
+
|
108
|
+
@corrections << lambda do |corrector|
|
109
|
+
corrector.replace(node.loc.begin, replacement.first)
|
110
|
+
corrector.replace(node.loc.end, replacement.last)
|
111
|
+
end
|
81
112
|
end
|
82
113
|
end
|
83
114
|
end
|
@@ -58,12 +58,23 @@ module RuboCop
|
|
58
58
|
with_space = range_with_surrounding_space(op)
|
59
59
|
if op.is?('**')
|
60
60
|
unless with_space.is?('**')
|
61
|
-
add_offense(with_space, op,
|
61
|
+
add_offense(with_space, op,
|
62
|
+
'Space around operator `**` detected.')
|
62
63
|
end
|
63
64
|
elsif with_space.source !~ /^\s.*\s$/
|
64
65
|
add_offense(with_space, op,
|
65
66
|
'Surrounding space missing for operator' \
|
66
|
-
"
|
67
|
+
" `#{op.source}`.")
|
68
|
+
elsif with_space.source =~ /(^ | $)/ && !multi_space_operator?(op)
|
69
|
+
add_offense(with_space, op,
|
70
|
+
"Operator `#{op.source}` should be surrounded" \
|
71
|
+
' with a single space.')
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def multi_space_operator?(op)
|
76
|
+
cop_config['MultiSpaceAllowedForOperators'].any? do |multi_space_op|
|
77
|
+
op.is?(multi_space_op)
|
67
78
|
end
|
68
79
|
end
|
69
80
|
|
@@ -11,11 +11,11 @@ module RuboCop
|
|
11
11
|
def on_block(node)
|
12
12
|
return if node.loc.begin.is?('do') # No braces.
|
13
13
|
|
14
|
-
# If braces are on separate lines, and the
|
15
|
-
# those braces will be changed to do..end by the user or by
|
14
|
+
# If braces are on separate lines, and the BlockDelimiters cop is
|
15
|
+
# enabled, those braces will be changed to do..end by the user or by
|
16
16
|
# auto-correct, so reporting space issues is not useful, and it
|
17
17
|
# creates auto-correct conflicts.
|
18
|
-
if config.for_cop('Style/
|
18
|
+
if config.for_cop('Style/BlockDelimiters')['Enabled'] &&
|
19
19
|
Util.block_length(node) > 0
|
20
20
|
return
|
21
21
|
end
|
@@ -14,11 +14,11 @@ module RuboCop
|
|
14
14
|
def on_block(node)
|
15
15
|
return if node.loc.begin.is?('do') # No braces.
|
16
16
|
|
17
|
-
# If braces are on separate lines, and the
|
18
|
-
# those braces will be changed to do..end by the user or by
|
17
|
+
# If braces are on separate lines, and the BlockDelimiters cop is
|
18
|
+
# enabled, those braces will be changed to do..end by the user or by
|
19
19
|
# auto-correct, so reporting space issues is not useful, and it
|
20
20
|
# creates auto-correct conflicts.
|
21
|
-
if config.for_cop('Style/
|
21
|
+
if config.for_cop('Style/BlockDelimiters')['Enabled'] &&
|
22
22
|
Util.block_length(node) > 0
|
23
23
|
return
|
24
24
|
end
|
@@ -80,7 +80,9 @@ module RuboCop
|
|
80
80
|
if left_brace.end_pos == args_delimiter.begin_pos &&
|
81
81
|
cop_config['SpaceBeforeBlockParameters']
|
82
82
|
offense(sb, left_brace.begin_pos, args_delimiter.end_pos,
|
83
|
-
'Space between { and | missing.')
|
83
|
+
'Space between { and | missing.') do
|
84
|
+
opposite_style_detected
|
85
|
+
end
|
84
86
|
end
|
85
87
|
else
|
86
88
|
# We indicate the position after the left brace. Otherwise it's
|
@@ -95,7 +97,9 @@ module RuboCop
|
|
95
97
|
if pipe?(args_delimiter)
|
96
98
|
unless cop_config['SpaceBeforeBlockParameters']
|
97
99
|
offense(sb, left_brace.end_pos, args_delimiter.begin_pos,
|
98
|
-
'Space between { and | detected.')
|
100
|
+
'Space between { and | detected.') do
|
101
|
+
opposite_style_detected
|
102
|
+
end
|
99
103
|
end
|
100
104
|
else
|
101
105
|
brace_with_space = range_with_surrounding_space(left_brace, :right)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Style
|
6
|
+
# This cop checks symbol literal syntax.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
#
|
10
|
+
# # bad
|
11
|
+
# :"symbol"
|
12
|
+
#
|
13
|
+
# # good
|
14
|
+
# :symbol
|
15
|
+
class SymbolLiteral < Cop
|
16
|
+
MSG = 'Do not use strings for word-like symbol literals.'
|
17
|
+
|
18
|
+
def on_sym(node)
|
19
|
+
sym_name = node.loc.expression.source
|
20
|
+
|
21
|
+
return unless sym_name =~ /\A:["'][A-Za-z_]\w*["']\z/
|
22
|
+
|
23
|
+
add_offense(node, :expression)
|
24
|
+
end
|
25
|
+
|
26
|
+
def autocorrect(node)
|
27
|
+
@corrections << lambda do |corrector|
|
28
|
+
current_name = node.loc.expression.source
|
29
|
+
corrector.replace(node.loc.expression,
|
30
|
+
current_name.gsub(/["']/, ''))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -12,6 +12,13 @@ module RuboCop
|
|
12
12
|
sb = processed_source.buffer
|
13
13
|
return if sb.source.empty?
|
14
14
|
|
15
|
+
# The extra text that comes after the last token could be __END__
|
16
|
+
# followed by some data to read. If so, we don't check it because
|
17
|
+
# there could be good reasons why it needs to end with a certain
|
18
|
+
# number of newlines.
|
19
|
+
extra = sb.source[processed_source.tokens.last.pos.end_pos..-1]
|
20
|
+
return if extra.strip.start_with?('__END__')
|
21
|
+
|
15
22
|
whitespace_at_end = sb.source[/\s*\Z/]
|
16
23
|
blank_lines = whitespace_at_end.count("\n") - 1
|
17
24
|
wanted_blank_lines = style == :final_newline ? 0 : 1
|
@@ -8,12 +8,14 @@ module RuboCop
|
|
8
8
|
# @example
|
9
9
|
# # always bad
|
10
10
|
# a = [1, 2,]
|
11
|
-
#
|
11
|
+
#
|
12
|
+
# # good if EnforcedStyleForMultiline is consistent_comma
|
13
|
+
# a = [
|
12
14
|
# 1, 2,
|
13
15
|
# 3,
|
14
16
|
# ]
|
15
17
|
#
|
16
|
-
# # good if EnforcedStyleForMultiline is comma
|
18
|
+
# # good if EnforcedStyleForMultiline is comma or consistent_comma
|
17
19
|
# a = [
|
18
20
|
# 1,
|
19
21
|
# 2,
|
@@ -66,6 +68,7 @@ module RuboCop
|
|
66
68
|
node.loc.end.begin_pos)
|
67
69
|
end
|
68
70
|
|
71
|
+
# rubocop:disable Metrics/MethodLength
|
69
72
|
def check(node, items, kind, begin_pos, end_pos)
|
70
73
|
sb = items.first.loc.expression.source_buffer
|
71
74
|
after_last_item = Parser::Source::Range.new(sb, begin_pos, end_pos)
|
@@ -73,11 +76,17 @@ module RuboCop
|
|
73
76
|
return if heredoc?(after_last_item.source)
|
74
77
|
|
75
78
|
comma_offset = after_last_item.source =~ /,/
|
76
|
-
should_have_comma =
|
79
|
+
should_have_comma =
|
80
|
+
[:comma, :consistent_comma].include?(style) && multiline?(node)
|
77
81
|
if comma_offset
|
78
82
|
unless should_have_comma
|
79
|
-
extra_info =
|
83
|
+
extra_info = case style
|
84
|
+
when :comma
|
80
85
|
', unless each item is on its own line'
|
86
|
+
when :consistent_comma
|
87
|
+
', unless items are split onto multiple lines'
|
88
|
+
else
|
89
|
+
''
|
81
90
|
end
|
82
91
|
avoid_comma(kind, after_last_item.begin_pos + comma_offset, sb,
|
83
92
|
extra_info)
|
@@ -86,6 +95,7 @@ module RuboCop
|
|
86
95
|
put_comma(items, kind, sb)
|
87
96
|
end
|
88
97
|
end
|
98
|
+
# rubocop:enable Metrics/MethodLength
|
89
99
|
|
90
100
|
def heredoc?(source_after_last_item)
|
91
101
|
source_after_last_item =~ /\w/
|
@@ -106,9 +116,13 @@ module RuboCop
|
|
106
116
|
else
|
107
117
|
node.children
|
108
118
|
end
|
109
|
-
items =
|
110
|
-
|
111
|
-
|
119
|
+
items = elements.map { |e| e.loc.expression }
|
120
|
+
if style == :consistent_comma
|
121
|
+
items.each_cons(2).any? { |a, b| !on_same_line?(a, b) }
|
122
|
+
else
|
123
|
+
items << node.loc.end
|
124
|
+
items.each_cons(2).all? { |a, b| !on_same_line?(a, b) }
|
125
|
+
end
|
112
126
|
end
|
113
127
|
|
114
128
|
def on_same_line?(a, b)
|
@@ -6,10 +6,19 @@ module RuboCop
|
|
6
6
|
# This cop looks for trivial reader/writer methods, that could
|
7
7
|
# have been created with the attr_* family of functions automatically.
|
8
8
|
class TrivialAccessors < Cop
|
9
|
-
include OnMethodDef
|
10
|
-
|
11
9
|
MSG = 'Use `attr_%s` to define trivial %s methods.'
|
12
10
|
|
11
|
+
def on_def(node)
|
12
|
+
method_name, args, body = *node
|
13
|
+
on_method_def(node, method_name, args, body)
|
14
|
+
end
|
15
|
+
|
16
|
+
def on_defs(node)
|
17
|
+
return if ignore_class_methods?
|
18
|
+
_scope, method_name, args, body = *node
|
19
|
+
on_method_def(node, method_name, args, body)
|
20
|
+
end
|
21
|
+
|
13
22
|
private
|
14
23
|
|
15
24
|
def on_method_def(node, method_name, args, body)
|
@@ -35,6 +44,10 @@ module RuboCop
|
|
35
44
|
cop_config['AllowDSLWriters']
|
36
45
|
end
|
37
46
|
|
47
|
+
def ignore_class_methods?
|
48
|
+
cop_config['IgnoreClassMethods']
|
49
|
+
end
|
50
|
+
|
38
51
|
def whitelist
|
39
52
|
whitelist = cop_config['Whitelist']
|
40
53
|
Array(whitelist).map(&:to_sym) + [:initialize]
|
@@ -65,7 +78,8 @@ module RuboCop
|
|
65
78
|
end
|
66
79
|
|
67
80
|
def looks_like_trivial_writer?(args, body)
|
68
|
-
args.children.size == 1 &&
|
81
|
+
args.children.size == 1 &&
|
82
|
+
![:restarg, :blockarg].include?(args.children[0].type) &&
|
69
83
|
body && body.type == :ivasgn &&
|
70
84
|
body.children[1] && body.children[1].type == :lvar
|
71
85
|
end
|
@@ -17,13 +17,11 @@ module RuboCop
|
|
17
17
|
private
|
18
18
|
|
19
19
|
def on_percent_literal(node)
|
20
|
-
node.children.
|
21
|
-
|
22
|
-
|
23
|
-
return
|
24
|
-
end
|
20
|
+
requires_interpolation = node.children.any? do |string|
|
21
|
+
string.type == :dstr ||
|
22
|
+
string.loc.expression.source =~ StringHelp::ESCAPED_CHAR_REGEXP
|
25
23
|
end
|
26
|
-
add_offense(node, :expression)
|
24
|
+
add_offense(node, :expression) unless requires_interpolation
|
27
25
|
end
|
28
26
|
|
29
27
|
def autocorrect(node)
|
@@ -17,6 +17,16 @@ module RuboCop
|
|
17
17
|
check(node)
|
18
18
|
end
|
19
19
|
|
20
|
+
def autocorrect(node)
|
21
|
+
cond, body = *node
|
22
|
+
@corrections << lambda do |corrector|
|
23
|
+
oneline = "#{body.loc.expression.source} " \
|
24
|
+
"#{node.loc.keyword.source} " +
|
25
|
+
cond.loc.expression.source
|
26
|
+
corrector.replace(node.loc.expression, oneline)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
20
30
|
private
|
21
31
|
|
22
32
|
def check(node)
|