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
@@ -0,0 +1,119 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# rubocop:disable LineLength
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Formatter
|
7
|
+
# Abstract base class for formatter, implements all public API methods.
|
8
|
+
#
|
9
|
+
# ## Creating Custom Formatter
|
10
|
+
#
|
11
|
+
# You can create a custom formatter by subclassing
|
12
|
+
# `Rubocop::Formatter::BaseFormatter` and override some methods,
|
13
|
+
# or implement all the methods by duck typing.
|
14
|
+
#
|
15
|
+
# ## Using Custom Formatter in Command Line
|
16
|
+
#
|
17
|
+
# You can tell RuboCop to use your custom formatter with a combination of
|
18
|
+
# `--format` and `--require` option.
|
19
|
+
# For example, when you have defined `MyCustomFormatter` in
|
20
|
+
# `./path/to/my_custom_formatter.rb`, you would type this command:
|
21
|
+
#
|
22
|
+
# rubocop --require ./path/to/my_custom_formatter --format MyCustomFormatter
|
23
|
+
#
|
24
|
+
# Note: The path passed to `--require` is directly passed to
|
25
|
+
# `Kernel.require`.
|
26
|
+
# If your custom formatter file is not in `$LOAD_PATH`,
|
27
|
+
# you need to specify the path as relative path prefixed with `./`
|
28
|
+
# explicitly, or absolute path.
|
29
|
+
#
|
30
|
+
# ## Method Invocation Order
|
31
|
+
#
|
32
|
+
# For example, when RuboCop inspects 2 files,
|
33
|
+
# the invocation order should be like this:
|
34
|
+
#
|
35
|
+
# * `#initialize`
|
36
|
+
# * `#started`
|
37
|
+
# * `#file_started`
|
38
|
+
# * `#file_finished`
|
39
|
+
# * `#file_started`
|
40
|
+
# * `#file_finished`
|
41
|
+
# * `#finished`
|
42
|
+
#
|
43
|
+
class BaseFormatter
|
44
|
+
# rubocop:enable LineLength
|
45
|
+
|
46
|
+
# @api public
|
47
|
+
#
|
48
|
+
# @!attribute [r] output
|
49
|
+
#
|
50
|
+
# @return [IO]
|
51
|
+
# the IO object passed to `#initialize`
|
52
|
+
#
|
53
|
+
# @see #initialize
|
54
|
+
attr_reader :output
|
55
|
+
|
56
|
+
# @api public
|
57
|
+
#
|
58
|
+
# @param output [IO]
|
59
|
+
# `$stdout` or opened file
|
60
|
+
def initialize(output)
|
61
|
+
@output = output
|
62
|
+
end
|
63
|
+
|
64
|
+
# @api public
|
65
|
+
#
|
66
|
+
# Invoked once before any files are inspected.
|
67
|
+
#
|
68
|
+
# @param target_files [Array(String)]
|
69
|
+
# all target file paths to be inspected
|
70
|
+
#
|
71
|
+
# @return [void]
|
72
|
+
def started(target_files)
|
73
|
+
end
|
74
|
+
|
75
|
+
# @api public
|
76
|
+
#
|
77
|
+
# Invoked at the beginning of inspecting each files.
|
78
|
+
#
|
79
|
+
# @param file [String]
|
80
|
+
# the file path
|
81
|
+
#
|
82
|
+
# @param options [Hash]
|
83
|
+
# file specific information, currently this is always empty.
|
84
|
+
#
|
85
|
+
# @return [void]
|
86
|
+
def file_started(file, options)
|
87
|
+
end
|
88
|
+
|
89
|
+
# @api public
|
90
|
+
#
|
91
|
+
# Invoked at the end of inspecting each files.
|
92
|
+
#
|
93
|
+
# @param file [String]
|
94
|
+
# the file path
|
95
|
+
#
|
96
|
+
# @param offences [Array(Rubocop::Cop::Offence)]
|
97
|
+
# all detected offences for the file
|
98
|
+
#
|
99
|
+
# @return [void]
|
100
|
+
#
|
101
|
+
# @see Rubocop::Cop::Offence
|
102
|
+
def file_finished(file, offences)
|
103
|
+
end
|
104
|
+
|
105
|
+
# @api public
|
106
|
+
#
|
107
|
+
# Invoked after all files are inspected, or interrupted by user.
|
108
|
+
#
|
109
|
+
# @param inspected_files [Array(String)]
|
110
|
+
# the inspected file paths.
|
111
|
+
# This would be same as `target_files` passed to `#started`
|
112
|
+
# unless RuboCop is interrupted by user.
|
113
|
+
#
|
114
|
+
# @return [void]
|
115
|
+
def finished(inspected_files)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Formatter
|
5
|
+
# This formatter formats report data in clang style.
|
6
|
+
# The precise location of the problem is shown together with the
|
7
|
+
# relevant source code.
|
8
|
+
class ClangStyleFormatter < SimpleTextFormatter
|
9
|
+
def report_file(file, offences)
|
10
|
+
offences.each do |o|
|
11
|
+
output.printf("%s:%d:%d: %s: %s\n",
|
12
|
+
smart_path(file).color(:cyan), o.line, o.real_column,
|
13
|
+
o.clang_severity, o.message)
|
14
|
+
output.puts(o.location.source_line)
|
15
|
+
output.puts(' ' * o.location.column +
|
16
|
+
'^' * o.location.column_range.count)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Formatter
|
5
|
+
# This formatter displays the report data in format that's
|
6
|
+
# easy to process in the Emacs text editor.
|
7
|
+
class EmacsStyleFormatter < SimpleTextFormatter
|
8
|
+
def report_file(file, offences)
|
9
|
+
offences.each do |o|
|
10
|
+
output.printf("%s:%d:%d: %s: %s\n",
|
11
|
+
file, o.line, o.real_column, o.encode_severity,
|
12
|
+
o.message)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Formatter
|
5
|
+
# This is a collection of formatters. A FormatterSet can hold multiple
|
6
|
+
# formatter instances and provides transparent formatter API methods
|
7
|
+
# which invoke same method of each formatters.
|
8
|
+
class FormatterSet < Array
|
9
|
+
BUILTIN_FORMATTERS_FOR_KEYS = {
|
10
|
+
'progress' => ProgressFormatter,
|
11
|
+
'simple' => SimpleTextFormatter,
|
12
|
+
'clang' => ClangStyleFormatter,
|
13
|
+
'emacs' => EmacsStyleFormatter,
|
14
|
+
'json' => JSONFormatter
|
15
|
+
}
|
16
|
+
|
17
|
+
FORMATTER_APIS = [:started, :file_started, :file_finished, :finished]
|
18
|
+
|
19
|
+
def initialize(report_summary = true)
|
20
|
+
@reports_summary = report_summary
|
21
|
+
end
|
22
|
+
|
23
|
+
FORMATTER_APIS.each do |method_name|
|
24
|
+
define_method(method_name) do |*args|
|
25
|
+
each { |f| f.send(method_name, *args) }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_formatter(formatter_key, output_path = nil)
|
30
|
+
formatter_class = if formatter_key =~ /\A[A-Z]/
|
31
|
+
custom_formatter_class(formatter_key)
|
32
|
+
else
|
33
|
+
builtin_formatter_class(formatter_key)
|
34
|
+
end
|
35
|
+
|
36
|
+
output = output_path ? File.open(output_path, 'w') : $stdout
|
37
|
+
|
38
|
+
formatter = formatter_class.new(output)
|
39
|
+
if formatter.respond_to?(:reports_summary=)
|
40
|
+
# TODO: Consider dropping -s/--silent option
|
41
|
+
formatter.reports_summary = @reports_summary
|
42
|
+
end
|
43
|
+
self << formatter
|
44
|
+
end
|
45
|
+
|
46
|
+
def close_output_files
|
47
|
+
each do |formatter|
|
48
|
+
formatter.output.close if formatter.output.is_a?(File)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def builtin_formatter_class(specified_key)
|
55
|
+
matching_keys = BUILTIN_FORMATTERS_FOR_KEYS.keys.select do |key|
|
56
|
+
key.start_with?(specified_key)
|
57
|
+
end
|
58
|
+
|
59
|
+
if matching_keys.empty?
|
60
|
+
fail %(No formatter for "#{specified_key}")
|
61
|
+
elsif matching_keys.size > 1
|
62
|
+
fail %(Cannot determine formatter for "#{specified_key}")
|
63
|
+
end
|
64
|
+
|
65
|
+
BUILTIN_FORMATTERS_FOR_KEYS[matching_keys.first]
|
66
|
+
end
|
67
|
+
|
68
|
+
def custom_formatter_class(specified_class_name)
|
69
|
+
constant_names = specified_class_name.split('::')
|
70
|
+
constant_names.shift if constant_names.first.empty?
|
71
|
+
constant_names.reduce(Object) do |namespace, constant_name|
|
72
|
+
namespace.const_get(constant_name, false)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'pathname'
|
5
|
+
|
6
|
+
module Rubocop
|
7
|
+
module Formatter
|
8
|
+
# This formatter formats the report data in JSON format.
|
9
|
+
class JSONFormatter < BaseFormatter
|
10
|
+
attr_reader :output_hash
|
11
|
+
|
12
|
+
def initialize(output)
|
13
|
+
super
|
14
|
+
@output_hash = {
|
15
|
+
metadata: metadata_hash,
|
16
|
+
files: [],
|
17
|
+
summary: { offence_count: 0 }
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
def started(target_files)
|
22
|
+
output_hash[:summary][:target_file_count] = target_files.count
|
23
|
+
end
|
24
|
+
|
25
|
+
def file_finished(file, offences)
|
26
|
+
output_hash[:files] << hash_for_file(file, offences)
|
27
|
+
output_hash[:summary][:offence_count] += offences.count
|
28
|
+
end
|
29
|
+
|
30
|
+
def finished(inspected_files)
|
31
|
+
output_hash[:summary][:inspected_file_count] = inspected_files.count
|
32
|
+
output.write output_hash.to_json
|
33
|
+
end
|
34
|
+
|
35
|
+
def metadata_hash
|
36
|
+
{
|
37
|
+
rubocop_version: Rubocop::Version::STRING,
|
38
|
+
ruby_engine: RUBY_ENGINE,
|
39
|
+
ruby_version: RUBY_VERSION,
|
40
|
+
ruby_patchlevel: RUBY_PATCHLEVEL.to_s,
|
41
|
+
ruby_platform: RUBY_PLATFORM
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
def hash_for_file(file, offences)
|
46
|
+
{
|
47
|
+
path: relative_path(file),
|
48
|
+
offences: offences.map { |o| hash_for_offence(o) }
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
def hash_for_offence(offence)
|
53
|
+
{
|
54
|
+
severity: offence.severity,
|
55
|
+
message: offence.message,
|
56
|
+
cop_name: offence.cop_name,
|
57
|
+
location: hash_for_location(offence)
|
58
|
+
}
|
59
|
+
end
|
60
|
+
|
61
|
+
# TODO: Consider better solution for Offence#real_column.
|
62
|
+
def hash_for_location(offence)
|
63
|
+
{
|
64
|
+
line: offence.line,
|
65
|
+
column: offence.real_column
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def relative_path(path)
|
72
|
+
Pathname.new(path).relative_path_from(Pathname.getwd).to_s
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Formatter
|
5
|
+
# This formatter display dots for files with no offences and
|
6
|
+
# letters for files with problems in the them. In the end it
|
7
|
+
# appends the regular report data in the clang style format.
|
8
|
+
class ProgressFormatter < ClangStyleFormatter
|
9
|
+
COLOR_FOR_SEVERITY = {
|
10
|
+
refactor: :yellow,
|
11
|
+
convention: :yellow,
|
12
|
+
warning: :magenta,
|
13
|
+
error: :red,
|
14
|
+
fatal: :red
|
15
|
+
}
|
16
|
+
|
17
|
+
def started(target_files)
|
18
|
+
super
|
19
|
+
@offences_for_files = {}
|
20
|
+
file_phrase = target_files.count == 1 ? 'file' : 'files'
|
21
|
+
output.puts "Inspecting #{target_files.count} #{file_phrase}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def file_finished(file, offences)
|
25
|
+
@total_offence_count += offences.count
|
26
|
+
@offences_for_files[file] = offences unless offences.empty?
|
27
|
+
report_file_as_mark(file, offences)
|
28
|
+
end
|
29
|
+
|
30
|
+
def finished(inspected_files)
|
31
|
+
output.puts
|
32
|
+
|
33
|
+
return unless reports_summary?
|
34
|
+
|
35
|
+
unless @offences_for_files.empty?
|
36
|
+
output.puts
|
37
|
+
output.puts 'Offences:'
|
38
|
+
output.puts
|
39
|
+
|
40
|
+
@offences_for_files.each do |file, offences|
|
41
|
+
report_file(file, offences)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
report_summary(inspected_files.count, @total_offence_count)
|
46
|
+
end
|
47
|
+
|
48
|
+
def report_file_as_mark(file, offences)
|
49
|
+
mark = if offences.empty?
|
50
|
+
'.'.color(:green)
|
51
|
+
else
|
52
|
+
highest_offence = offences.max do |a, b|
|
53
|
+
a.severity_level <=> b.severity_level
|
54
|
+
end
|
55
|
+
color = COLOR_FOR_SEVERITY[highest_offence.severity]
|
56
|
+
highest_offence.encode_severity.color(color)
|
57
|
+
end
|
58
|
+
|
59
|
+
output.write mark
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Formatter
|
5
|
+
# A basic formatter that displays only files with offences.
|
6
|
+
# Offences are displayed at compact form - just the
|
7
|
+
# location of the problem and the associated message.
|
8
|
+
class SimpleTextFormatter < BaseFormatter
|
9
|
+
attr_accessor :reports_summary
|
10
|
+
alias_method :reports_summary?, :reports_summary
|
11
|
+
|
12
|
+
def started(target_files)
|
13
|
+
@total_offence_count = 0
|
14
|
+
end
|
15
|
+
|
16
|
+
def file_finished(file, offences)
|
17
|
+
return if offences.empty?
|
18
|
+
@total_offence_count += offences.count
|
19
|
+
report_file(file, offences)
|
20
|
+
end
|
21
|
+
|
22
|
+
def finished(inspected_files)
|
23
|
+
if reports_summary?
|
24
|
+
report_summary(inspected_files.count, @total_offence_count)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def report_file(file, offences)
|
29
|
+
output.puts "== #{smart_path(file)} ==".color(:yellow)
|
30
|
+
output.puts offences.join("\n")
|
31
|
+
end
|
32
|
+
|
33
|
+
def report_summary(file_count, offence_count)
|
34
|
+
summary = ''
|
35
|
+
|
36
|
+
plural = file_count == 0 || file_count > 1 ? 's' : ''
|
37
|
+
summary << "#{file_count} file#{plural} inspected, "
|
38
|
+
|
39
|
+
offences_string = case offence_count
|
40
|
+
when 0 then 'no offences'
|
41
|
+
when 1 then '1 offence'
|
42
|
+
else "#{offence_count} offences"
|
43
|
+
end
|
44
|
+
summary << "#{offences_string} detected"
|
45
|
+
.color(offence_count.zero? ? :green : :red)
|
46
|
+
|
47
|
+
output.puts
|
48
|
+
output.puts summary
|
49
|
+
end
|
50
|
+
|
51
|
+
protected
|
52
|
+
|
53
|
+
def smart_path(path)
|
54
|
+
if path.start_with?(Dir.pwd)
|
55
|
+
Pathname.new(path).relative_path_from(Pathname.getwd).to_s
|
56
|
+
else
|
57
|
+
path
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/rubocop/version.rb
CHANGED
@@ -1,7 +1,21 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Rubocop
|
4
|
+
# This module holds the RuboCop version information.
|
4
5
|
module Version
|
5
|
-
STRING = '0.
|
6
|
+
STRING = '0.9.0'
|
7
|
+
|
8
|
+
MSG = '%s (using Parser %s, running on %s %s %s)'
|
9
|
+
|
10
|
+
module_function
|
11
|
+
|
12
|
+
def version(debug = false)
|
13
|
+
if debug
|
14
|
+
sprintf(MSG, STRING, Parser::VERSION,
|
15
|
+
RUBY_ENGINE, RUBY_VERSION, RUBY_PLATFORM)
|
16
|
+
else
|
17
|
+
STRING
|
18
|
+
end
|
19
|
+
end
|
6
20
|
end
|
7
21
|
end
|