rubocop 0.8.3 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubocop might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +0 -4
- data/.yardopts +2 -0
- data/CHANGELOG.md +70 -1
- data/README.md +101 -11
- data/config/default.yml +10 -2
- data/config/enabled.yml +85 -11
- data/lib/rubocop.rb +97 -73
- data/lib/rubocop/cli.rb +177 -92
- data/lib/rubocop/config.rb +56 -11
- data/lib/rubocop/config_store.rb +2 -0
- data/lib/rubocop/cop/cop.rb +52 -8
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +54 -0
- data/lib/rubocop/cop/lint/end_alignment.rb +180 -0
- data/lib/rubocop/cop/lint/end_in_method.rb +30 -0
- data/lib/rubocop/cop/lint/ensure_return.rb +22 -0
- data/lib/rubocop/cop/lint/eval.rb +22 -0
- data/lib/rubocop/cop/lint/handle_exceptions.rb +20 -0
- data/lib/rubocop/cop/lint/literal_in_condition.rb +63 -0
- data/lib/rubocop/cop/lint/loop.rb +29 -0
- data/lib/rubocop/cop/lint/rescue_exception.rb +29 -0
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +33 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +35 -0
- data/lib/rubocop/cop/lint/unused_local_variable.rb +32 -0
- data/lib/rubocop/cop/lint/void.rb +58 -0
- data/lib/rubocop/cop/offence.rb +112 -12
- data/lib/rubocop/cop/rails/validation.rb +34 -0
- data/lib/rubocop/cop/style/access_control.rb +58 -0
- data/lib/rubocop/cop/style/alias.rb +28 -0
- data/lib/rubocop/cop/style/align_parameters.rb +39 -0
- data/lib/rubocop/cop/style/and_or.rb +45 -0
- data/lib/rubocop/cop/style/ascii_comments.rb +21 -0
- data/lib/rubocop/cop/style/ascii_identifiers.rb +22 -0
- data/lib/rubocop/cop/style/attr.rb +20 -0
- data/lib/rubocop/cop/style/avoid_class_vars.rb +20 -0
- data/lib/rubocop/cop/style/avoid_for.rb +18 -0
- data/lib/rubocop/cop/style/avoid_global_vars.rb +65 -0
- data/lib/rubocop/cop/style/avoid_perl_backrefs.rb +21 -0
- data/lib/rubocop/cop/style/avoid_perlisms.rb +50 -0
- data/lib/rubocop/cop/style/begin_block.rb +18 -0
- data/lib/rubocop/cop/style/block_comments.rb +20 -0
- data/lib/rubocop/cop/style/block_nesting.rb +47 -0
- data/lib/rubocop/cop/style/blocks.rb +27 -0
- data/lib/rubocop/cop/style/case_equality.rb +22 -0
- data/lib/rubocop/cop/style/case_indentation.rb +28 -0
- data/lib/rubocop/cop/style/character_literal.rb +37 -0
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +33 -0
- data/lib/rubocop/cop/style/class_methods.rb +22 -0
- data/lib/rubocop/cop/style/collection_methods.rb +37 -0
- data/lib/rubocop/cop/style/colon_method_call.rb +29 -0
- data/lib/rubocop/cop/style/constant_name.rb +31 -0
- data/lib/rubocop/cop/style/def_parentheses.rb +70 -0
- data/lib/rubocop/cop/style/documentation.rb +58 -0
- data/lib/rubocop/cop/style/dot_position.rb +25 -0
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +26 -0
- data/lib/rubocop/cop/style/empty_lines.rb +40 -0
- data/lib/rubocop/cop/style/empty_literal.rb +53 -0
- data/lib/rubocop/cop/style/encoding.rb +29 -0
- data/lib/rubocop/cop/style/end_block.rb +18 -0
- data/lib/rubocop/cop/style/end_of_line.rb +23 -0
- data/lib/rubocop/cop/style/favor_join.rb +29 -0
- data/lib/rubocop/cop/style/favor_modifier.rb +118 -0
- data/lib/rubocop/cop/style/favor_sprintf.rb +28 -0
- data/lib/rubocop/cop/style/favor_unless_over_negated_if.rb +54 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +47 -0
- data/lib/rubocop/cop/style/if_then_else.rb +80 -0
- data/lib/rubocop/cop/style/lambda.rb +47 -0
- data/lib/rubocop/cop/style/leading_comment_space.rb +25 -0
- data/lib/rubocop/cop/style/line_continuation.rb +26 -0
- data/lib/rubocop/cop/style/line_length.rb +30 -0
- data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +61 -0
- data/lib/rubocop/cop/style/method_call_parentheses.rb +22 -0
- data/lib/rubocop/cop/style/method_length.rb +57 -0
- data/lib/rubocop/cop/style/not.rb +24 -0
- data/lib/rubocop/cop/style/numeric_literals.rb +25 -0
- data/lib/rubocop/cop/{op_method.rb → style/op_method.rb} +4 -3
- data/lib/rubocop/cop/style/parameter_lists.rb +42 -0
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +42 -0
- data/lib/rubocop/cop/style/proc.rb +30 -0
- data/lib/rubocop/cop/style/reduce_arguments.rb +34 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +39 -0
- data/lib/rubocop/cop/style/rescue_modifier.rb +55 -0
- data/lib/rubocop/cop/style/semicolon.rb +51 -0
- data/lib/rubocop/cop/style/single_line_methods.rb +48 -0
- data/lib/rubocop/cop/style/space_after_comma_etc.rb +69 -0
- data/lib/rubocop/cop/style/space_after_control_keyword.rb +32 -0
- data/lib/rubocop/cop/style/string_literals.rb +36 -0
- data/lib/rubocop/cop/style/surrounding_space.rb +314 -0
- data/lib/rubocop/cop/style/symbol_array.rb +31 -0
- data/lib/rubocop/cop/style/symbol_name.rb +27 -0
- data/lib/rubocop/cop/style/tab.rb +25 -0
- data/lib/rubocop/cop/style/ternary_operator.rb +49 -0
- data/lib/rubocop/cop/style/trailing_whitespace.rb +24 -0
- data/lib/rubocop/cop/style/trivial_accessors.rb +32 -0
- data/lib/rubocop/cop/style/unless_else.rb +26 -0
- data/lib/rubocop/cop/style/variable_interpolation.rb +32 -0
- data/lib/rubocop/cop/style/when_then.rb +25 -0
- data/lib/rubocop/cop/style/while_until_do.rb +45 -0
- data/lib/rubocop/cop/style/word_array.rb +44 -0
- data/lib/rubocop/cop/util.rb +1 -0
- data/lib/rubocop/cop/variable_inspector.rb +280 -0
- data/lib/rubocop/formatter/base_formatter.rb +119 -0
- data/lib/rubocop/formatter/clang_style_formatter.rb +21 -0
- data/lib/rubocop/formatter/emacs_style_formatter.rb +17 -0
- data/lib/rubocop/formatter/formatter_set.rb +77 -0
- data/lib/rubocop/formatter/json_formatter.rb +76 -0
- data/lib/rubocop/formatter/progress_formatter.rb +63 -0
- data/lib/rubocop/formatter/simple_text_formatter.rb +62 -0
- data/lib/rubocop/version.rb +15 -1
- data/rubocop.gemspec +1 -2
- data/spec/.rubocop.yml +5 -0
- data/spec/project_spec.rb +4 -7
- data/spec/rubocop/cli_spec.rb +383 -146
- data/spec/rubocop/config_spec.rb +61 -0
- data/spec/rubocop/config_store_spec.rb +2 -2
- data/spec/rubocop/cops/cop_spec.rb +14 -7
- data/spec/rubocop/cops/lint/assignment_in_condition_spec.rb +111 -0
- data/spec/rubocop/cops/lint/end_alignment_spec.rb +426 -0
- data/spec/rubocop/cops/lint/end_in_method_spec.rb +35 -0
- data/spec/rubocop/cops/lint/ensure_return_spec.rb +37 -0
- data/spec/rubocop/cops/lint/eval_spec.rb +41 -0
- data/spec/rubocop/cops/lint/handle_exceptions_spec.rb +36 -0
- data/spec/rubocop/cops/lint/literal_in_condition_spec.rb +35 -0
- data/spec/rubocop/cops/lint/loop_spec.rb +33 -0
- data/spec/rubocop/cops/lint/rescue_exception_spec.rb +127 -0
- data/spec/rubocop/cops/lint/shadowing_outer_local_variable_spec.rb +180 -0
- data/spec/rubocop/cops/lint/unreachable_code_spec.rb +69 -0
- data/spec/rubocop/cops/lint/unused_local_variable_spec.rb +484 -0
- data/spec/rubocop/cops/lint/void_spec.rb +63 -0
- data/spec/rubocop/cops/offence_spec.rb +107 -10
- data/spec/rubocop/cops/rails/validation_spec.rb +27 -0
- data/spec/rubocop/cops/style/access_control_spec.rb +142 -0
- data/spec/rubocop/cops/style/alias_spec.rb +47 -0
- data/spec/rubocop/cops/style/align_parameters_spec.rb +199 -0
- data/spec/rubocop/cops/style/and_or_spec.rb +39 -0
- data/spec/rubocop/cops/style/ascii_comments_spec.rb +28 -0
- data/spec/rubocop/cops/style/ascii_identifiers_spec.rb +28 -0
- data/spec/rubocop/cops/style/attr_spec.rb +20 -0
- data/spec/rubocop/cops/style/avoid_class_vars_spec.rb +27 -0
- data/spec/rubocop/cops/style/avoid_for_spec.rb +37 -0
- data/spec/rubocop/cops/style/avoid_global_vars_spec.rb +34 -0
- data/spec/rubocop/cops/style/avoid_perl_backrefs_spec.rb +20 -0
- data/spec/rubocop/cops/style/avoid_perlisms_spec.rb +47 -0
- data/spec/rubocop/cops/style/begin_block_spec.rb +19 -0
- data/spec/rubocop/cops/style/block_comments_spec.rb +27 -0
- data/spec/rubocop/cops/style/block_nesting_spec.rb +159 -0
- data/spec/rubocop/cops/style/blocks_spec.rb +35 -0
- data/spec/rubocop/cops/style/case_equality_spec.rb +18 -0
- data/spec/rubocop/cops/style/case_indentation_spec.rb +88 -0
- data/spec/rubocop/cops/style/character_literal_spec.rb +28 -0
- data/spec/rubocop/cops/style/class_and_module_camel_case_spec.rb +46 -0
- data/spec/rubocop/cops/style/class_methods_spec.rb +51 -0
- data/spec/rubocop/cops/style/collection_methods_spec.rb +46 -0
- data/spec/rubocop/cops/style/colon_method_call_spec.rb +55 -0
- data/spec/rubocop/cops/style/constant_name_spec.rb +56 -0
- data/spec/rubocop/cops/style/def_with_parentheses_spec.rb +40 -0
- data/spec/rubocop/cops/style/def_without_parentheses_spec.rb +34 -0
- data/spec/rubocop/cops/style/documentation_spec.rb +79 -0
- data/spec/rubocop/cops/style/dot_position_spec.rb +30 -0
- data/spec/rubocop/cops/style/empty_line_between_defs_spec.rb +85 -0
- data/spec/rubocop/cops/style/empty_lines_spec.rb +40 -0
- data/spec/rubocop/cops/style/empty_literal_spec.rb +91 -0
- data/spec/rubocop/cops/style/encoding_spec.rb +49 -0
- data/spec/rubocop/cops/style/end_block_spec.rb +19 -0
- data/spec/rubocop/cops/style/end_of_line_spec.rb +25 -0
- data/spec/rubocop/cops/style/favor_join_spec.rb +37 -0
- data/spec/rubocop/cops/style/favor_modifier_spec.rb +160 -0
- data/spec/rubocop/cops/style/favor_sprintf_spec.rb +53 -0
- data/spec/rubocop/cops/style/favor_unless_over_negated_if_spec.rb +64 -0
- data/spec/rubocop/cops/style/favor_until_over_negated_while_spec.rb +47 -0
- data/spec/rubocop/cops/style/hash_syntax_spec.rb +51 -0
- data/spec/rubocop/cops/style/if_with_semicolon_spec.rb +25 -0
- data/spec/rubocop/cops/style/lambda_spec.rb +45 -0
- data/spec/rubocop/cops/style/leading_comment_space_spec.rb +65 -0
- data/spec/rubocop/cops/style/line_continuation_spec.rb +26 -0
- data/spec/rubocop/cops/style/line_length_spec.rb +25 -0
- data/spec/rubocop/cops/style/method_and_variable_snake_case_spec.rb +95 -0
- data/spec/rubocop/cops/style/method_call_parentheses_spec.rb +25 -0
- data/spec/rubocop/cops/style/method_length_spec.rb +151 -0
- data/spec/rubocop/cops/style/multiline_if_then_spec.rb +81 -0
- data/spec/rubocop/cops/style/not_spec.rb +28 -0
- data/spec/rubocop/cops/style/numeric_literals_spec.rb +51 -0
- data/spec/rubocop/cops/style/one_line_conditional_spec.rb +18 -0
- data/spec/rubocop/cops/style/op_method_spec.rb +80 -0
- data/spec/rubocop/cops/style/parameter_lists_spec.rb +49 -0
- data/spec/rubocop/cops/style/parentheses_around_condition_spec.rb +59 -0
- data/spec/rubocop/cops/style/proc_spec.rb +28 -0
- data/spec/rubocop/cops/style/reduce_arguments_spec.rb +59 -0
- data/spec/rubocop/cops/style/regexp_literal_spec.rb +83 -0
- data/spec/rubocop/cops/style/rescue_modifier_spec.rb +122 -0
- data/spec/rubocop/cops/style/semicolon_spec.rb +95 -0
- data/spec/rubocop/cops/style/single_line_methods_spec.rb +54 -0
- data/spec/rubocop/cops/style/space_after_colon_spec.rb +29 -0
- data/spec/rubocop/cops/style/space_after_comma_spec.rb +31 -0
- data/spec/rubocop/cops/style/space_after_control_keyword_spec.rb +69 -0
- data/spec/rubocop/cops/style/space_after_semicolon_spec.rb +24 -0
- data/spec/rubocop/cops/style/space_around_braces_spec.rb +49 -0
- data/spec/rubocop/cops/style/space_around_equals_in_default_parameter_spec.rb +34 -0
- data/spec/rubocop/cops/style/space_around_operators_spec.rb +216 -0
- data/spec/rubocop/cops/style/space_inside_brackets_spec.rb +51 -0
- data/spec/rubocop/cops/style/space_inside_hash_literal_braces_spec.rb +99 -0
- data/spec/rubocop/cops/style/space_inside_parens_spec.rb +33 -0
- data/spec/rubocop/cops/style/string_literals_spec.rb +62 -0
- data/spec/rubocop/cops/style/symbol_array_spec.rb +45 -0
- data/spec/rubocop/cops/style/symbol_name_spec.rb +122 -0
- data/spec/rubocop/cops/style/tab_spec.rb +23 -0
- data/spec/rubocop/cops/style/ternary_operator_spec.rb +42 -0
- data/spec/rubocop/cops/style/trailing_whitespace_spec.rb +29 -0
- data/spec/rubocop/cops/style/trivial_accessors_spec.rb +338 -0
- data/spec/rubocop/cops/style/unless_else_spec.rb +31 -0
- data/spec/rubocop/cops/style/variable_interpolation_spec.rb +53 -0
- data/spec/rubocop/cops/style/when_then_spec.rb +40 -0
- data/spec/rubocop/cops/style/while_until_do_spec.rb +47 -0
- data/spec/rubocop/cops/style/word_array_spec.rb +61 -0
- data/spec/rubocop/cops/variable_inspector_spec.rb +374 -0
- data/spec/rubocop/formatter/base_formatter_spec.rb +190 -0
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +70 -0
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +32 -0
- data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
- data/spec/rubocop/formatter/json_formatter_spec.rb +142 -0
- data/spec/rubocop/formatter/progress_formatter_spec.rb +196 -0
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +74 -0
- data/spec/spec_helper.rb +23 -8
- data/spec/support/mri_syntax_checker.rb +69 -0
- data/spec/support/shared_examples.rb +33 -0
- metadata +315 -243
- data/lib/rubocop/cop/access_control.rb +0 -41
- data/lib/rubocop/cop/alias.rb +0 -17
- data/lib/rubocop/cop/align_parameters.rb +0 -37
- data/lib/rubocop/cop/and_or.rb +0 -36
- data/lib/rubocop/cop/ascii_comments.rb +0 -17
- data/lib/rubocop/cop/ascii_identifiers.rb +0 -19
- data/lib/rubocop/cop/avoid_class_vars.rb +0 -15
- data/lib/rubocop/cop/avoid_for.rb +0 -17
- data/lib/rubocop/cop/avoid_global_vars.rb +0 -61
- data/lib/rubocop/cop/avoid_perl_backrefs.rb +0 -17
- data/lib/rubocop/cop/avoid_perlisms.rb +0 -47
- data/lib/rubocop/cop/block_comments.rb +0 -17
- data/lib/rubocop/cop/block_nesting.rb +0 -35
- data/lib/rubocop/cop/blocks.rb +0 -23
- data/lib/rubocop/cop/case_indentation.rb +0 -22
- data/lib/rubocop/cop/class_and_module_camel_case.rb +0 -29
- data/lib/rubocop/cop/class_methods.rb +0 -15
- data/lib/rubocop/cop/collection_methods.rb +0 -29
- data/lib/rubocop/cop/colon_method_call.rb +0 -20
- data/lib/rubocop/cop/constant_name.rb +0 -24
- data/lib/rubocop/cop/def_parentheses.rb +0 -62
- data/lib/rubocop/cop/empty_line_between_defs.rb +0 -22
- data/lib/rubocop/cop/empty_lines.rb +0 -34
- data/lib/rubocop/cop/empty_literal.rb +0 -49
- data/lib/rubocop/cop/encoding.rb +0 -19
- data/lib/rubocop/cop/end_of_line.rb +0 -15
- data/lib/rubocop/cop/ensure_return.rb +0 -19
- data/lib/rubocop/cop/eval.rb +0 -19
- data/lib/rubocop/cop/favor_join.rb +0 -22
- data/lib/rubocop/cop/favor_modifier.rb +0 -92
- data/lib/rubocop/cop/favor_percent_r.rb +0 -19
- data/lib/rubocop/cop/favor_sprintf.rb +0 -21
- data/lib/rubocop/cop/favor_unless_over_negated_if.rb +0 -49
- data/lib/rubocop/cop/handle_exceptions.rb +0 -17
- data/lib/rubocop/cop/hash_syntax.rb +0 -41
- data/lib/rubocop/cop/if_then_else.rb +0 -75
- data/lib/rubocop/cop/lambda.rb +0 -42
- data/lib/rubocop/cop/leading_comment_space.rb +0 -19
- data/lib/rubocop/cop/line_continuation.rb +0 -15
- data/lib/rubocop/cop/line_length.rb +0 -23
- data/lib/rubocop/cop/loop.rb +0 -33
- data/lib/rubocop/cop/method_and_variable_snake_case.rb +0 -55
- data/lib/rubocop/cop/method_length.rb +0 -52
- data/lib/rubocop/cop/not.rb +0 -21
- data/lib/rubocop/cop/numeric_literals.rb +0 -21
- data/lib/rubocop/cop/parameter_lists.rb +0 -23
- data/lib/rubocop/cop/parentheses_around_condition.rb +0 -40
- data/lib/rubocop/cop/percent_r.rb +0 -19
- data/lib/rubocop/cop/proc.rb +0 -26
- data/lib/rubocop/cop/reduce_arguments.rb +0 -29
- data/lib/rubocop/cop/rescue_exception.rb +0 -26
- data/lib/rubocop/cop/rescue_modifier.rb +0 -15
- data/lib/rubocop/cop/semicolon.rb +0 -31
- data/lib/rubocop/cop/single_line_methods.rb +0 -44
- data/lib/rubocop/cop/space_after_comma_etc.rb +0 -62
- data/lib/rubocop/cop/space_after_control_keyword.rb +0 -29
- data/lib/rubocop/cop/string_literals.rb +0 -25
- data/lib/rubocop/cop/surrounding_space.rb +0 -285
- data/lib/rubocop/cop/symbol_array.rb +0 -31
- data/lib/rubocop/cop/symbol_name.rb +0 -23
- data/lib/rubocop/cop/syntax.rb +0 -49
- data/lib/rubocop/cop/tab.rb +0 -15
- data/lib/rubocop/cop/ternary_operator.rb +0 -43
- data/lib/rubocop/cop/trailing_whitespace.rb +0 -15
- data/lib/rubocop/cop/trivial_accessors.rb +0 -26
- data/lib/rubocop/cop/unless_else.rb +0 -23
- data/lib/rubocop/cop/variable_interpolation.rb +0 -29
- data/lib/rubocop/cop/when_then.rb +0 -17
- data/lib/rubocop/cop/word_array.rb +0 -37
- data/lib/rubocop/report/emacs_style.rb +0 -17
- data/lib/rubocop/report/plain_text.rb +0 -18
- data/lib/rubocop/report/report.rb +0 -44
- data/spec/rubocop/cops/access_control_spec.rb +0 -129
- data/spec/rubocop/cops/alias_spec.rb +0 -39
- data/spec/rubocop/cops/align_parameters_spec.rb +0 -197
- data/spec/rubocop/cops/and_or_spec.rb +0 -37
- data/spec/rubocop/cops/ascii_comments_spec.rb +0 -26
- data/spec/rubocop/cops/ascii_identifiers_spec.rb +0 -26
- data/spec/rubocop/cops/avoid_class_vars_spec.rb +0 -25
- data/spec/rubocop/cops/avoid_for_spec.rb +0 -35
- data/spec/rubocop/cops/avoid_global_vars_spec.rb +0 -32
- data/spec/rubocop/cops/avoid_perl_backrefs_spec.rb +0 -18
- data/spec/rubocop/cops/avoid_perlisms_spec.rb +0 -44
- data/spec/rubocop/cops/block_comments_spec.rb +0 -25
- data/spec/rubocop/cops/block_nesting_spec.rb +0 -148
- data/spec/rubocop/cops/blocks_spec.rb +0 -33
- data/spec/rubocop/cops/case_indentation_spec.rb +0 -86
- data/spec/rubocop/cops/class_and_module_camel_case_spec.rb +0 -44
- data/spec/rubocop/cops/class_methods_spec.rb +0 -49
- data/spec/rubocop/cops/collection_methods_spec.rb +0 -44
- data/spec/rubocop/cops/colon_method_call_spec.rb +0 -53
- data/spec/rubocop/cops/constant_name_spec.rb +0 -42
- data/spec/rubocop/cops/def_with_parentheses_spec.rb +0 -38
- data/spec/rubocop/cops/def_without_parentheses_spec.rb +0 -32
- data/spec/rubocop/cops/empty_line_between_defs_spec.rb +0 -83
- data/spec/rubocop/cops/empty_lines_spec.rb +0 -38
- data/spec/rubocop/cops/empty_literal_spec.rb +0 -90
- data/spec/rubocop/cops/encoding_spec.rb +0 -47
- data/spec/rubocop/cops/end_of_line_spec.rb +0 -23
- data/spec/rubocop/cops/ensure_return_spec.rb +0 -35
- data/spec/rubocop/cops/eval_spec.rb +0 -39
- data/spec/rubocop/cops/favor_join_spec.rb +0 -35
- data/spec/rubocop/cops/favor_modifier_spec.rb +0 -146
- data/spec/rubocop/cops/favor_percent_r_spec.rb +0 -29
- data/spec/rubocop/cops/favor_sprintf_spec.rb +0 -51
- data/spec/rubocop/cops/favor_unless_over_negated_if_spec.rb +0 -62
- data/spec/rubocop/cops/favor_until_over_negated_while_spec.rb +0 -45
- data/spec/rubocop/cops/handle_exceptions_spec.rb +0 -34
- data/spec/rubocop/cops/hash_syntax_spec.rb +0 -49
- data/spec/rubocop/cops/if_with_semicolon_spec.rb +0 -23
- data/spec/rubocop/cops/lambda_spec.rb +0 -43
- data/spec/rubocop/cops/leading_comment_space_spec.rb +0 -54
- data/spec/rubocop/cops/line_continuation_spec.rb +0 -24
- data/spec/rubocop/cops/line_length_spec.rb +0 -23
- data/spec/rubocop/cops/loop_spec.rb +0 -31
- data/spec/rubocop/cops/method_and_variable_snake_case_spec.rb +0 -93
- data/spec/rubocop/cops/method_length_spec.rb +0 -147
- data/spec/rubocop/cops/multiline_if_then_spec.rb +0 -79
- data/spec/rubocop/cops/not_spec.rb +0 -26
- data/spec/rubocop/cops/numeric_literals_spec.rb +0 -49
- data/spec/rubocop/cops/one_line_conditional_spec.rb +0 -16
- data/spec/rubocop/cops/op_method_spec.rb +0 -78
- data/spec/rubocop/cops/parameter_lists_spec.rb +0 -24
- data/spec/rubocop/cops/parentheses_around_condition_spec.rb +0 -61
- data/spec/rubocop/cops/percent_r_spec.rb +0 -29
- data/spec/rubocop/cops/proc_spec.rb +0 -26
- data/spec/rubocop/cops/reduce_arguments_spec.rb +0 -57
- data/spec/rubocop/cops/rescue_exception_spec.rb +0 -125
- data/spec/rubocop/cops/rescue_modifier_spec.rb +0 -37
- data/spec/rubocop/cops/semicolon_spec.rb +0 -88
- data/spec/rubocop/cops/single_line_methods_spec.rb +0 -50
- data/spec/rubocop/cops/space_after_colon_spec.rb +0 -27
- data/spec/rubocop/cops/space_after_comma_spec.rb +0 -29
- data/spec/rubocop/cops/space_after_control_keyword_spec.rb +0 -67
- data/spec/rubocop/cops/space_after_semicolon_spec.rb +0 -22
- data/spec/rubocop/cops/space_around_braces_spec.rb +0 -47
- data/spec/rubocop/cops/space_around_equals_in_default_parameter_spec.rb +0 -32
- data/spec/rubocop/cops/space_around_operators_spec.rb +0 -209
- data/spec/rubocop/cops/space_inside_brackets_spec.rb +0 -49
- data/spec/rubocop/cops/space_inside_hash_literal_braces_spec.rb +0 -86
- data/spec/rubocop/cops/space_inside_parens_spec.rb +0 -31
- data/spec/rubocop/cops/string_literals_spec.rb +0 -58
- data/spec/rubocop/cops/symbol_array_spec.rb +0 -41
- data/spec/rubocop/cops/symbol_name_spec.rb +0 -119
- data/spec/rubocop/cops/syntax_spec.rb +0 -41
- data/spec/rubocop/cops/tab_spec.rb +0 -21
- data/spec/rubocop/cops/ternary_operator_spec.rb +0 -40
- data/spec/rubocop/cops/trailing_whitespace_spec.rb +0 -27
- data/spec/rubocop/cops/trivial_accessors_spec.rb +0 -337
- data/spec/rubocop/cops/unless_else_spec.rb +0 -29
- data/spec/rubocop/cops/variable_interpolation_spec.rb +0 -49
- data/spec/rubocop/cops/when_then_spec.rb +0 -38
- data/spec/rubocop/cops/word_array_spec.rb +0 -47
- data/spec/rubocop/reports/emacs_style_spec.rb +0 -25
- data/spec/rubocop/reports/report_spec.rb +0 -29
data/lib/rubocop/cop/not.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class Not < Cop
|
6
|
-
MSG = 'Use ! instead of not.'
|
7
|
-
|
8
|
-
def on_send(node)
|
9
|
-
_receiver, method_name, *args = *node
|
10
|
-
|
11
|
-
# not does not take any arguments
|
12
|
-
if args.empty? && method_name == :! &&
|
13
|
-
node.loc.selector.source == 'not'
|
14
|
-
add_offence(:convention, node.loc.line, MSG)
|
15
|
-
end
|
16
|
-
|
17
|
-
super
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class NumericLiterals < Cop
|
6
|
-
MSG = 'Add underscores to large numeric literals to ' +
|
7
|
-
'improve their readability.'
|
8
|
-
|
9
|
-
def on_int(node)
|
10
|
-
value, = *node
|
11
|
-
|
12
|
-
if value > 10000 &&
|
13
|
-
node.loc.expression.source.split('.').grep(/\d{6}/).any?
|
14
|
-
add_offence(:convention, node.loc.expression.line, MSG)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
alias_method :on_float, :on_int
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class ParameterLists < Cop
|
6
|
-
MSG = 'Avoid parameter lists longer than %d parameters.'
|
7
|
-
|
8
|
-
def on_args(node)
|
9
|
-
args_count = node.children.size
|
10
|
-
|
11
|
-
if args_count > max_params
|
12
|
-
add_offence(:convention, node.loc.line, sprintf(MSG, max_params))
|
13
|
-
end
|
14
|
-
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
def max_params
|
19
|
-
ParameterLists.config['Max']
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class ParenthesesAroundCondition < Cop
|
6
|
-
MSG = "Don't use parentheses around the condition of an " +
|
7
|
-
'if/unless/while/until'
|
8
|
-
|
9
|
-
def on_if(node)
|
10
|
-
process_control_op(node)
|
11
|
-
|
12
|
-
super
|
13
|
-
end
|
14
|
-
|
15
|
-
def on_while(node)
|
16
|
-
process_control_op(node)
|
17
|
-
|
18
|
-
super
|
19
|
-
end
|
20
|
-
|
21
|
-
def on_until(node)
|
22
|
-
process_control_op(node)
|
23
|
-
|
24
|
-
super
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def process_control_op(node)
|
30
|
-
cond, _body = *node
|
31
|
-
|
32
|
-
cond_source = cond.loc.expression.source
|
33
|
-
|
34
|
-
if cond_source.start_with?('(') && cond_source.end_with?(')')
|
35
|
-
add_offence(:convetion, cond.loc.line, MSG)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class PercentR < Cop
|
6
|
-
MSG = 'Use %r only for regular expressions matching more ' +
|
7
|
-
"than one '/' character."
|
8
|
-
|
9
|
-
def on_regexp(node)
|
10
|
-
if node.loc.begin.source != '/' &&
|
11
|
-
node.loc.expression.source[1...-1].scan(/\//).size <= 1
|
12
|
-
add_offence(:convention, node.loc.line, MSG)
|
13
|
-
end
|
14
|
-
|
15
|
-
super
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/lib/rubocop/cop/proc.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class Proc < Cop
|
6
|
-
MSG = 'Use proc instead of Proc.new.'
|
7
|
-
|
8
|
-
TARGET = s(:send, s(:const, nil, :Proc), :new)
|
9
|
-
|
10
|
-
def on_block(node)
|
11
|
-
# We're looking for
|
12
|
-
# (block
|
13
|
-
# (send
|
14
|
-
# (const nil :Proc) :new)
|
15
|
-
# ...)
|
16
|
-
block_method, = *node
|
17
|
-
|
18
|
-
if block_method == TARGET
|
19
|
-
add_offence(:convention, block_method.loc.line, MSG)
|
20
|
-
end
|
21
|
-
|
22
|
-
super
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class ReduceArguments < Cop
|
6
|
-
MSG = 'Name reduce arguments |a, e| (accumulator, element)'
|
7
|
-
|
8
|
-
ARGS_NODE = s(:args, s(:arg, :a), s(:arg, :e))
|
9
|
-
|
10
|
-
def on_block(node)
|
11
|
-
# we care only for single line blocks
|
12
|
-
return unless Util.block_length(node) == 0
|
13
|
-
|
14
|
-
method_node, args_node, _body_node = *node
|
15
|
-
receiver, method_name, _method_args = *method_node
|
16
|
-
|
17
|
-
# discard other scenarios
|
18
|
-
return unless receiver
|
19
|
-
return unless [:reduce, :inject].include?(method_name)
|
20
|
-
|
21
|
-
unless args_node == ARGS_NODE
|
22
|
-
add_offence(:convention, node.loc.line, MSG)
|
23
|
-
end
|
24
|
-
|
25
|
-
super
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class RescueException < Cop
|
6
|
-
MSG = 'Avoid rescuing the Exception class.'
|
7
|
-
|
8
|
-
def on_resbody(node)
|
9
|
-
return unless node.children.first
|
10
|
-
rescue_args = node.children.first.children
|
11
|
-
if rescue_args.any? { |a| targets_exception?(a) }
|
12
|
-
add_offence(:warning, node.location.line, MSG)
|
13
|
-
end
|
14
|
-
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
def targets_exception?(rescue_arg_node)
|
19
|
-
return false unless rescue_arg_node.type == :const
|
20
|
-
namespace, klass_name = *rescue_arg_node
|
21
|
-
return false unless namespace.nil? || namespace.type == :cbase
|
22
|
-
klass_name == :Exception
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class RescueModifier < Cop
|
6
|
-
MSG = 'Avoid using rescue in its modifier form.'
|
7
|
-
|
8
|
-
def on_rescue(node)
|
9
|
-
add_offence(:convention, node.loc.line, MSG)
|
10
|
-
end
|
11
|
-
|
12
|
-
alias_method :on_begin, :ignore_node
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class Semicolon < Cop
|
6
|
-
MSG = 'Do not use semicolons to terminate expressions.'
|
7
|
-
|
8
|
-
def inspect(source, tokens, ast, comments)
|
9
|
-
on_node(:begin, ast) do |node|
|
10
|
-
exprs = node.children
|
11
|
-
|
12
|
-
next if exprs.size < 2
|
13
|
-
|
14
|
-
# create a map matching lines to the number of expressions on them
|
15
|
-
exprs_lines = exprs.map { |e| e.loc.expression.line }
|
16
|
-
lines = exprs_lines.group_by { |i| i }
|
17
|
-
|
18
|
-
# every line with more than 1 expression on it is an offence
|
19
|
-
lines.each do |line, expr_on_line|
|
20
|
-
add_offence(:convention, line, MSG) if expr_on_line.size > 1
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# not pretty reliable, but the best we can do for now
|
25
|
-
source.each_with_index do |line, index|
|
26
|
-
add_offence(:convention, index, MSG) if line =~ /;\s*\z/
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class SingleLineMethods < Cop
|
6
|
-
MSG = 'Avoid single-line method definitions.'
|
7
|
-
|
8
|
-
def allow_empty?
|
9
|
-
SingleLineMethods.config['AllowIfMethodIsEmpty']
|
10
|
-
end
|
11
|
-
|
12
|
-
def on_def(node)
|
13
|
-
check(node)
|
14
|
-
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
def on_defs(node)
|
19
|
-
check(node)
|
20
|
-
|
21
|
-
super
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def check(node)
|
27
|
-
start_line = node.loc.keyword.line
|
28
|
-
end_line = node.loc.end.line
|
29
|
-
|
30
|
-
if node.type == :def
|
31
|
-
empty_body = node.children[2].type == :nil
|
32
|
-
else
|
33
|
-
empty_body = node.children[3].type == :nil
|
34
|
-
end
|
35
|
-
|
36
|
-
if start_line == end_line && !(allow_empty? && empty_body)
|
37
|
-
add_offence(:convention,
|
38
|
-
start_line,
|
39
|
-
MSG)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# rubocop:disable SymbolName
|
4
|
-
|
5
|
-
module Rubocop
|
6
|
-
module Cop
|
7
|
-
module SpaceAfterCommaEtc
|
8
|
-
MSG = 'Space missing after %s.'
|
9
|
-
|
10
|
-
def inspect(source, tokens, ast, comments)
|
11
|
-
tokens.each_cons(2) do |t1, t2|
|
12
|
-
if kind(t1) && t1.pos.line == t2.pos.line &&
|
13
|
-
t2.pos.column == t1.pos.column + offset(t1)
|
14
|
-
add_offence(:convention, t1.pos.line, sprintf(MSG, kind(t1)))
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# The normal offset, i.e., the distance from the punctuation
|
20
|
-
# token where a space should be, is 1.
|
21
|
-
def offset(token)
|
22
|
-
1
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class SpaceAfterComma < Cop
|
27
|
-
include SpaceAfterCommaEtc
|
28
|
-
|
29
|
-
def kind(token)
|
30
|
-
'comma' if token.type == :tCOMMA
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
class SpaceAfterSemicolon < Cop
|
35
|
-
include SpaceAfterCommaEtc
|
36
|
-
|
37
|
-
def kind(token)
|
38
|
-
'semicolon' if token.type == :tSEMI
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
class SpaceAfterColon < Cop
|
43
|
-
include SpaceAfterCommaEtc
|
44
|
-
|
45
|
-
# The colon following a label will not appear in the token
|
46
|
-
# array. Instad we get a tLABEL token, whose length we use to
|
47
|
-
# calculate where we expect a space.
|
48
|
-
def offset(token)
|
49
|
-
case token.type
|
50
|
-
when :tLABEL then token.text.length + 1
|
51
|
-
when :tCOLON then 1
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def kind(token)
|
56
|
-
case token.type
|
57
|
-
when :tLABEL, :tCOLON then 'colon'
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class SpaceAfterControlKeyword < Cop
|
6
|
-
MSG = 'Use space after control keywords.'
|
7
|
-
# elsif and unless are handled by on_if.
|
8
|
-
KEYWORDS = %w(if case when while until)
|
9
|
-
|
10
|
-
def on_keyword(node)
|
11
|
-
return if node.loc.is_a?(Parser::Source::Map::Ternary)
|
12
|
-
|
13
|
-
exp = node.loc.expression
|
14
|
-
kw = node.loc.keyword
|
15
|
-
kw_offset = kw.begin_pos - exp.begin_pos
|
16
|
-
if exp.source[kw_offset..-1].start_with?(kw.source + '(')
|
17
|
-
add_offence(:convention, kw.line, MSG)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
KEYWORDS.each do |keyword|
|
22
|
-
define_method(:"on_#{keyword}") do |node|
|
23
|
-
on_keyword(node)
|
24
|
-
super(node)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Rubocop
|
4
|
-
module Cop
|
5
|
-
class StringLiterals < Cop
|
6
|
-
MSG = "Prefer single-quoted strings when you don't need " +
|
7
|
-
'string interpolation or special symbols.'
|
8
|
-
|
9
|
-
def on_str(node)
|
10
|
-
text, = *node
|
11
|
-
|
12
|
-
# Constants like __FILE__ and __DIR__ are created as strings,
|
13
|
-
# but don't respond to begin.
|
14
|
-
return unless node.loc.respond_to?(:begin)
|
15
|
-
|
16
|
-
if text !~ /['\n\t\r]/ && node.loc.begin.source == '"'
|
17
|
-
add_offence(:convention, node.loc.line, MSG)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
alias_method :on_dstr, :ignore_node
|
22
|
-
alias_method :on_regexp, :ignore_node
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,285 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# rubocop:disable SymbolName
|
4
|
-
|
5
|
-
module Rubocop
|
6
|
-
module Cop
|
7
|
-
module SurroundingSpace
|
8
|
-
def space_between?(t1, t2)
|
9
|
-
char_preceding_2nd_token =
|
10
|
-
@source[t2.pos.line - 1][t2.pos.column - 1]
|
11
|
-
if char_preceding_2nd_token == '+' && t1.type != :tPLUS
|
12
|
-
# Special case. A unary plus is not present in the tokens.
|
13
|
-
char_preceding_2nd_token =
|
14
|
-
@source[t2.pos.line - 1][t2.pos.column - 2]
|
15
|
-
end
|
16
|
-
t2.pos.line > t1.pos.line || char_preceding_2nd_token == ' '
|
17
|
-
end
|
18
|
-
|
19
|
-
def index_of_first_token(node, tokens)
|
20
|
-
@token_table ||= build_token_table(tokens)
|
21
|
-
b = node.loc.expression.begin
|
22
|
-
@token_table[[b.line, b.column]]
|
23
|
-
end
|
24
|
-
|
25
|
-
def index_of_last_token(node, tokens)
|
26
|
-
@token_table ||= build_token_table(tokens)
|
27
|
-
e = node.loc.expression.end
|
28
|
-
(0...e.column).to_a.reverse.find do |c|
|
29
|
-
ix = @token_table[[e.line, c]]
|
30
|
-
return ix if ix
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def build_token_table(tokens)
|
35
|
-
table = {}
|
36
|
-
tokens.each_with_index do |t, ix|
|
37
|
-
table[[t.pos.line, t.pos.column]] = ix
|
38
|
-
end
|
39
|
-
table
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
class SpaceAroundOperators < Cop
|
44
|
-
include SurroundingSpace
|
45
|
-
MSG_MISSING = "Surrounding space missing for operator '%s'."
|
46
|
-
MSG_DETECTED = 'Space around operator ** detected.'
|
47
|
-
|
48
|
-
BINARY_OPERATORS =
|
49
|
-
[:tEQL, :tAMPER2, :tPIPE, :tCARET, :tPLUS, :tMINUS, :tSTAR2,
|
50
|
-
:tDIVIDE, :tPERCENT, :tEH, :tCOLON, :tANDOP, :tOROP, :tMATCH,
|
51
|
-
:tNMATCH, :tEQ, :tNEQ, :tGT, :tRSHFT, :tGEQ, :tLT,
|
52
|
-
:tLSHFT, :tLEQ, :tASSOC, :tEQQ, :tCMP, :tOP_ASGN]
|
53
|
-
|
54
|
-
def inspect(source, tokens, sexp, comments)
|
55
|
-
@source = source
|
56
|
-
positions_not_to_check = get_positions_not_to_check(tokens, sexp)
|
57
|
-
|
58
|
-
tokens.each_cons(3) do |token_before, token, token_after|
|
59
|
-
next if token_before.type == :kDEF # TODO: remove?
|
60
|
-
next if positions_not_to_check.include?(token.pos)
|
61
|
-
|
62
|
-
case token.type
|
63
|
-
when :tPOW
|
64
|
-
if has_space?(token_before, token, token_after)
|
65
|
-
add_offence(:convention, token.pos.line, MSG_DETECTED)
|
66
|
-
end
|
67
|
-
when *BINARY_OPERATORS
|
68
|
-
check_missing_space(token_before, token, token_after)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
# Returns an array of positions marking the tokens that this cop
|
74
|
-
# should not check, either because the token is not an operator
|
75
|
-
# or because another cop does the check.
|
76
|
-
def get_positions_not_to_check(tokens, sexp)
|
77
|
-
positions_not_to_check = []
|
78
|
-
do_not_check_block_arg_pipes(sexp, positions_not_to_check)
|
79
|
-
do_not_check_param_default(tokens, sexp, positions_not_to_check)
|
80
|
-
do_not_check_class_lshift_self(tokens, sexp, positions_not_to_check)
|
81
|
-
do_not_check_def_things(tokens, sexp, positions_not_to_check)
|
82
|
-
do_not_check_singleton_operator_defs(tokens, sexp,
|
83
|
-
positions_not_to_check)
|
84
|
-
positions_not_to_check
|
85
|
-
end
|
86
|
-
|
87
|
-
def do_not_check_block_arg_pipes(sexp, positions_not_to_check)
|
88
|
-
# each { |a| }
|
89
|
-
# ^ ^
|
90
|
-
on_node(:block, sexp) do |b|
|
91
|
-
on_node(:args, b) do |a|
|
92
|
-
positions_not_to_check << a.loc.begin << a.loc.end if a.loc.begin
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
def do_not_check_param_default(tokens, sexp, positions_not_to_check)
|
98
|
-
# func(a, b=nil)
|
99
|
-
# ^
|
100
|
-
on_node(:optarg, sexp) do |optarg|
|
101
|
-
_arg, equals, _value = tokens[index_of_first_token(optarg, tokens),
|
102
|
-
3]
|
103
|
-
positions_not_to_check << equals.pos
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def do_not_check_class_lshift_self(tokens, sexp, positions_not_to_check)
|
108
|
-
# class <<self
|
109
|
-
# ^
|
110
|
-
on_node(:sclass, sexp) do |sclass|
|
111
|
-
ix = index_of_first_token(sclass, tokens)
|
112
|
-
if tokens[ix, 2].map(&:type) == [:kCLASS, :tLSHFT]
|
113
|
-
positions_not_to_check << tokens[ix + 1].pos
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
def do_not_check_def_things(tokens, sexp, positions_not_to_check)
|
119
|
-
# def +(other)
|
120
|
-
# ^
|
121
|
-
on_node(:def, sexp) do |def_node|
|
122
|
-
# def each &block
|
123
|
-
# ^
|
124
|
-
# def each *args
|
125
|
-
# ^
|
126
|
-
on_node([:blockarg, :restarg], def_node) do |arg_node|
|
127
|
-
positions_not_to_check << tokens[index_of_first_token(arg_node,
|
128
|
-
tokens)].pos
|
129
|
-
end
|
130
|
-
positions_not_to_check <<
|
131
|
-
tokens[index_of_first_token(def_node, tokens) + 1].pos
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
def do_not_check_singleton_operator_defs(tokens, sexp,
|
136
|
-
positions_not_to_check)
|
137
|
-
# def self.===(other)
|
138
|
-
# ^
|
139
|
-
on_node(:defs, sexp) do |defs_node|
|
140
|
-
_receiver, name, _args = *defs_node
|
141
|
-
ix = index_of_first_token(defs_node, tokens)
|
142
|
-
name_token = tokens[ix..-1].find { |t| t.text == name.to_s }
|
143
|
-
positions_not_to_check << name_token.pos
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
def check_missing_space(token_before, token, token_after)
|
148
|
-
unless has_space?(token_before, token, token_after)
|
149
|
-
text = token.text.to_s + (token.type == :tOP_ASGN ? '=' : '')
|
150
|
-
add_offence(:convention, token.pos.line, MSG_MISSING % text)
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
def has_space?(token_before, token, token_after)
|
155
|
-
space_between?(token_before, token) && space_between?(token,
|
156
|
-
token_after)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
class SpaceAroundBraces < Cop
|
161
|
-
include SurroundingSpace
|
162
|
-
MSG_LEFT = "Surrounding space missing for '{'."
|
163
|
-
MSG_RIGHT = "Space missing to the left of '}'."
|
164
|
-
|
165
|
-
def inspect(source, tokens, sexp, comments)
|
166
|
-
@source = source
|
167
|
-
positions_not_to_check = get_positions_not_to_check(tokens, sexp)
|
168
|
-
tokens.each_cons(2) do |t1, t2|
|
169
|
-
next if ([t1.pos, t2.pos] - positions_not_to_check).size < 2
|
170
|
-
|
171
|
-
type1, type2 = t1.type, t2.type
|
172
|
-
# :tLBRACE in hash literals, :tLCURLY otherwise.
|
173
|
-
next if [:tLCURLY, :tLBRACE].include?(type1) && type2 == :tRCURLY
|
174
|
-
check(t1, t2, MSG_LEFT) if type1 == :tLCURLY || type2 == :tLCURLY
|
175
|
-
check(t1, t2, MSG_RIGHT) if type2 == :tRCURLY
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
def get_positions_not_to_check(tokens, sexp)
|
180
|
-
positions_not_to_check = []
|
181
|
-
|
182
|
-
on_node(:hash, sexp) do |hash|
|
183
|
-
b_ix = index_of_first_token(hash, tokens)
|
184
|
-
e_ix = index_of_last_token(hash, tokens)
|
185
|
-
positions_not_to_check << tokens[b_ix].pos << tokens[e_ix].pos
|
186
|
-
end
|
187
|
-
|
188
|
-
# TODO: Check braces inside string/symbol/regexp/xstr interpolation.
|
189
|
-
on_node([:dstr, :dsym, :regexp, :xstr], sexp) do |s|
|
190
|
-
b_ix = index_of_first_token(s, tokens)
|
191
|
-
e_ix = index_of_last_token(s, tokens)
|
192
|
-
tokens[b_ix..e_ix].each do |t|
|
193
|
-
positions_not_to_check << t.pos if t.type == :tRCURLY
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
positions_not_to_check
|
198
|
-
end
|
199
|
-
|
200
|
-
def check(t1, t2, msg)
|
201
|
-
unless space_between?(t1, t2)
|
202
|
-
add_offence(:convention, t1.pos.line, msg)
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|
206
|
-
|
207
|
-
module SpaceInside
|
208
|
-
include SurroundingSpace
|
209
|
-
MSG = 'Space inside %s detected.'
|
210
|
-
|
211
|
-
def inspect(source, tokens, sexp, comments)
|
212
|
-
@source = source
|
213
|
-
left, right, kind = specifics
|
214
|
-
tokens.each_cons(2) do |t1, t2|
|
215
|
-
if t1.type == left || t2.type == right
|
216
|
-
if t2.pos.line == t1.pos.line && space_between?(t1, t2)
|
217
|
-
add_offence(:convention, t1.pos.line, MSG % kind)
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|
221
|
-
end
|
222
|
-
end
|
223
|
-
|
224
|
-
class SpaceInsideParens < Cop
|
225
|
-
include SpaceInside
|
226
|
-
|
227
|
-
def specifics
|
228
|
-
[:tLPAREN2, :tRPAREN, 'parentheses']
|
229
|
-
end
|
230
|
-
end
|
231
|
-
|
232
|
-
class SpaceInsideBrackets < Cop
|
233
|
-
include SpaceInside
|
234
|
-
|
235
|
-
def specifics
|
236
|
-
[:tLBRACK, :tRBRACK, 'square brackets']
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
class SpaceInsideHashLiteralBraces < Cop
|
241
|
-
include SurroundingSpace
|
242
|
-
MSG = 'Space inside hash literal braces %s.'
|
243
|
-
|
244
|
-
def inspect(source, tokens, sexp, comments)
|
245
|
-
@source = source
|
246
|
-
on_node(:hash, sexp) do |hash|
|
247
|
-
b_ix = index_of_first_token(hash, tokens)
|
248
|
-
e_ix = index_of_last_token(hash, tokens)
|
249
|
-
if tokens[b_ix].type == :tLBRACE # Hash literal with braces?
|
250
|
-
check(tokens[b_ix], tokens[b_ix + 1])
|
251
|
-
check(tokens[e_ix - 1], tokens[e_ix])
|
252
|
-
end
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
def check(t1, t2)
|
257
|
-
types = [t1, t2].map(&:type)
|
258
|
-
braces = [:tLBRACE, :tRCURLY]
|
259
|
-
return if types == braces || (braces - types).size == 2
|
260
|
-
has_space = space_between?(t1, t2)
|
261
|
-
is_offence, word = if self.class.config['EnforcedStyleIsWithSpaces']
|
262
|
-
[!has_space, 'missing']
|
263
|
-
else
|
264
|
-
[has_space, 'detected']
|
265
|
-
end
|
266
|
-
add_offence(:convention, t1.pos.line, MSG % word) if is_offence
|
267
|
-
end
|
268
|
-
end
|
269
|
-
|
270
|
-
class SpaceAroundEqualsInParameterDefault < Cop
|
271
|
-
include SurroundingSpace
|
272
|
-
MSG = 'Surrounding space missing in default value assignment.'
|
273
|
-
|
274
|
-
def inspect(source, tokens, sexp, comments)
|
275
|
-
@source = source
|
276
|
-
on_node(:optarg, sexp) do |optarg|
|
277
|
-
arg, equals, value = tokens[index_of_first_token(optarg, tokens), 3]
|
278
|
-
unless space_between?(arg, equals) && space_between?(equals, value)
|
279
|
-
add_offence(:convention, equals.pos.line, MSG)
|
280
|
-
end
|
281
|
-
end
|
282
|
-
end
|
283
|
-
end
|
284
|
-
end
|
285
|
-
end
|