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
data/spec/rubocop/token_spec.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Token do
|
6
|
-
describe '.from_parser_token' do
|
7
|
-
subject(:token) { described_class.from_parser_token(parser_token) }
|
8
|
-
let(:parser_token) { [type, [text, range]] }
|
9
|
-
let(:type) { :kDEF }
|
10
|
-
let(:text) { 'def' }
|
11
|
-
let(:range) { double('range', line: 42, column: 30) }
|
12
|
-
|
13
|
-
it "sets parser token's type to rubocop token's type" do
|
14
|
-
expect(token.type).to eq(type)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "sets parser token's text to rubocop token's text" do
|
18
|
-
expect(token.text).to eq(text)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "sets parser token's range to rubocop token's pos" do
|
22
|
-
expect(token.pos).to eq(range)
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'returns a #to_s useful for debugging' do
|
26
|
-
expect(token.to_s).to eq('[[42, 30], kDEF, "def"]')
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# Coverage support needs to be required *before* the RuboCop code is required!
|
4
|
-
require 'support/coverage'
|
5
|
-
|
6
|
-
require 'rubocop'
|
7
|
-
|
8
|
-
# Requires supporting files with custom matchers and macros, etc,
|
9
|
-
# in ./support/ and its subdirectories.
|
10
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
11
|
-
|
12
|
-
RSpec.configure do |config|
|
13
|
-
# These two settings work together to allow you to limit a spec run
|
14
|
-
# to individual examples or groups you care about by tagging them with
|
15
|
-
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
16
|
-
# get run.
|
17
|
-
config.filter_run :focus
|
18
|
-
config.run_all_when_everything_filtered = true
|
19
|
-
|
20
|
-
config.order = :random
|
21
|
-
|
22
|
-
config.filter_run_excluding ruby: ->(v) { !RUBY_VERSION.start_with?(v.to_s) }
|
23
|
-
|
24
|
-
broken_filter = lambda do |v|
|
25
|
-
v.is_a?(Symbol) ? RUBY_ENGINE == v.to_s : v
|
26
|
-
end
|
27
|
-
config.filter_run_excluding broken: broken_filter
|
28
|
-
|
29
|
-
config.expect_with :rspec do |expectations|
|
30
|
-
expectations.syntax = :expect # Disable `should`
|
31
|
-
end
|
32
|
-
|
33
|
-
config.mock_with :rspec do |mocks|
|
34
|
-
mocks.syntax = :expect # Disable `should_receive` and `stub`
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# Disable colors in specs
|
39
|
-
Rainbow.enabled = false
|
data/spec/support/cop_helper.rb
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'tempfile'
|
4
|
-
|
5
|
-
module CopHelper
|
6
|
-
def inspect_source_file(cop, source)
|
7
|
-
Tempfile.open('tmp') { |f| inspect_source(cop, source, f) }
|
8
|
-
end
|
9
|
-
|
10
|
-
def inspect_source(cop, source, file = nil)
|
11
|
-
if source.is_a?(Array) && source.size == 1
|
12
|
-
fail "Don't use an array for a single line of code: #{source}"
|
13
|
-
end
|
14
|
-
RuboCop::Formatter::DisabledConfigFormatter.config_to_allow_offenses = {}
|
15
|
-
processed_source = parse_source(source, file)
|
16
|
-
fail 'Error parsing example code' unless processed_source.valid_syntax?
|
17
|
-
_investigate(cop, processed_source)
|
18
|
-
end
|
19
|
-
|
20
|
-
def parse_source(source, file = nil)
|
21
|
-
source = source.join($RS) if source.is_a?(Array)
|
22
|
-
|
23
|
-
if file && file.respond_to?(:write)
|
24
|
-
file.write(source)
|
25
|
-
file.rewind
|
26
|
-
file = file.path
|
27
|
-
end
|
28
|
-
|
29
|
-
RuboCop::ProcessedSource.new(source, file)
|
30
|
-
end
|
31
|
-
|
32
|
-
def autocorrect_source_file(cop, source)
|
33
|
-
Tempfile.open('tmp') { |f| autocorrect_source(cop, source, f) }
|
34
|
-
end
|
35
|
-
|
36
|
-
def autocorrect_source(cop, source, file = nil)
|
37
|
-
cop.instance_variable_get(:@options)[:auto_correct] = true
|
38
|
-
processed_source = parse_source(source, file)
|
39
|
-
_investigate(cop, processed_source)
|
40
|
-
|
41
|
-
corrector =
|
42
|
-
RuboCop::Cop::Corrector.new(processed_source.buffer, cop.corrections)
|
43
|
-
corrector.rewrite
|
44
|
-
end
|
45
|
-
|
46
|
-
def _investigate(cop, processed_source)
|
47
|
-
forces = RuboCop::Cop::Force.all.each_with_object([]) do |klass, instances|
|
48
|
-
next unless cop.join_force?(klass)
|
49
|
-
instances << klass.new([cop])
|
50
|
-
end
|
51
|
-
|
52
|
-
commissioner =
|
53
|
-
RuboCop::Cop::Commissioner.new([cop], forces, raise_error: true)
|
54
|
-
commissioner.investigate(processed_source)
|
55
|
-
commissioner
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
module RuboCop
|
60
|
-
module Cop
|
61
|
-
class Cop
|
62
|
-
def messages
|
63
|
-
offenses.sort.map(&:message)
|
64
|
-
end
|
65
|
-
|
66
|
-
def highlights
|
67
|
-
offenses.sort.map { |o| o.location.source }
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
RSpec.configure do |config|
|
74
|
-
config.include CopHelper
|
75
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module Test
|
6
|
-
class ClassMustBeAModuleCop < RuboCop::Cop::Cop
|
7
|
-
def on_class(node)
|
8
|
-
add_offense(node, :expression, 'Class must be a Module')
|
9
|
-
end
|
10
|
-
|
11
|
-
def autocorrect(node)
|
12
|
-
@corrections << lambda do |corrector|
|
13
|
-
corrector.replace(node.loc.keyword, 'module')
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module Test
|
6
|
-
class ModuleMustBeAClassCop < RuboCop::Cop::Cop
|
7
|
-
def on_module(node)
|
8
|
-
add_offense(node, :expression, 'Module must be a Class')
|
9
|
-
end
|
10
|
-
|
11
|
-
def autocorrect(node)
|
12
|
-
@corrections << lambda do |corrector|
|
13
|
-
corrector.replace(node.loc.keyword, 'class')
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/spec/support/coverage.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
if ENV['TRAVIS'] || ENV['COVERAGE']
|
4
|
-
require 'simplecov'
|
5
|
-
|
6
|
-
if ENV['TRAVIS']
|
7
|
-
require 'coveralls'
|
8
|
-
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
|
9
|
-
end
|
10
|
-
|
11
|
-
SimpleCov.start do
|
12
|
-
add_filter '/spec/'
|
13
|
-
add_filter '/vendor/bundle/'
|
14
|
-
end
|
15
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
RSpec::Matchers.define :exit_with_code do |code|
|
4
|
-
supports_block_expectations
|
5
|
-
|
6
|
-
actual = nil
|
7
|
-
|
8
|
-
match do |block|
|
9
|
-
begin
|
10
|
-
block.call
|
11
|
-
rescue SystemExit => e
|
12
|
-
actual = e.status
|
13
|
-
end
|
14
|
-
actual && actual == code
|
15
|
-
end
|
16
|
-
|
17
|
-
failure_message do
|
18
|
-
"expected block to call exit(#{code}) but exit" +
|
19
|
-
(actual.nil? ? ' not called' : "(#{actual}) was called")
|
20
|
-
end
|
21
|
-
|
22
|
-
failure_message_when_negated do
|
23
|
-
"expected block not to call exit(#{code})"
|
24
|
-
end
|
25
|
-
|
26
|
-
description do
|
27
|
-
"expect block to call exit(#{code})"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
RSpec::Matchers.define :find_offenses_in do |code|
|
32
|
-
match do |cop|
|
33
|
-
inspect_source(cop, code)
|
34
|
-
includes_highlight(cop) &&
|
35
|
-
includes_message(cop) &&
|
36
|
-
cop.offenses.any?
|
37
|
-
end
|
38
|
-
|
39
|
-
chain :with_highlight do |highlight|
|
40
|
-
@highlight = highlight
|
41
|
-
end
|
42
|
-
|
43
|
-
chain :with_message do |message|
|
44
|
-
@message = message
|
45
|
-
end
|
46
|
-
|
47
|
-
def includes_highlight(cop)
|
48
|
-
return true unless @highlight
|
49
|
-
|
50
|
-
cop.highlights.include?(@highlight)
|
51
|
-
end
|
52
|
-
|
53
|
-
def includes_message(cop)
|
54
|
-
return true unless @message
|
55
|
-
|
56
|
-
cop.offenses.map(&:message).include?(@message)
|
57
|
-
end
|
58
|
-
end
|
data/spec/support/file_helper.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
module FileHelper
|
6
|
-
def create_file(file_path, content)
|
7
|
-
file_path = File.expand_path(file_path)
|
8
|
-
|
9
|
-
dir_path = File.dirname(file_path)
|
10
|
-
FileUtils.makedirs dir_path unless File.exist?(dir_path)
|
11
|
-
|
12
|
-
File.open(file_path, 'w') do |file|
|
13
|
-
case content
|
14
|
-
when ''
|
15
|
-
# Write nothing. Create empty file.
|
16
|
-
when String
|
17
|
-
file.puts content
|
18
|
-
when Array
|
19
|
-
file.puts content.join("\n")
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# Force JRuby not to select the current working directory
|
4
|
-
# as a temporary directory on Travis CI.
|
5
|
-
# https://github.com/jruby/jruby/issues/405
|
6
|
-
if ENV['TRAVIS'] && RUBY_ENGINE == 'jruby'
|
7
|
-
require 'fileutils'
|
8
|
-
|
9
|
-
tmp_dir = ENV['TMPDIR'] || ENV['TMP'] || ENV['TEMP'] ||
|
10
|
-
Etc.systmpdir || '/tmp'
|
11
|
-
|
12
|
-
non_world_writable_tmp_dir = File.join(tmp_dir, 'rubocop')
|
13
|
-
FileUtils.makedirs(non_world_writable_tmp_dir, mode: 0700)
|
14
|
-
ENV['TMPDIR'] = non_world_writable_tmp_dir
|
15
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'open3'
|
4
|
-
|
5
|
-
# The reincarnation of syntax cop :)
|
6
|
-
module MRISyntaxChecker
|
7
|
-
module_function
|
8
|
-
|
9
|
-
def offenses_for_source(source, fake_cop_name = 'Syntax', grep_message = nil)
|
10
|
-
if source.is_a?(Array)
|
11
|
-
source_lines = source
|
12
|
-
source = source_lines.join("\n")
|
13
|
-
else
|
14
|
-
source_lines = source.each_line.to_a
|
15
|
-
end
|
16
|
-
|
17
|
-
source_buffer = Parser::Source::Buffer.new('test', 1)
|
18
|
-
source_buffer.source = source
|
19
|
-
|
20
|
-
offenses = check_syntax(source).each_line.map do |line|
|
21
|
-
check_line(line, source_lines, source_buffer, fake_cop_name,
|
22
|
-
grep_message)
|
23
|
-
end
|
24
|
-
|
25
|
-
offenses.compact
|
26
|
-
end
|
27
|
-
|
28
|
-
def check_line(line, source_lines, source_buffer, fake_cop_name,
|
29
|
-
grep_message)
|
30
|
-
line_number, severity, message = process_line(line)
|
31
|
-
return unless line_number
|
32
|
-
return if grep_message && !message.include?(grep_message)
|
33
|
-
begin_pos = source_lines[0...(line_number - 1)].reduce(0) do |a, e|
|
34
|
-
a + e.length + "\n".length
|
35
|
-
end
|
36
|
-
RuboCop::Cop::Offense.new(severity,
|
37
|
-
Parser::Source::Range.new(source_buffer,
|
38
|
-
begin_pos,
|
39
|
-
begin_pos + 1),
|
40
|
-
message.capitalize,
|
41
|
-
fake_cop_name)
|
42
|
-
end
|
43
|
-
|
44
|
-
def check_syntax(source)
|
45
|
-
fail 'Must be running with MRI' unless RUBY_ENGINE == 'ruby'
|
46
|
-
|
47
|
-
stdin, stderr, thread = nil
|
48
|
-
|
49
|
-
# It's extremely important to run the syntax check in a
|
50
|
-
# clean environment - otherwise it will be extremely slow.
|
51
|
-
if defined? Bundler
|
52
|
-
Bundler.with_clean_env do
|
53
|
-
stdin, _, stderr, thread = Open3.popen3('ruby', '-cw')
|
54
|
-
end
|
55
|
-
else
|
56
|
-
stdin, _, stderr, thread = Open3.popen3('ruby', '-cw')
|
57
|
-
end
|
58
|
-
|
59
|
-
stdin.write(source)
|
60
|
-
stdin.close
|
61
|
-
thread.join
|
62
|
-
|
63
|
-
stderr.read
|
64
|
-
end
|
65
|
-
|
66
|
-
def process_line(line)
|
67
|
-
match_data = line.match(/.+:(\d+): (warning: )?(.+)/)
|
68
|
-
return nil unless match_data
|
69
|
-
line_number, warning, message = match_data.captures
|
70
|
-
severity = warning ? :warning : :error
|
71
|
-
[line_number.to_i, severity, message]
|
72
|
-
end
|
73
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'tmpdir'
|
4
|
-
require 'fileutils'
|
5
|
-
|
6
|
-
shared_context 'isolated environment', :isolated_environment do
|
7
|
-
around do |example|
|
8
|
-
Dir.mktmpdir do |tmpdir|
|
9
|
-
original_home = ENV['HOME']
|
10
|
-
|
11
|
-
# Make sure to expand all symlinks in the path first. Otherwise we may
|
12
|
-
# get mismatched pathnames when loading config files later on.
|
13
|
-
tmpdir = File.realpath(tmpdir)
|
14
|
-
|
15
|
-
# Make upwards search for .rubocop.yml files stop at this directory.
|
16
|
-
RuboCop::ConfigLoader.root_level = tmpdir
|
17
|
-
|
18
|
-
begin
|
19
|
-
virtual_home = File.expand_path(File.join(tmpdir, 'home'))
|
20
|
-
Dir.mkdir(virtual_home)
|
21
|
-
ENV['HOME'] = virtual_home
|
22
|
-
|
23
|
-
working_dir = File.join(tmpdir, 'work')
|
24
|
-
Dir.mkdir(working_dir)
|
25
|
-
|
26
|
-
Dir.chdir(working_dir) do
|
27
|
-
example.run
|
28
|
-
end
|
29
|
-
ensure
|
30
|
-
ENV['HOME'] = original_home
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# `cop_config` must be declared with #let.
|
37
|
-
shared_context 'config', :config do
|
38
|
-
let(:config) do
|
39
|
-
# Module#<
|
40
|
-
unless described_class < RuboCop::Cop::Cop
|
41
|
-
fail '`config` must be used in `describe SomeCopClass do .. end`'
|
42
|
-
end
|
43
|
-
|
44
|
-
fail '`cop_config` must be declared with #let' unless cop_config.is_a?(Hash)
|
45
|
-
|
46
|
-
cop_name = described_class.cop_name
|
47
|
-
hash = {
|
48
|
-
cop_name =>
|
49
|
-
RuboCop::ConfigLoader.default_configuration[cop_name].merge(cop_config)
|
50
|
-
}
|
51
|
-
RuboCop::Config.new(hash, "#{Dir.pwd}/.rubocop.yml")
|
52
|
-
end
|
53
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# `cop` and `source` must be declared with #let.
|
4
|
-
|
5
|
-
shared_examples_for 'accepts' do
|
6
|
-
it 'accepts' do
|
7
|
-
inspect_source(cop, source)
|
8
|
-
expect(cop.offenses).to be_empty
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
shared_examples_for 'mimics MRI 2.1' do |grep_mri_warning|
|
13
|
-
if RUBY_ENGINE == 'ruby' && RUBY_VERSION.start_with?('2.1')
|
14
|
-
it "mimics MRI #{RUBY_VERSION} built-in syntax checking" do
|
15
|
-
inspect_source(cop, source)
|
16
|
-
offenses_by_mri = MRISyntaxChecker.offenses_for_source(
|
17
|
-
source, cop.name, grep_mri_warning
|
18
|
-
)
|
19
|
-
|
20
|
-
# Compare objects before comparing counts for clear failure output.
|
21
|
-
cop.offenses.each_with_index do |offense_by_cop, index|
|
22
|
-
offense_by_mri = offenses_by_mri[index]
|
23
|
-
# Exclude column attribute since MRI does not
|
24
|
-
# output column number.
|
25
|
-
[:severity, :line, :cop_name].each do |a|
|
26
|
-
expect(offense_by_cop.send(a)).to eq(offense_by_mri.send(a))
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
expect(cop.offenses.count).to eq(offenses_by_mri.count)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
shared_examples_for 'misaligned' do |prefix, alignment_base, arg, end_kw, name|
|
36
|
-
name ||= alignment_base
|
37
|
-
it "registers an offense for mismatched #{name} ... end" do
|
38
|
-
inspect_source(cop, ["#{prefix}#{alignment_base} #{arg}",
|
39
|
-
end_kw])
|
40
|
-
expect(cop.offenses.size).to eq(1)
|
41
|
-
regexp = /`end` at 2, \d+ is not aligned with `#{alignment_base}` at 1,/
|
42
|
-
expect(cop.messages.first).to match(regexp)
|
43
|
-
expect(cop.highlights.first).to eq('end')
|
44
|
-
expect(cop.config_to_allow_offenses).to eq('AlignWith' => opposite)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
shared_examples_for 'aligned' do |alignment_base, arg, end_kw, name|
|
49
|
-
name ||= alignment_base
|
50
|
-
it "accepts matching #{name} ... end" do
|
51
|
-
inspect_source(cop, ["#{alignment_base} #{arg}",
|
52
|
-
end_kw])
|
53
|
-
expect(cop.offenses).to be_empty
|
54
|
-
end
|
55
|
-
end
|