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
@@ -1,156 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Metrics::BlockNesting, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:cop_config) { { 'Max' => 2 } }
|
8
|
-
|
9
|
-
it 'accepts `Max` levels of nesting' do
|
10
|
-
source = ['if a',
|
11
|
-
' if b',
|
12
|
-
' puts b',
|
13
|
-
' end',
|
14
|
-
'end']
|
15
|
-
expect_nesting_offenses(source, [])
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'registers an offense for `Max + 1` levels of `if` nesting' do
|
19
|
-
source = ['if a',
|
20
|
-
' if b',
|
21
|
-
' if c',
|
22
|
-
' puts c',
|
23
|
-
' end',
|
24
|
-
' end',
|
25
|
-
'end']
|
26
|
-
expect_nesting_offenses(source, [3])
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'registers one offense for `Max + 2` levels of `if` nesting' do
|
30
|
-
source = ['if a',
|
31
|
-
' if b',
|
32
|
-
' if c',
|
33
|
-
' if d',
|
34
|
-
' puts d',
|
35
|
-
' end',
|
36
|
-
' end',
|
37
|
-
' end',
|
38
|
-
'end']
|
39
|
-
expect_nesting_offenses(source, [3], 4)
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'registers 2 offenses' do
|
43
|
-
source = ['if a',
|
44
|
-
' if b',
|
45
|
-
' if c',
|
46
|
-
' puts c',
|
47
|
-
' end',
|
48
|
-
' end',
|
49
|
-
' if d',
|
50
|
-
' if e',
|
51
|
-
' puts e',
|
52
|
-
' end',
|
53
|
-
' end',
|
54
|
-
'end']
|
55
|
-
expect_nesting_offenses(source, [3, 8])
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'registers an offense for nested `case`' do
|
59
|
-
source = ['if a',
|
60
|
-
' if b',
|
61
|
-
' case c',
|
62
|
-
' when C',
|
63
|
-
' puts C',
|
64
|
-
' end',
|
65
|
-
' end',
|
66
|
-
'end']
|
67
|
-
expect_nesting_offenses(source, [3])
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'registers an offense for nested `while`' do
|
71
|
-
source = ['if a',
|
72
|
-
' if b',
|
73
|
-
' while c',
|
74
|
-
' puts c',
|
75
|
-
' end',
|
76
|
-
' end',
|
77
|
-
'end']
|
78
|
-
expect_nesting_offenses(source, [3])
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'registers an offense for nested modifier `while`' do
|
82
|
-
source = ['if a',
|
83
|
-
' if b',
|
84
|
-
' begin',
|
85
|
-
' puts c',
|
86
|
-
' end while c',
|
87
|
-
' end',
|
88
|
-
'end']
|
89
|
-
expect_nesting_offenses(source, [3])
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'registers an offense for nested `until`' do
|
93
|
-
source = ['if a',
|
94
|
-
' if b',
|
95
|
-
' until c',
|
96
|
-
' puts c',
|
97
|
-
' end',
|
98
|
-
' end',
|
99
|
-
'end']
|
100
|
-
expect_nesting_offenses(source, [3])
|
101
|
-
end
|
102
|
-
|
103
|
-
it 'registers an offense for nested modifier `until`' do
|
104
|
-
source = ['if a',
|
105
|
-
' if b',
|
106
|
-
' begin',
|
107
|
-
' puts c',
|
108
|
-
' end until c',
|
109
|
-
' end',
|
110
|
-
'end']
|
111
|
-
expect_nesting_offenses(source, [3])
|
112
|
-
end
|
113
|
-
|
114
|
-
it 'registers an offense for nested `for`' do
|
115
|
-
source = ['if a',
|
116
|
-
' if b',
|
117
|
-
' for c in [1,2] do',
|
118
|
-
' puts c',
|
119
|
-
' end',
|
120
|
-
' end',
|
121
|
-
'end']
|
122
|
-
expect_nesting_offenses(source, [3])
|
123
|
-
end
|
124
|
-
|
125
|
-
it 'registers an offense for nested `rescue`' do
|
126
|
-
source = ['if a',
|
127
|
-
' if b',
|
128
|
-
' begin',
|
129
|
-
' puts c',
|
130
|
-
' rescue',
|
131
|
-
' puts x',
|
132
|
-
' end',
|
133
|
-
' end',
|
134
|
-
'end']
|
135
|
-
expect_nesting_offenses(source, [5])
|
136
|
-
end
|
137
|
-
|
138
|
-
it 'accepts if/elsif' do
|
139
|
-
source = ['if a',
|
140
|
-
'elsif b',
|
141
|
-
'elsif c',
|
142
|
-
'elsif d',
|
143
|
-
'end']
|
144
|
-
expect_nesting_offenses(source, [])
|
145
|
-
end
|
146
|
-
|
147
|
-
def expect_nesting_offenses(source, lines, max_to_allow = 3)
|
148
|
-
inspect_source(cop, source)
|
149
|
-
expect(cop.offenses.map(&:line)).to eq(lines)
|
150
|
-
expect(cop.messages).to eq(
|
151
|
-
['Avoid more than 2 levels of block nesting.'] * lines.length)
|
152
|
-
return unless cop.offenses.size > 0
|
153
|
-
|
154
|
-
expect(cop.config_to_allow_offenses['Max']).to eq(max_to_allow)
|
155
|
-
end
|
156
|
-
end
|
@@ -1,131 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Metrics::ClassLength, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
let(:cop_config) { { 'Max' => 5, 'CountComments' => false } }
|
8
|
-
|
9
|
-
it 'rejects a class with more than 5 lines' do
|
10
|
-
inspect_source(cop, ['class Test',
|
11
|
-
' a = 1',
|
12
|
-
' a = 2',
|
13
|
-
' a = 3',
|
14
|
-
' a = 4',
|
15
|
-
' a = 5',
|
16
|
-
' a = 6',
|
17
|
-
'end'])
|
18
|
-
expect(cop.offenses.size).to eq(1)
|
19
|
-
expect(cop.messages).to eq(['Class definition is too long. [6/5]'])
|
20
|
-
expect(cop.config_to_allow_offenses).to eq('Max' => 6)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'accepts a class with 5 lines' do
|
24
|
-
inspect_source(cop, ['class Test',
|
25
|
-
' a = 1',
|
26
|
-
' a = 2',
|
27
|
-
' a = 3',
|
28
|
-
' a = 4',
|
29
|
-
' a = 5',
|
30
|
-
'end'])
|
31
|
-
expect(cop.offenses).to be_empty
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'accepts a class with less than 5 lines' do
|
35
|
-
inspect_source(cop, ['class Test',
|
36
|
-
' a = 1',
|
37
|
-
' a = 2',
|
38
|
-
' a = 3',
|
39
|
-
' a = 4',
|
40
|
-
'end'])
|
41
|
-
expect(cop.offenses).to be_empty
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'does not count blank lines' do
|
45
|
-
inspect_source(cop, ['class Test',
|
46
|
-
' a = 1',
|
47
|
-
' a = 2',
|
48
|
-
' a = 3',
|
49
|
-
' a = 4',
|
50
|
-
'',
|
51
|
-
'',
|
52
|
-
' a = 7',
|
53
|
-
'end'])
|
54
|
-
expect(cop.offenses).to be_empty
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'accepts empty classes' do
|
58
|
-
inspect_source(cop, ['class Test',
|
59
|
-
'end'])
|
60
|
-
expect(cop.offenses).to be_empty
|
61
|
-
end
|
62
|
-
|
63
|
-
context 'when a class has inner classes' do
|
64
|
-
it 'does not count lines of inner classes' do
|
65
|
-
inspect_source(cop, ['class NamespaceClass',
|
66
|
-
' class TestOne',
|
67
|
-
' a = 1',
|
68
|
-
' a = 2',
|
69
|
-
' a = 3',
|
70
|
-
' a = 4',
|
71
|
-
' a = 5',
|
72
|
-
' end',
|
73
|
-
' class TestTwo',
|
74
|
-
' a = 1',
|
75
|
-
' a = 2',
|
76
|
-
' a = 3',
|
77
|
-
' a = 4',
|
78
|
-
' a = 5',
|
79
|
-
' end',
|
80
|
-
' a = 1',
|
81
|
-
' a = 2',
|
82
|
-
' a = 3',
|
83
|
-
' a = 4',
|
84
|
-
' a = 5',
|
85
|
-
'end'])
|
86
|
-
expect(cop.offenses).to be_empty
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'rejects a class with 6 lines that belong to the class directly' do
|
90
|
-
inspect_source(cop, ['class NamespaceClass',
|
91
|
-
' class TestOne',
|
92
|
-
' a = 1',
|
93
|
-
' a = 2',
|
94
|
-
' a = 3',
|
95
|
-
' a = 4',
|
96
|
-
' a = 5',
|
97
|
-
' end',
|
98
|
-
' class TestTwo',
|
99
|
-
' a = 1',
|
100
|
-
' a = 2',
|
101
|
-
' a = 3',
|
102
|
-
' a = 4',
|
103
|
-
' a = 5',
|
104
|
-
' end',
|
105
|
-
' a = 1',
|
106
|
-
' a = 2',
|
107
|
-
' a = 3',
|
108
|
-
' a = 4',
|
109
|
-
' a = 5',
|
110
|
-
' a = 6',
|
111
|
-
'end'])
|
112
|
-
expect(cop.offenses.size).to eq(1)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
context 'when CountComments is enabled' do
|
117
|
-
before { cop_config['CountComments'] = true }
|
118
|
-
|
119
|
-
it 'also counts commented lines' do
|
120
|
-
inspect_source(cop, ['class Test',
|
121
|
-
' a = 1',
|
122
|
-
' #a = 2',
|
123
|
-
' a = 3',
|
124
|
-
' #a = 4',
|
125
|
-
' a = 5',
|
126
|
-
' a = 6',
|
127
|
-
'end'])
|
128
|
-
expect(cop.offenses.size).to eq(1)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
@@ -1,204 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe RuboCop::Cop::Metrics::CyclomaticComplexity, :config do
|
6
|
-
subject(:cop) { described_class.new(config) }
|
7
|
-
|
8
|
-
context 'when Max is 1' do
|
9
|
-
let(:cop_config) { { 'Max' => 1 } }
|
10
|
-
|
11
|
-
it 'accepts a method with no decision points' do
|
12
|
-
inspect_source(cop, ['def method_name',
|
13
|
-
' call_foo',
|
14
|
-
'end'])
|
15
|
-
expect(cop.offenses).to be_empty
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'accepts complex code outside of methods' do
|
19
|
-
inspect_source(cop,
|
20
|
-
['def method_name',
|
21
|
-
' call_foo',
|
22
|
-
'end',
|
23
|
-
'',
|
24
|
-
'if first_condition then',
|
25
|
-
' call_foo if second_condition && third_condition',
|
26
|
-
' call_bar if fourth_condition || fifth_condition',
|
27
|
-
'end'])
|
28
|
-
expect(cop.offenses).to be_empty
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'registers an offense for an if modifier' do
|
32
|
-
inspect_source(cop, ['def self.method_name',
|
33
|
-
' call_foo if some_condition',
|
34
|
-
'end'])
|
35
|
-
expect(cop.messages)
|
36
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
37
|
-
expect(cop.highlights).to eq(['def'])
|
38
|
-
expect(cop.config_to_allow_offenses).to eq('Max' => 2)
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'registers an offense for an unless modifier' do
|
42
|
-
inspect_source(cop, ['def method_name',
|
43
|
-
' call_foo unless some_condition',
|
44
|
-
'end'])
|
45
|
-
expect(cop.messages)
|
46
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'registers an offense for an elsif block' do
|
50
|
-
inspect_source(cop, ['def method_name',
|
51
|
-
' if first_condition then',
|
52
|
-
' call_foo',
|
53
|
-
' elsif second_condition then',
|
54
|
-
' call_bar',
|
55
|
-
' else',
|
56
|
-
' call_bam',
|
57
|
-
' end',
|
58
|
-
'end'])
|
59
|
-
expect(cop.messages)
|
60
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [3/1]'])
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'registers an offense for a ternary operator' do
|
64
|
-
inspect_source(cop, ['def method_name',
|
65
|
-
' value = some_condition ? 1 : 2',
|
66
|
-
'end'])
|
67
|
-
expect(cop.messages)
|
68
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'registers an offense for a while block' do
|
72
|
-
inspect_source(cop, ['def method_name',
|
73
|
-
' while some_condition do',
|
74
|
-
' call_foo',
|
75
|
-
' end',
|
76
|
-
'end'])
|
77
|
-
expect(cop.messages)
|
78
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'registers an offense for an until block' do
|
82
|
-
inspect_source(cop, ['def method_name',
|
83
|
-
' until some_condition do',
|
84
|
-
' call_foo',
|
85
|
-
' end',
|
86
|
-
'end'])
|
87
|
-
expect(cop.messages)
|
88
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'registers an offense for a for block' do
|
92
|
-
inspect_source(cop, ['def method_name',
|
93
|
-
' for i in 1..2 do',
|
94
|
-
' call_method',
|
95
|
-
' end',
|
96
|
-
'end'])
|
97
|
-
expect(cop.messages)
|
98
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'registers an offense for a rescue block' do
|
102
|
-
inspect_source(cop, ['def method_name',
|
103
|
-
' begin',
|
104
|
-
' call_foo',
|
105
|
-
' rescue Exception',
|
106
|
-
' call_bar',
|
107
|
-
' end',
|
108
|
-
'end'])
|
109
|
-
expect(cop.messages)
|
110
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
111
|
-
end
|
112
|
-
|
113
|
-
it 'registers an offense for a case/when block' do
|
114
|
-
inspect_source(cop, ['def method_name',
|
115
|
-
' case value',
|
116
|
-
' when 1',
|
117
|
-
' call_foo',
|
118
|
-
' when 2',
|
119
|
-
' call_bar',
|
120
|
-
' end',
|
121
|
-
'end'])
|
122
|
-
expect(cop.messages)
|
123
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [3/1]'])
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'registers an offense for &&' do
|
127
|
-
inspect_source(cop, ['def method_name',
|
128
|
-
' call_foo && call_bar',
|
129
|
-
'end'])
|
130
|
-
expect(cop.messages)
|
131
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
132
|
-
end
|
133
|
-
|
134
|
-
it 'registers an offense for and' do
|
135
|
-
inspect_source(cop, ['def method_name',
|
136
|
-
' call_foo and call_bar',
|
137
|
-
'end'])
|
138
|
-
expect(cop.messages)
|
139
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
140
|
-
end
|
141
|
-
|
142
|
-
it 'registers an offense for ||' do
|
143
|
-
inspect_source(cop, ['def method_name',
|
144
|
-
' call_foo || call_bar',
|
145
|
-
'end'])
|
146
|
-
expect(cop.messages)
|
147
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
148
|
-
end
|
149
|
-
|
150
|
-
it 'registers an offense for or' do
|
151
|
-
inspect_source(cop, ['def method_name',
|
152
|
-
' call_foo or call_bar',
|
153
|
-
'end'])
|
154
|
-
expect(cop.messages)
|
155
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [2/1]'])
|
156
|
-
end
|
157
|
-
|
158
|
-
it 'deals with nested if blocks containing && and ||' do
|
159
|
-
inspect_source(cop,
|
160
|
-
['def method_name',
|
161
|
-
' if first_condition then',
|
162
|
-
' call_foo if second_condition && third_condition',
|
163
|
-
' call_bar if fourth_condition || fifth_condition',
|
164
|
-
' end',
|
165
|
-
'end'])
|
166
|
-
expect(cop.messages)
|
167
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [6/1]'])
|
168
|
-
end
|
169
|
-
|
170
|
-
it 'counts only a single method' do
|
171
|
-
inspect_source(cop, ['def method_name_1',
|
172
|
-
' call_foo if some_condition',
|
173
|
-
'end',
|
174
|
-
'',
|
175
|
-
'def method_name_2',
|
176
|
-
' call_foo if some_condition',
|
177
|
-
'end'])
|
178
|
-
expect(cop.messages)
|
179
|
-
.to eq(['Cyclomatic complexity for method_name_1 is too high. [2/1]',
|
180
|
-
'Cyclomatic complexity for method_name_2 is too high. [2/1]'])
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
context 'when Max is 2' do
|
185
|
-
let(:cop_config) { { 'Max' => 2 } }
|
186
|
-
|
187
|
-
it 'counts stupid nested if and else blocks' do
|
188
|
-
inspect_source(cop, ['def method_name',
|
189
|
-
' if first_condition then',
|
190
|
-
' call_foo',
|
191
|
-
' else',
|
192
|
-
' if second_condition then',
|
193
|
-
' call_bar',
|
194
|
-
' else',
|
195
|
-
' call_bam if third_condition',
|
196
|
-
' end',
|
197
|
-
' call_baz if fourth_condition',
|
198
|
-
' end',
|
199
|
-
'end'])
|
200
|
-
expect(cop.messages)
|
201
|
-
.to eq(['Cyclomatic complexity for method_name is too high. [5/2]'])
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|