rubocop 0.13.1 → 0.14.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/.rubocop.yml +3 -0
- data/CHANGELOG.md +42 -0
- data/README.md +59 -54
- data/config/default.yml +124 -95
- data/config/disabled.yml +4 -0
- data/config/enabled.yml +286 -264
- data/lib/rubocop.rb +10 -3
- data/lib/rubocop/cli.rb +10 -171
- data/lib/rubocop/cop/cop.rb +14 -11
- data/lib/rubocop/cop/lint/debugger.rb +35 -0
- data/lib/rubocop/cop/lint/syntax.rb +34 -0
- data/lib/rubocop/cop/offence.rb +15 -23
- data/lib/rubocop/cop/style/align_array.rb +1 -10
- data/lib/rubocop/cop/style/align_hash.rb +14 -2
- data/lib/rubocop/cop/style/align_parameters.rb +1 -11
- data/lib/rubocop/cop/style/and_or.rb +13 -11
- data/lib/rubocop/cop/style/attr.rb +1 -1
- data/lib/rubocop/cop/style/autocorrect_alignment.rb +31 -6
- data/lib/rubocop/cop/style/blocks.rb +14 -6
- data/lib/rubocop/cop/style/character_literal.rb +1 -1
- data/lib/rubocop/cop/style/class_length.rb +38 -0
- data/lib/rubocop/cop/style/collection_methods.rb +1 -1
- data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
- data/lib/rubocop/cop/style/configurable_naming.rb +47 -0
- data/lib/rubocop/cop/style/def_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/empty_literal.rb +1 -1
- data/lib/rubocop/cop/style/even_odd.rb +7 -3
- data/lib/rubocop/cop/style/hash_methods.rb +1 -1
- data/lib/rubocop/cop/style/hash_syntax.rb +36 -7
- data/lib/rubocop/cop/style/lambda_call.rb +36 -11
- data/lib/rubocop/cop/style/method_call_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +41 -0
- data/lib/rubocop/cop/style/method_length.rb +2 -13
- data/lib/rubocop/cop/style/method_name.rb +42 -0
- data/lib/rubocop/cop/style/numeric_literals.rb +4 -0
- data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +60 -0
- data/lib/rubocop/cop/style/redundant_exception.rb +32 -0
- data/lib/rubocop/cop/style/redundant_return.rb +14 -5
- data/lib/rubocop/cop/style/redundant_self.rb +1 -1
- data/lib/rubocop/cop/style/semicolon.rb +13 -4
- data/lib/rubocop/cop/style/signal_exception.rb +63 -14
- data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
- data/lib/rubocop/cop/style/string_help.rb +4 -1
- data/lib/rubocop/cop/style/string_literals.rb +34 -11
- data/lib/rubocop/cop/style/surrounding_space.rb +64 -17
- data/lib/rubocop/cop/style/tab.rb +1 -1
- data/lib/rubocop/cop/style/variable_name.rb +44 -0
- data/lib/rubocop/cop/style/when_then.rb +1 -1
- data/lib/rubocop/cop/style/while_until_do.rb +1 -1
- data/lib/rubocop/cop/team.rb +4 -7
- data/lib/rubocop/cop/util.rb +12 -0
- data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
- data/lib/rubocop/formatter/emacs_style_formatter.rb +5 -2
- data/lib/rubocop/formatter/json_formatter.rb +1 -0
- data/lib/rubocop/formatter/progress_formatter.rb +9 -13
- data/lib/rubocop/formatter/simple_text_formatter.rb +63 -15
- data/lib/rubocop/options.rb +184 -0
- data/lib/rubocop/processed_source.rb +4 -0
- data/lib/rubocop/version.rb +1 -1
- data/rubocop.gemspec +1 -1
- data/spec/rubocop/cli_spec.rb +870 -1001
- data/spec/rubocop/config_spec.rb +13 -13
- data/spec/rubocop/config_store_spec.rb +38 -37
- data/spec/rubocop/cop/commissioner_spec.rb +42 -46
- data/spec/rubocop/cop/cop_spec.rb +72 -77
- data/spec/rubocop/cop/corrector_spec.rb +51 -55
- data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +100 -106
- data/spec/rubocop/cop/lint/block_alignment_spec.rb +403 -409
- data/spec/rubocop/cop/lint/debugger_spec.rb +39 -0
- data/spec/rubocop/cop/lint/empty_ensure_spec.rb +19 -25
- data/spec/rubocop/cop/lint/end_alignment_spec.rb +50 -56
- data/spec/rubocop/cop/lint/end_in_method_spec.rb +20 -26
- data/spec/rubocop/cop/lint/ensure_return_spec.rb +30 -36
- data/spec/rubocop/cop/lint/eval_spec.rb +25 -31
- data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +22 -28
- data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +51 -57
- data/spec/rubocop/cop/lint/loop_spec.rb +17 -23
- data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +51 -57
- data/spec/rubocop/cop/lint/rescue_exception_spec.rb +105 -111
- data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +230 -236
- data/spec/rubocop/cop/lint/syntax_spec.rb +33 -0
- data/spec/rubocop/cop/lint/unreachable_code_spec.rb +51 -57
- data/spec/rubocop/cop/lint/useless_assignment_spec.rb +1544 -1550
- data/spec/rubocop/cop/lint/useless_comparison_spec.rb +21 -27
- data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +119 -125
- data/spec/rubocop/cop/lint/void_spec.rb +50 -56
- data/spec/rubocop/cop/offence_spec.rb +101 -131
- data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +6 -12
- data/spec/rubocop/cop/rails/read_attribute_spec.rb +6 -12
- data/spec/rubocop/cop/rails/validation_spec.rb +13 -19
- data/spec/rubocop/cop/style/access_control_spec.rb +146 -152
- data/spec/rubocop/cop/style/alias_spec.rb +30 -36
- data/spec/rubocop/cop/style/align_array_spec.rb +57 -56
- data/spec/rubocop/cop/style/align_hash_spec.rb +256 -237
- data/spec/rubocop/cop/style/align_parameters_spec.rb +216 -202
- data/spec/rubocop/cop/style/and_or_spec.rb +51 -55
- data/spec/rubocop/cop/style/ascii_comments_spec.rb +14 -20
- data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +26 -32
- data/spec/rubocop/cop/style/attr_spec.rb +11 -17
- data/spec/rubocop/cop/style/begin_block_spec.rb +6 -12
- data/spec/rubocop/cop/style/block_comments_spec.rb +13 -19
- data/spec/rubocop/cop/style/block_nesting_spec.rb +134 -140
- data/spec/rubocop/cop/style/blocks_spec.rb +81 -84
- data/spec/rubocop/cop/style/case_equality_spec.rb +5 -11
- data/spec/rubocop/cop/style/case_indentation_spec.rb +71 -77
- data/spec/rubocop/cop/style/character_literal_spec.rb +31 -37
- data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +31 -37
- data/spec/rubocop/cop/style/class_length_spec.rb +65 -0
- data/spec/rubocop/cop/style/class_methods_spec.rb +35 -41
- data/spec/rubocop/cop/style/class_vars_spec.rb +11 -17
- data/spec/rubocop/cop/style/collection_methods_spec.rb +41 -47
- data/spec/rubocop/cop/style/colon_method_call_spec.rb +45 -51
- data/spec/rubocop/cop/style/comment_annotation_spec.rb +79 -85
- data/spec/rubocop/cop/style/constant_name_spec.rb +45 -51
- data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +28 -34
- data/spec/rubocop/cop/style/def_without_parentheses_spec.rb +23 -29
- data/spec/rubocop/cop/style/documentation_spec.rb +60 -66
- data/spec/rubocop/cop/style/dot_position_spec.rb +50 -56
- data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +109 -110
- data/spec/rubocop/cop/style/empty_lines_spec.rb +28 -34
- data/spec/rubocop/cop/style/empty_literal_spec.rb +80 -86
- data/spec/rubocop/cop/style/encoding_spec.rb +50 -56
- data/spec/rubocop/cop/style/end_block_spec.rb +6 -12
- data/spec/rubocop/cop/style/end_of_line_spec.rb +13 -19
- data/spec/rubocop/cop/style/even_odd_spec.rb +69 -41
- data/spec/rubocop/cop/style/favor_join_spec.rb +21 -27
- data/spec/rubocop/cop/style/favor_modifier_spec.rb +180 -176
- data/spec/rubocop/cop/style/favor_sprintf_spec.rb +41 -47
- data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +63 -69
- data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +32 -38
- data/spec/rubocop/cop/style/final_newline_spec.rb +16 -22
- data/spec/rubocop/cop/style/for_spec.rb +18 -24
- data/spec/rubocop/cop/style/global_vars_spec.rb +23 -29
- data/spec/rubocop/cop/style/hash_methods_spec.rb +39 -45
- data/spec/rubocop/cop/style/hash_syntax_spec.rb +93 -65
- data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +11 -17
- data/spec/rubocop/cop/style/indentation_width_spec.rb +377 -383
- data/spec/rubocop/cop/style/lambda_call_spec.rb +40 -22
- data/spec/rubocop/cop/style/lambda_spec.rb +30 -34
- data/spec/rubocop/cop/style/leading_comment_space_spec.rb +44 -50
- data/spec/rubocop/cop/style/line_length_spec.rb +11 -17
- data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +14 -20
- data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +60 -0
- data/spec/rubocop/cop/style/method_length_spec.rb +127 -133
- data/spec/rubocop/cop/style/method_name_spec.rb +103 -0
- data/spec/rubocop/cop/style/module_function_spec.rb +16 -22
- data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +64 -70
- data/spec/rubocop/cop/style/multiline_if_then_spec.rb +74 -80
- data/spec/rubocop/cop/style/nil_comparison_spec.rb +20 -26
- data/spec/rubocop/cop/style/not_spec.rb +13 -19
- data/spec/rubocop/cop/style/numeric_literals_spec.rb +36 -35
- data/spec/rubocop/cop/style/one_line_conditional_spec.rb +5 -11
- data/spec/rubocop/cop/style/op_method_spec.rb +61 -67
- data/spec/rubocop/cop/style/parameter_lists_spec.rb +31 -37
- data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +62 -68
- data/spec/rubocop/cop/style/perl_backrefs_spec.rb +9 -15
- data/spec/rubocop/cop/style/proc_spec.rb +13 -19
- data/spec/rubocop/cop/style/raise_args_spec.rb +55 -0
- data/spec/rubocop/cop/style/reduce_arguments_spec.rb +49 -55
- data/spec/rubocop/cop/style/redundant_begin_spec.rb +47 -53
- data/spec/rubocop/cop/style/redundant_exception_spec.rb +27 -0
- data/spec/rubocop/cop/style/redundant_return_spec.rb +164 -72
- data/spec/rubocop/cop/style/redundant_self_spec.rb +109 -115
- data/spec/rubocop/cop/style/regexp_literal_spec.rb +57 -63
- data/spec/rubocop/cop/style/rescue_modifier_spec.rb +99 -105
- data/spec/rubocop/cop/style/semicolon_spec.rb +95 -90
- data/spec/rubocop/cop/style/signal_exception_spec.rb +248 -95
- data/spec/rubocop/cop/style/single_line_methods_spec.rb +45 -51
- data/spec/rubocop/cop/style/space_after_colon_spec.rb +14 -20
- data/spec/rubocop/cop/style/space_after_comma_spec.rb +16 -22
- data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +48 -54
- data/spec/rubocop/cop/style/space_after_method_name_spec.rb +49 -55
- data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +10 -16
- data/spec/rubocop/cop/style/space_around_block_braces_spec.rb +118 -50
- data/spec/rubocop/cop/style/space_around_equals_in_default_parameter_spec.rb +18 -24
- data/spec/rubocop/cop/style/space_around_operators_spec.rb +204 -210
- data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +36 -42
- data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +39 -45
- data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +62 -68
- data/spec/rubocop/cop/style/space_inside_parens_spec.rb +18 -24
- data/spec/rubocop/cop/style/special_global_vars_spec.rb +40 -46
- data/spec/rubocop/cop/style/string_literals_spec.rb +148 -70
- data/spec/rubocop/cop/style/symbol_array_spec.rb +28 -34
- data/spec/rubocop/cop/style/symbol_name_spec.rb +132 -138
- data/spec/rubocop/cop/style/tab_spec.rb +9 -15
- data/spec/rubocop/cop/style/ternary_operator_spec.rb +25 -31
- data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +10 -16
- data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +14 -20
- data/spec/rubocop/cop/style/trivial_accessors_spec.rb +374 -380
- data/spec/rubocop/cop/style/unless_else_spec.rb +17 -23
- data/spec/rubocop/cop/style/variable_interpolation_spec.rb +36 -42
- data/spec/rubocop/cop/style/variable_name_spec.rb +83 -0
- data/spec/rubocop/cop/style/when_then_spec.rb +31 -37
- data/spec/rubocop/cop/style/while_until_do_spec.rb +47 -53
- data/spec/rubocop/cop/style/word_array_spec.rb +49 -55
- data/spec/rubocop/cop/team_spec.rb +125 -127
- data/spec/rubocop/cop/variable_inspector/assignment_spec.rb +176 -180
- data/spec/rubocop/cop/variable_inspector/locatable_spec.rb +580 -586
- data/spec/rubocop/cop/variable_inspector/scope_spec.rb +140 -146
- data/spec/rubocop/cop/variable_inspector/variable_spec.rb +52 -58
- data/spec/rubocop/cop/variable_inspector/variable_table_spec.rb +217 -223
- data/spec/rubocop/cop/variable_inspector_spec.rb +15 -19
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +35 -36
- data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +2 -2
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +24 -1
- data/spec/rubocop/formatter/file_list_formatter_spec.rb +1 -1
- data/spec/rubocop/formatter/formatter_set_spec.rb +3 -3
- data/spec/rubocop/formatter/json_formatter_spec.rb +7 -2
- data/spec/rubocop/formatter/offence_count_formatter_spec.rb +1 -1
- data/spec/rubocop/formatter/progress_formatter_spec.rb +1 -1
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +55 -6
- data/spec/rubocop/options_spec.rb +233 -0
- data/spec/rubocop/processed_source_spec.rb +85 -42
- data/spec/rubocop/source_parser_spec.rb +108 -110
- data/spec/rubocop/target_finder_spec.rb +125 -127
- data/spec/rubocop/token_spec.rb +15 -17
- metadata +32 -8
- data/lib/rubocop/backports/bsearch.rb +0 -39
- data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +0 -77
- data/spec/rubocop/cop/style/method_and_variable_snake_case_spec.rb +0 -102
data/lib/rubocop.rb
CHANGED
@@ -6,8 +6,6 @@ require 'parser/current'
|
|
6
6
|
require 'ast/sexp'
|
7
7
|
require 'powerpack'
|
8
8
|
|
9
|
-
require 'rubocop/backports/bsearch'
|
10
|
-
|
11
9
|
require 'rubocop/cop/util'
|
12
10
|
require 'rubocop/cop/offence'
|
13
11
|
require 'rubocop/cop/cop'
|
@@ -25,6 +23,7 @@ require 'rubocop/cop/variable_inspector/variable_table'
|
|
25
23
|
|
26
24
|
require 'rubocop/cop/lint/assignment_in_condition'
|
27
25
|
require 'rubocop/cop/lint/block_alignment'
|
26
|
+
require 'rubocop/cop/lint/debugger'
|
28
27
|
require 'rubocop/cop/lint/empty_ensure'
|
29
28
|
require 'rubocop/cop/lint/end_alignment'
|
30
29
|
require 'rubocop/cop/lint/end_in_method'
|
@@ -36,6 +35,7 @@ require 'rubocop/cop/lint/loop'
|
|
36
35
|
require 'rubocop/cop/lint/parentheses_as_grouped_expression'
|
37
36
|
require 'rubocop/cop/lint/rescue_exception'
|
38
37
|
require 'rubocop/cop/lint/shadowing_outer_local_variable'
|
38
|
+
require 'rubocop/cop/lint/syntax'
|
39
39
|
require 'rubocop/cop/lint/unreachable_code'
|
40
40
|
require 'rubocop/cop/lint/useless_assignment'
|
41
41
|
require 'rubocop/cop/lint/useless_comparison'
|
@@ -43,6 +43,7 @@ require 'rubocop/cop/lint/useless_setter_call'
|
|
43
43
|
require 'rubocop/cop/lint/void'
|
44
44
|
|
45
45
|
require 'rubocop/cop/style/autocorrect_alignment'
|
46
|
+
require 'rubocop/cop/style/configurable_naming'
|
46
47
|
require 'rubocop/cop/style/string_help'
|
47
48
|
require 'rubocop/cop/style/access_control'
|
48
49
|
require 'rubocop/cop/style/alias'
|
@@ -61,6 +62,7 @@ require 'rubocop/cop/style/case_equality'
|
|
61
62
|
require 'rubocop/cop/style/case_indentation'
|
62
63
|
require 'rubocop/cop/style/character_literal'
|
63
64
|
require 'rubocop/cop/style/class_and_module_camel_case'
|
65
|
+
require 'rubocop/cop/style/class_length'
|
64
66
|
require 'rubocop/cop/style/class_methods'
|
65
67
|
require 'rubocop/cop/style/class_vars'
|
66
68
|
require 'rubocop/cop/style/collection_methods'
|
@@ -93,9 +95,10 @@ require 'rubocop/cop/style/lambda'
|
|
93
95
|
require 'rubocop/cop/style/lambda_call'
|
94
96
|
require 'rubocop/cop/style/leading_comment_space'
|
95
97
|
require 'rubocop/cop/style/line_length'
|
96
|
-
require 'rubocop/cop/style/method_and_variable_snake_case'
|
97
98
|
require 'rubocop/cop/style/method_call_parentheses'
|
99
|
+
require 'rubocop/cop/style/method_called_on_do_end_block'
|
98
100
|
require 'rubocop/cop/style/method_length'
|
101
|
+
require 'rubocop/cop/style/method_name'
|
99
102
|
require 'rubocop/cop/style/module_function'
|
100
103
|
require 'rubocop/cop/style/multiline_block_chain'
|
101
104
|
require 'rubocop/cop/style/multiline_if_then'
|
@@ -108,8 +111,10 @@ require 'rubocop/cop/style/parameter_lists'
|
|
108
111
|
require 'rubocop/cop/style/parentheses_around_condition'
|
109
112
|
require 'rubocop/cop/style/perl_backrefs'
|
110
113
|
require 'rubocop/cop/style/proc'
|
114
|
+
require 'rubocop/cop/style/raise_args'
|
111
115
|
require 'rubocop/cop/style/reduce_arguments'
|
112
116
|
require 'rubocop/cop/style/redundant_begin'
|
117
|
+
require 'rubocop/cop/style/redundant_exception'
|
113
118
|
require 'rubocop/cop/style/redundant_return'
|
114
119
|
require 'rubocop/cop/style/redundant_self'
|
115
120
|
require 'rubocop/cop/style/regexp_literal'
|
@@ -133,6 +138,7 @@ require 'rubocop/cop/style/trailing_whitespace'
|
|
133
138
|
require 'rubocop/cop/style/trivial_accessors'
|
134
139
|
require 'rubocop/cop/style/unless_else'
|
135
140
|
require 'rubocop/cop/style/variable_interpolation'
|
141
|
+
require 'rubocop/cop/style/variable_name'
|
136
142
|
require 'rubocop/cop/style/when_then'
|
137
143
|
require 'rubocop/cop/style/while_until_do'
|
138
144
|
require 'rubocop/cop/style/word_array'
|
@@ -159,4 +165,5 @@ require 'rubocop/token'
|
|
159
165
|
require 'rubocop/processed_source'
|
160
166
|
require 'rubocop/source_parser'
|
161
167
|
require 'rubocop/cli'
|
168
|
+
require 'rubocop/options'
|
162
169
|
require 'rubocop/version'
|
data/lib/rubocop/cli.rb
CHANGED
@@ -1,17 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require 'pathname'
|
3
|
-
require 'optparse'
|
4
2
|
|
5
3
|
module Rubocop
|
6
4
|
# The CLI is a class responsible of handling all the command line interface
|
7
5
|
# logic.
|
8
6
|
class CLI
|
9
|
-
DEFAULT_FORMATTER = 'progress'
|
10
|
-
|
11
7
|
# If set true while running,
|
12
8
|
# RuboCop will abort processing and exit gracefully.
|
13
9
|
attr_accessor :wants_to_quit
|
14
|
-
|
10
|
+
attr_reader :options
|
15
11
|
|
16
12
|
alias_method :wants_to_quit?, :wants_to_quit
|
17
13
|
|
@@ -28,11 +24,10 @@ module Rubocop
|
|
28
24
|
def run(args = ARGV)
|
29
25
|
trap_interrupt
|
30
26
|
|
31
|
-
|
27
|
+
@options, target_files = Options.new(@config_store).parse(args)
|
32
28
|
|
33
29
|
Config.debug = @options[:debug]
|
34
30
|
|
35
|
-
target_files = target_finder.find(args)
|
36
31
|
target_files.each(&:freeze).freeze
|
37
32
|
inspected_files = []
|
38
33
|
any_failed = false
|
@@ -63,15 +58,16 @@ module Rubocop
|
|
63
58
|
return 1
|
64
59
|
end
|
65
60
|
|
66
|
-
def mobilized_cop_classes
|
67
|
-
@mobilized_cop_classes ||=
|
61
|
+
def mobilized_cop_classes(config)
|
62
|
+
@mobilized_cop_classes ||= {}
|
63
|
+
@mobilized_cop_classes[config.object_id] ||= begin
|
68
64
|
cop_classes = Cop::Cop.all
|
69
65
|
|
70
66
|
if @options[:only]
|
71
67
|
cop_classes.select! { |c| c.cop_name == @options[:only] }
|
72
68
|
else
|
73
69
|
# filter out Rails cops unless requested
|
74
|
-
cop_classes.reject!(&:rails?) unless
|
70
|
+
cop_classes.reject!(&:rails?) unless run_rails_cops?(config)
|
75
71
|
|
76
72
|
# filter out style cops when --lint is passed
|
77
73
|
cop_classes.select!(&:lint?) if @options[:lint]
|
@@ -83,161 +79,12 @@ module Rubocop
|
|
83
79
|
|
84
80
|
def inspect_file(file)
|
85
81
|
config = @config_store.for(file)
|
86
|
-
team = Cop::Team.new(mobilized_cop_classes, config, @options)
|
82
|
+
team = Cop::Team.new(mobilized_cop_classes(config), config, @options)
|
87
83
|
offences = team.inspect_file(file)
|
88
84
|
@errors.concat(team.errors)
|
89
85
|
offences
|
90
86
|
end
|
91
87
|
|
92
|
-
def validate_only_option
|
93
|
-
if Cop::Cop.all.none? { |c| c.cop_name == @options[:only] }
|
94
|
-
fail ArgumentError, "Unrecognized cop name: #{@options[:only]}."
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def validate_auto_gen_config_option(args)
|
99
|
-
if args.any?
|
100
|
-
fail ArgumentError,
|
101
|
-
'--auto-gen-config can not be combined with any other arguments.'
|
102
|
-
end
|
103
|
-
|
104
|
-
target_finder.find(args).each do |file|
|
105
|
-
config = @config_store.for(file)
|
106
|
-
if @options[:auto_gen_config] && config.contains_auto_generated_config
|
107
|
-
fail "Remove #{Config::AUTO_GENERATED_FILE} from the current " +
|
108
|
-
'configuration before generating it again.'
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
def print_available_cops
|
114
|
-
cops = Cop::Cop.all
|
115
|
-
puts "Available cops (#{cops.length}) + config for #{Dir.pwd.to_s}: "
|
116
|
-
dirconf = @config_store.for(Dir.pwd.to_s)
|
117
|
-
cops.types.sort!.each do |type|
|
118
|
-
coptypes = cops.with_type(type).sort_by!(&:cop_name)
|
119
|
-
puts "Type '#{type.to_s.capitalize}' (#{coptypes.size}):"
|
120
|
-
coptypes.each do |cop|
|
121
|
-
puts " - #{cop.cop_name}"
|
122
|
-
cnf = dirconf.for_cop(cop).dup
|
123
|
-
print_conf_option('Description',
|
124
|
-
cnf.delete('Description') { 'None' })
|
125
|
-
cnf.each { |k, v| print_conf_option(k, v) }
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
def print_conf_option(option, value)
|
131
|
-
puts " - #{option}: #{value}"
|
132
|
-
end
|
133
|
-
|
134
|
-
# rubocop:disable MethodLength
|
135
|
-
def parse_options(args)
|
136
|
-
ignore_dropped_options(args)
|
137
|
-
convert_deprecated_options(args)
|
138
|
-
|
139
|
-
OptionParser.new do |opts|
|
140
|
-
opts.banner = 'Usage: rubocop [options] [file1, file2, ...]'
|
141
|
-
|
142
|
-
opts.on('-d', '--debug', 'Display debug info.') do |d|
|
143
|
-
@options[:debug] = d
|
144
|
-
end
|
145
|
-
opts.on('-c', '--config FILE', 'Specify configuration file.') do |f|
|
146
|
-
@options[:config] = f
|
147
|
-
@config_store.set_options_config(@options[:config])
|
148
|
-
end
|
149
|
-
opts.on('--only COP', 'Run just one cop.') do |s|
|
150
|
-
@options[:only] = s
|
151
|
-
validate_only_option
|
152
|
-
end
|
153
|
-
opts.on('--auto-gen-config',
|
154
|
-
'Generate a configuration file acting as a',
|
155
|
-
'TODO list.') do
|
156
|
-
@options[:auto_gen_config] = true
|
157
|
-
@options[:formatters] = [
|
158
|
-
[DEFAULT_FORMATTER],
|
159
|
-
[Formatter::DisabledConfigFormatter, Config::AUTO_GENERATED_FILE]
|
160
|
-
]
|
161
|
-
validate_auto_gen_config_option(args)
|
162
|
-
end
|
163
|
-
opts.on('--show-cops',
|
164
|
-
'Shows cops and their config for the',
|
165
|
-
'current directory.') do
|
166
|
-
print_available_cops
|
167
|
-
exit(0)
|
168
|
-
end
|
169
|
-
opts.on('-f', '--format FORMATTER',
|
170
|
-
'Choose an output formatter. This option',
|
171
|
-
'can be specified multiple times to enable',
|
172
|
-
'multiple formatters at the same time.',
|
173
|
-
' [p]rogress (default)',
|
174
|
-
' [s]imple',
|
175
|
-
' [c]lang',
|
176
|
-
' [e]macs',
|
177
|
-
' [j]son',
|
178
|
-
' [f]iles',
|
179
|
-
' [o]ffences',
|
180
|
-
' custom formatter class name') do |key|
|
181
|
-
@options[:formatters] ||= []
|
182
|
-
@options[:formatters] << [key]
|
183
|
-
end
|
184
|
-
opts.on('-o', '--out FILE',
|
185
|
-
'Write output to a file instead of STDOUT.',
|
186
|
-
'This option applies to the previously',
|
187
|
-
'specified --format, or the default format',
|
188
|
-
'if no format is specified.') do |path|
|
189
|
-
@options[:formatters] ||= [[DEFAULT_FORMATTER]]
|
190
|
-
@options[:formatters].last << path
|
191
|
-
end
|
192
|
-
opts.on('-r', '--require FILE', 'Require Ruby file.') do |f|
|
193
|
-
require f
|
194
|
-
end
|
195
|
-
opts.on('-R', '--rails', 'Run extra Rails cops.') do |r|
|
196
|
-
@options[:rails] = r
|
197
|
-
end
|
198
|
-
opts.on('-l', '--lint', 'Run only lint cops.') do |l|
|
199
|
-
@options[:lint] = l
|
200
|
-
end
|
201
|
-
opts.on('-a', '--auto-correct', 'Auto-correct offences.') do |a|
|
202
|
-
@options[:autocorrect] = a
|
203
|
-
end
|
204
|
-
opts.on('-n', '--no-color', 'Disable color output.') do |s|
|
205
|
-
Sickill::Rainbow.enabled = false
|
206
|
-
end
|
207
|
-
opts.on('-v', '--version', 'Display version.') do
|
208
|
-
puts Rubocop::Version.version(false)
|
209
|
-
exit(0)
|
210
|
-
end
|
211
|
-
opts.on('-V', '--verbose-version', 'Display verbose version.') do
|
212
|
-
puts Rubocop::Version.version(true)
|
213
|
-
exit(0)
|
214
|
-
end
|
215
|
-
end.parse!(args)
|
216
|
-
end
|
217
|
-
# rubocop:enable MethodLength
|
218
|
-
|
219
|
-
def ignore_dropped_options(args)
|
220
|
-
# Currently we don't make -s/--silent option raise error
|
221
|
-
# since those are mostly used by external tools.
|
222
|
-
rejected = args.reject! { |a| %w(-s --silent).include?(a) }
|
223
|
-
if rejected
|
224
|
-
warn '-s/--silent options is dropped. ' +
|
225
|
-
'`emacs` and `files` formatters no longer display summary.'
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
def convert_deprecated_options(args)
|
230
|
-
args.map! do |arg|
|
231
|
-
case arg
|
232
|
-
when '-e', '--emacs'
|
233
|
-
deprecate("#{arg} option", '--format emacs', '1.0.0')
|
234
|
-
%w(--format emacs)
|
235
|
-
else
|
236
|
-
arg
|
237
|
-
end
|
238
|
-
end.flatten!
|
239
|
-
end
|
240
|
-
|
241
88
|
def trap_interrupt
|
242
89
|
Signal.trap('INT') do
|
243
90
|
exit!(1) if wants_to_quit?
|
@@ -260,14 +107,14 @@ module Rubocop
|
|
260
107
|
|
261
108
|
private
|
262
109
|
|
263
|
-
def
|
264
|
-
@
|
110
|
+
def run_rails_cops?(config)
|
111
|
+
@options[:rails] || config['AllCops']['RunRailsCops']
|
265
112
|
end
|
266
113
|
|
267
114
|
def formatter_set
|
268
115
|
@formatter_set ||= begin
|
269
116
|
set = Formatter::FormatterSet.new
|
270
|
-
pairs = @options[:formatters] || [[DEFAULT_FORMATTER]]
|
117
|
+
pairs = @options[:formatters] || [[Options::DEFAULT_FORMATTER]]
|
271
118
|
pairs.each do |formatter_key, output_path|
|
272
119
|
set.add_formatter(formatter_key, output_path)
|
273
120
|
end
|
@@ -277,13 +124,5 @@ module Rubocop
|
|
277
124
|
exit(1)
|
278
125
|
end
|
279
126
|
end
|
280
|
-
|
281
|
-
def deprecate(subject, alternative = nil, version = nil)
|
282
|
-
message = "#{subject} is deprecated"
|
283
|
-
message << " and will be removed in RuboCop #{version}" if version
|
284
|
-
message << '.'
|
285
|
-
message << " Please use #{alternative} instead." if alternative
|
286
|
-
warn message
|
287
|
-
end
|
288
127
|
end
|
289
128
|
end
|
data/lib/rubocop/cop/cop.rb
CHANGED
@@ -93,29 +93,32 @@ module Rubocop
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def autocorrect?
|
96
|
-
@options[:autocorrect]
|
96
|
+
@options[:autocorrect] && support_autocorrect?
|
97
97
|
end
|
98
98
|
|
99
99
|
def debug?
|
100
100
|
@options[:debug]
|
101
101
|
end
|
102
102
|
|
103
|
-
def autocorrect_action(node)
|
104
|
-
end
|
105
|
-
|
106
103
|
def message(node = nil)
|
107
104
|
self.class::MSG
|
108
105
|
end
|
109
106
|
|
107
|
+
def support_autocorrect?
|
108
|
+
respond_to?(:autocorrect, true)
|
109
|
+
end
|
110
|
+
|
110
111
|
def add_offence(severity, node, loc, message = nil)
|
111
112
|
location = loc.is_a?(Symbol) ? node.loc.send(loc) : loc
|
112
113
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
114
|
+
return if disabled_line?(location.line)
|
115
|
+
|
116
|
+
message = message ? message : message(node)
|
117
|
+
message = debug? ? "#{name}: #{message}" : message
|
118
|
+
@offences <<
|
119
|
+
Offence.new(severity, location, message, name, autocorrect?)
|
120
|
+
|
121
|
+
autocorrect(node) if autocorrect?
|
119
122
|
end
|
120
123
|
|
121
124
|
def convention(node, location, message = nil)
|
@@ -158,7 +161,7 @@ module Rubocop
|
|
158
161
|
end
|
159
162
|
|
160
163
|
def ignored_node?(node)
|
161
|
-
@ignored_nodes.
|
164
|
+
@ignored_nodes.any? { |n| n.eql?(node) } # Same object found in array?
|
162
165
|
end
|
163
166
|
|
164
167
|
def on_node(syms, sexp, excludes = [])
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Cop
|
5
|
+
module Lint
|
6
|
+
# This cop checks for calls to debugger or pry.
|
7
|
+
class Debugger < Cop
|
8
|
+
MSG = 'Remove calls to debugger.'
|
9
|
+
|
10
|
+
# debugger call node
|
11
|
+
#
|
12
|
+
# (send nil :debugger)
|
13
|
+
DEBUGGER_NODE = s(:send, nil, :debugger)
|
14
|
+
|
15
|
+
# binding.pry node
|
16
|
+
#
|
17
|
+
# (send
|
18
|
+
# (send nil :binding) :pry)
|
19
|
+
PRY_NODE = s(:send, s(:send, nil, :binding), :pry)
|
20
|
+
|
21
|
+
# binding.remote_pry node
|
22
|
+
#
|
23
|
+
# (send
|
24
|
+
# (send nil :binding) :remote_pry)
|
25
|
+
REMOTE_PRY_NODE = s(:send, s(:send, nil, :binding), :remote_pry)
|
26
|
+
|
27
|
+
DEBUGGER_NODES = [DEBUGGER_NODE, PRY_NODE, REMOTE_PRY_NODE]
|
28
|
+
|
29
|
+
def on_send(node)
|
30
|
+
warning(node, :selector) if DEBUGGER_NODES.include?(node)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Rubocop
|
4
|
+
module Cop
|
5
|
+
module Lint
|
6
|
+
# This cop actually inspects nothing, just repacks Parser's diagnostics
|
7
|
+
# into RuboCop's offences.
|
8
|
+
# The purpose of this cop is to support disabling Syntax offences with
|
9
|
+
# config or inline comments by conforming to the cop framework.
|
10
|
+
class Syntax < Cop
|
11
|
+
def self.offences_from_diagnostics(diagnostics)
|
12
|
+
diagnostics.map do |diagnostic|
|
13
|
+
offence_from_diagnostic(diagnostic)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.offence_from_diagnostic(diagnostic)
|
18
|
+
Offence.new(
|
19
|
+
diagnostic.level,
|
20
|
+
diagnostic.location,
|
21
|
+
diagnostic.message,
|
22
|
+
cop_name
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def investigate(processed_source)
|
27
|
+
processed_source.diagnostics.each do |d|
|
28
|
+
add_offence(d.level, nil, d.location, d.message)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/rubocop/cop/offence.rb
CHANGED
@@ -9,15 +9,6 @@ module Rubocop
|
|
9
9
|
# @api private
|
10
10
|
SEVERITIES = [:refactor, :convention, :warning, :error, :fatal]
|
11
11
|
|
12
|
-
def self.from_diagnostic(diagnostic)
|
13
|
-
new(
|
14
|
-
diagnostic.level,
|
15
|
-
diagnostic.location,
|
16
|
-
diagnostic.message,
|
17
|
-
'Syntax'
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
12
|
# @api public
|
22
13
|
#
|
23
14
|
# @!attribute [r] severity
|
@@ -61,6 +52,15 @@ module Rubocop
|
|
61
52
|
# 'LineLength'
|
62
53
|
attr_reader :cop_name
|
63
54
|
|
55
|
+
# @api public
|
56
|
+
#
|
57
|
+
# @!attribute [r] corrected
|
58
|
+
#
|
59
|
+
# @return [Boolean]
|
60
|
+
# whether this offence is automatically corrected.
|
61
|
+
attr_reader :corrected
|
62
|
+
alias_method :corrected?, :corrected
|
63
|
+
|
64
64
|
# @api private
|
65
65
|
attr_reader :line
|
66
66
|
|
@@ -68,7 +68,7 @@ module Rubocop
|
|
68
68
|
attr_reader :column
|
69
69
|
|
70
70
|
# @api private
|
71
|
-
def initialize(severity, location, message, cop_name)
|
71
|
+
def initialize(severity, location, message, cop_name, corrected = false)
|
72
72
|
unless SEVERITIES.include?(severity)
|
73
73
|
fail ArgumentError, "Unknown severity: #{severity}"
|
74
74
|
end
|
@@ -78,30 +78,22 @@ module Rubocop
|
|
78
78
|
@column = location.column.freeze
|
79
79
|
@message = message.freeze
|
80
80
|
@cop_name = cop_name.freeze
|
81
|
+
@corrected = corrected.freeze
|
81
82
|
freeze
|
82
83
|
end
|
83
84
|
|
84
85
|
# @api private
|
86
|
+
# This is just for debugging purpose.
|
85
87
|
def to_s
|
86
|
-
sprintf(
|
87
|
-
line, real_column, message)
|
88
|
+
sprintf('%s:%3d:%3d: %s',
|
89
|
+
severity_code, line, real_column, message)
|
88
90
|
end
|
89
91
|
|
90
92
|
# @api private
|
91
|
-
def
|
93
|
+
def severity_code
|
92
94
|
@severity.to_s[0].upcase
|
93
95
|
end
|
94
96
|
|
95
|
-
# @api private
|
96
|
-
def clang_severity
|
97
|
-
case @severity
|
98
|
-
when :fatal then 'F'.color(:red)
|
99
|
-
when :error then 'E'.color(:red)
|
100
|
-
when :warning then 'W'.color(:magenta)
|
101
|
-
when :convention then 'C'.color(:yellow)
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
97
|
# @api private
|
106
98
|
def severity_level
|
107
99
|
SEVERITIES.index(severity) + 1
|