rubocop 0.59.2 → 0.60.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +3 -2
- data/config/default.yml +2960 -552
- data/lib/rubocop.rb +1 -0
- data/lib/rubocop/ast/builder.rb +29 -29
- data/lib/rubocop/ast/node.rb +29 -25
- data/lib/rubocop/ast/node/args_node.rb +1 -1
- data/lib/rubocop/ast/node/mixin/binary_operator_node.rb +1 -1
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +26 -0
- data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +5 -1
- data/lib/rubocop/ast/node/pair_node.rb +8 -1
- data/lib/rubocop/ast/node/str_node.rb +1 -1
- data/lib/rubocop/cached_data.rb +2 -2
- data/lib/rubocop/config.rb +1 -1
- data/lib/rubocop/config_loader.rb +8 -0
- data/lib/rubocop/cop/autocorrect_logic.rb +7 -1
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -1
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -1
- data/lib/rubocop/cop/generator.rb +10 -3
- data/lib/rubocop/cop/generator/require_file_injector.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
- data/lib/rubocop/cop/layout/align_hash.rb +9 -1
- data/lib/rubocop/cop/layout/block_end_newline.rb +2 -4
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +7 -7
- data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/dot_position.rb +2 -2
- data/lib/rubocop/cop/layout/else_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +1 -2
- data/lib/rubocop/cop/layout/empty_lines.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +25 -25
- data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +1 -1
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/indent_hash.rb +1 -1
- data/lib/rubocop/cop/layout/indent_heredoc.rb +2 -2
- data/lib/rubocop/cop/layout/indentation_consistency.rb +1 -1
- data/lib/rubocop/cop/layout/indentation_width.rb +1 -1
- data/lib/rubocop/cop/layout/initial_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +84 -43
- data/lib/rubocop/cop/layout/space_after_method_name.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_keyword.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_operators.rb +3 -2
- data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +2 -2
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +5 -5
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +10 -20
- data/lib/rubocop/cop/lint/ensure_return.rb +3 -0
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -3
- data/lib/rubocop/cop/lint/literal_as_condition.rb +1 -1
- data/lib/rubocop/cop/lint/percent_string_array.rb +2 -2
- data/lib/rubocop/cop/lint/percent_symbol_array.rb +10 -7
- data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +3 -4
- data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -2
- data/lib/rubocop/cop/lint/syntax.rb +3 -2
- data/lib/rubocop/cop/lint/uri_escape_unescape.rb +3 -3
- data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -7
- data/lib/rubocop/cop/metrics/abc_size.rb +1 -17
- data/lib/rubocop/cop/metrics/line_length.rb +14 -10
- data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +45 -0
- data/lib/rubocop/cop/mixin/check_assignment.rb +12 -6
- data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +1 -1
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +0 -2
- data/lib/rubocop/cop/mixin/configurable_max.rb +4 -2
- data/lib/rubocop/cop/mixin/configurable_naming.rb +1 -1
- data/lib/rubocop/cop/mixin/configurable_numbering.rb +2 -2
- data/lib/rubocop/cop/mixin/hash_alignment.rb +32 -5
- data/lib/rubocop/cop/mixin/heredoc.rb +1 -1
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +3 -4
- data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +4 -0
- data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -1
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/naming/constant_name.rb +1 -1
- data/lib/rubocop/cop/naming/file_name.rb +1 -1
- data/lib/rubocop/cop/naming/method_name.rb +2 -0
- data/lib/rubocop/cop/naming/variable_number.rb +1 -1
- data/lib/rubocop/cop/offense.rb +1 -1
- data/lib/rubocop/cop/performance/regexp_match.rb +1 -1
- data/lib/rubocop/cop/performance/sample.rb +3 -2
- data/lib/rubocop/cop/performance/start_with.rb +1 -1
- data/lib/rubocop/cop/performance/string_replacement.rb +1 -1
- data/lib/rubocop/cop/rails/date.rb +8 -8
- data/lib/rubocop/cop/rails/dynamic_find_by.rb +1 -1
- data/lib/rubocop/cop/rails/exit.rb +8 -9
- data/lib/rubocop/cop/rails/output_safety.rb +3 -3
- data/lib/rubocop/cop/rails/read_write_attribute.rb +5 -4
- data/lib/rubocop/cop/rails/refute_methods.rb +13 -13
- data/lib/rubocop/cop/rails/reversible_migration.rb +2 -1
- data/lib/rubocop/cop/rails/skips_model_validations.rb +17 -0
- data/lib/rubocop/cop/registry.rb +11 -2
- data/lib/rubocop/cop/style/and_or.rb +3 -3
- data/lib/rubocop/cop/style/collection_methods.rb +26 -0
- data/lib/rubocop/cop/style/empty_literal.rb +1 -1
- data/lib/rubocop/cop/style/encoding.rb +1 -1
- data/lib/rubocop/cop/style/even_odd.rb +2 -2
- data/lib/rubocop/cop/style/for.rb +3 -3
- data/lib/rubocop/cop/style/global_vars.rb +1 -1
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -1
- data/lib/rubocop/cop/style/if_unless_modifier.rb +1 -13
- data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +1 -1
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +4 -7
- data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +1 -1
- data/lib/rubocop/cop/style/multiline_if_then.rb +1 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +15 -1
- data/lib/rubocop/cop/style/nested_modifier.rb +1 -1
- data/lib/rubocop/cop/style/not.rb +2 -1
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +6 -6
- data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +1 -1
- data/lib/rubocop/cop/style/one_line_conditional.rb +2 -2
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -1
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/redundant_freeze.rb +10 -0
- data/lib/rubocop/cop/style/redundant_parentheses.rb +6 -2
- data/lib/rubocop/cop/style/redundant_self.rb +1 -1
- data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
- data/lib/rubocop/cop/style/stderr_puts.rb +1 -1
- data/lib/rubocop/cop/style/ternary_parentheses.rb +4 -3
- data/lib/rubocop/cop/style/unneeded_condition.rb +2 -2
- data/lib/rubocop/cop/style/unneeded_percent_q.rb +2 -2
- data/lib/rubocop/cop/style/unpack_first.rb +1 -1
- data/lib/rubocop/cop/team.rb +3 -2
- data/lib/rubocop/cop/util.rb +2 -22
- data/lib/rubocop/cop/variable_force/scope.rb +3 -3
- data/lib/rubocop/cop/variable_force/variable.rb +3 -4
- data/lib/rubocop/cop/variable_force/variable_table.rb +2 -2
- data/lib/rubocop/formatter/base_formatter.rb +3 -3
- data/lib/rubocop/formatter/disabled_config_formatter.rb +16 -1
- data/lib/rubocop/formatter/formatter_set.rb +14 -14
- data/lib/rubocop/formatter/html_formatter.rb +4 -4
- data/lib/rubocop/formatter/json_formatter.rb +13 -13
- data/lib/rubocop/formatter/simple_text_formatter.rb +4 -4
- data/lib/rubocop/magic_comment.rb +4 -4
- data/lib/rubocop/node_pattern.rb +17 -17
- data/lib/rubocop/options.rb +93 -82
- data/lib/rubocop/result_cache.rb +9 -1
- data/lib/rubocop/rspec/expect_offense.rb +2 -2
- data/lib/rubocop/rspec/shared_contexts.rb +11 -11
- data/lib/rubocop/rspec/shared_examples.rb +4 -4
- data/lib/rubocop/string_interpreter.rb +1 -1
- data/lib/rubocop/version.rb +1 -1
- metadata +6 -13
- data/config/disabled.yml +0 -161
- data/config/enabled.yml +0 -2092
data/lib/rubocop/node_pattern.rb
CHANGED
@@ -96,27 +96,27 @@ module RuboCop
|
|
96
96
|
# @private
|
97
97
|
# Builds Ruby code which implements a pattern
|
98
98
|
class Compiler
|
99
|
-
SYMBOL = %r{:(?:[\w+@*/?!<>=~|%^-]+|\[\]=?)}
|
100
|
-
IDENTIFIER = /[a-zA-Z_-]
|
101
|
-
META = /\(|\)|\{|\}|\[|\]
|
102
|
-
NUMBER = /-?\d+(?:\.\d+)
|
103
|
-
STRING = /".+?"
|
104
|
-
METHOD_NAME = /\#?#{IDENTIFIER}+[\!\?]?\(
|
105
|
-
PARAM_NUMBER = /%\d
|
106
|
-
|
107
|
-
SEPARATORS = /[\s]
|
99
|
+
SYMBOL = %r{:(?:[\w+@*/?!<>=~|%^-]+|\[\]=?)}.freeze
|
100
|
+
IDENTIFIER = /[a-zA-Z_-]/.freeze
|
101
|
+
META = /\(|\)|\{|\}|\[|\]|\$\.\.\.|\$|!|\^|\.\.\./.freeze
|
102
|
+
NUMBER = /-?\d+(?:\.\d+)?/.freeze
|
103
|
+
STRING = /".+?"/.freeze
|
104
|
+
METHOD_NAME = /\#?#{IDENTIFIER}+[\!\?]?\(?/.freeze
|
105
|
+
PARAM_NUMBER = /%\d*/.freeze
|
106
|
+
|
107
|
+
SEPARATORS = /[\s]+/.freeze
|
108
108
|
TOKENS = Regexp.union(META, PARAM_NUMBER, NUMBER,
|
109
109
|
METHOD_NAME, SYMBOL, STRING)
|
110
110
|
|
111
|
-
TOKEN = /\G(?:#{SEPARATORS}|#{TOKENS}|.)
|
111
|
+
TOKEN = /\G(?:#{SEPARATORS}|#{TOKENS}|.)/.freeze
|
112
112
|
|
113
|
-
NODE = /\A#{IDENTIFIER}+\Z
|
114
|
-
PREDICATE = /\A#{IDENTIFIER}+\?\(?\Z
|
115
|
-
WILDCARD = /\A_#{IDENTIFIER}*\Z
|
116
|
-
FUNCALL = /\A\##{METHOD_NAME}
|
117
|
-
LITERAL = /\A(?:#{SYMBOL}|#{NUMBER}|#{STRING})\Z
|
118
|
-
PARAM = /\A#{PARAM_NUMBER}\Z
|
119
|
-
CLOSING = /\A(?:\)|\}|\])\Z
|
113
|
+
NODE = /\A#{IDENTIFIER}+\Z/.freeze
|
114
|
+
PREDICATE = /\A#{IDENTIFIER}+\?\(?\Z/.freeze
|
115
|
+
WILDCARD = /\A_#{IDENTIFIER}*\Z/.freeze
|
116
|
+
FUNCALL = /\A\##{METHOD_NAME}/.freeze
|
117
|
+
LITERAL = /\A(?:#{SYMBOL}|#{NUMBER}|#{STRING})\Z/.freeze
|
118
|
+
PARAM = /\A#{PARAM_NUMBER}\Z/.freeze
|
119
|
+
CLOSING = /\A(?:\)|\}|\])\Z/.freeze
|
120
120
|
|
121
121
|
attr_reader :match_code
|
122
122
|
|
data/lib/rubocop/options.rb
CHANGED
@@ -94,22 +94,24 @@ module RuboCop
|
|
94
94
|
|
95
95
|
def add_configuration_options(opts)
|
96
96
|
option(opts, '-c', '--config FILE')
|
97
|
+
option(opts, '--force-exclusion')
|
98
|
+
option(opts, '--ignore-parent-exclusion')
|
99
|
+
option(opts, '--force-default-config')
|
100
|
+
add_auto_gen_options(opts)
|
101
|
+
end
|
97
102
|
|
103
|
+
def add_auto_gen_options(opts)
|
98
104
|
option(opts, '--auto-gen-config')
|
99
105
|
|
100
106
|
option(opts, '--exclude-limit COUNT') do
|
101
107
|
@validator.validate_exclude_limit_option
|
102
108
|
end
|
103
109
|
|
104
|
-
option(opts, '--force-exclusion')
|
105
|
-
option(opts, '--ignore-parent-exclusion')
|
106
|
-
|
107
|
-
option(opts, '--force-default-config')
|
108
|
-
|
109
110
|
option(opts, '--no-offense-counts') do
|
110
111
|
@options[:no_offense_counts] = true
|
111
112
|
end
|
112
113
|
|
114
|
+
option(opts, '--auto-gen-only-exclude')
|
113
115
|
option(opts, '--no-auto-gen-timestamp') do
|
114
116
|
@options[:no_auto_gen_timestamp] = true
|
115
117
|
end
|
@@ -156,6 +158,8 @@ module RuboCop
|
|
156
158
|
option(opts, '-R', '--rails')
|
157
159
|
option(opts, '-a', '--auto-correct')
|
158
160
|
|
161
|
+
option(opts, '--safe')
|
162
|
+
|
159
163
|
option(opts, '--[no-]color')
|
160
164
|
|
161
165
|
option(opts, '-v', '--version')
|
@@ -173,6 +177,9 @@ module RuboCop
|
|
173
177
|
@options[:only] << 'Layout'
|
174
178
|
@options[:auto_correct] = true
|
175
179
|
end
|
180
|
+
option(opts, '--safe-auto-correct') do
|
181
|
+
@options[:auto_correct] = true
|
182
|
+
end
|
176
183
|
end
|
177
184
|
|
178
185
|
def add_list_options(opts)
|
@@ -272,7 +279,8 @@ module RuboCop
|
|
272
279
|
|
273
280
|
message = '--%<flag>s can only be used together with --auto-gen-config.'
|
274
281
|
|
275
|
-
%i[exclude_limit no_offense_counts no_auto_gen_timestamp
|
282
|
+
%i[exclude_limit no_offense_counts no_auto_gen_timestamp
|
283
|
+
auto_gen_only_exclude].each do |option|
|
276
284
|
if @options.key?(option)
|
277
285
|
raise OptionArgumentError,
|
278
286
|
format(message, flag: option.to_s.tr('_', '-'))
|
@@ -342,84 +350,87 @@ module RuboCop
|
|
342
350
|
module OptionsHelp
|
343
351
|
MAX_EXCL = RuboCop::Options::DEFAULT_MAXIMUM_EXCLUSION_ITEMS.to_s
|
344
352
|
TEXT = {
|
345
|
-
only:
|
346
|
-
only_guide_cops:
|
347
|
-
|
348
|
-
except:
|
349
|
-
require:
|
350
|
-
config:
|
351
|
-
auto_gen_config:
|
352
|
-
|
353
|
-
no_offense_counts:
|
354
|
-
|
355
|
-
no_auto_gen_timestamp:
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
353
|
+
only: 'Run only the given cop(s).',
|
354
|
+
only_guide_cops: ['Run only cops for rules that link to a',
|
355
|
+
'style guide.'],
|
356
|
+
except: 'Disable the given cop(s).',
|
357
|
+
require: 'Require Ruby file.',
|
358
|
+
config: 'Specify configuration file.',
|
359
|
+
auto_gen_config: ['Generate a configuration file acting as a',
|
360
|
+
'TODO list.'],
|
361
|
+
no_offense_counts: ['Do not include offense counts in configuration',
|
362
|
+
'file generated by --auto-gen-config.'],
|
363
|
+
no_auto_gen_timestamp: ['Do not include the date and time when',
|
364
|
+
'the --auto-gen-config was run in the file it',
|
365
|
+
'generates.'],
|
366
|
+
auto_gen_only_exclude: ['Generate only Exclude parameters and not Max',
|
367
|
+
'when running --auto-gen-config, except if the',
|
368
|
+
'number of files with offenses is bigger than',
|
369
|
+
'exclude-limit.'],
|
370
|
+
exclude_limit: ['Used together with --auto-gen-config to',
|
371
|
+
'set the limit for how many Exclude',
|
372
|
+
"properties to generate. Default is #{MAX_EXCL}."],
|
373
|
+
force_exclusion: ['Force excluding files specified in the',
|
374
|
+
'configuration `Exclude` even if they are',
|
375
|
+
'explicitly passed as arguments.'],
|
376
|
+
ignore_parent_exclusion: ['Prevent from inheriting AllCops/Exclude from',
|
377
|
+
'parent folders.'],
|
368
378
|
force_default_config: ['Use default configuration even if configuration',
|
369
379
|
'files are present in the directory tree.'],
|
370
|
-
format:
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
out:
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
fail_level:
|
393
|
-
|
394
|
-
display_only_fail_level_offenses:
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
list_target_files:
|
414
|
-
auto_correct:
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
380
|
+
format: ['Choose an output formatter. This option',
|
381
|
+
'can be specified multiple times to enable',
|
382
|
+
'multiple formatters at the same time.',
|
383
|
+
' [p]rogress (default)',
|
384
|
+
' [s]imple',
|
385
|
+
' [c]lang',
|
386
|
+
' [d]isabled cops via inline comments',
|
387
|
+
' [fu]ubar',
|
388
|
+
' [e]macs',
|
389
|
+
' [j]son',
|
390
|
+
' [h]tml',
|
391
|
+
' [fi]les',
|
392
|
+
' [o]ffenses',
|
393
|
+
' [w]orst',
|
394
|
+
' [t]ap',
|
395
|
+
' [q]uiet',
|
396
|
+
' [a]utogenconf',
|
397
|
+
' custom formatter class name'],
|
398
|
+
out: ['Write output to a file instead of STDOUT.',
|
399
|
+
'This option applies to the previously',
|
400
|
+
'specified --format, or the default format',
|
401
|
+
'if no format is specified.'],
|
402
|
+
fail_level: ['Minimum severity (A/R/C/W/E/F) for exit',
|
403
|
+
'with error code.'],
|
404
|
+
display_only_fail_level_offenses: ['Only output offense messages at',
|
405
|
+
'the specified --fail-level or above'],
|
406
|
+
show_cops: ['Shows the given cops, or all cops by',
|
407
|
+
'default, and their configurations for the',
|
408
|
+
'current directory.'],
|
409
|
+
fail_fast: ['Inspect files in order of modification',
|
410
|
+
'time and stop after the first file',
|
411
|
+
'containing offenses.'],
|
412
|
+
cache: ["Use result caching (FLAG=true) or don't",
|
413
|
+
'(FLAG=false), default determined by',
|
414
|
+
'configuration parameter AllCops: UseCache.'],
|
415
|
+
debug: 'Display debug info.',
|
416
|
+
display_cop_names: ['Display cop names in offense messages.',
|
417
|
+
'Default is true.'],
|
418
|
+
display_style_guide: 'Display style guide URLs in offense messages.',
|
419
|
+
extra_details: 'Display extra details in offense messages.',
|
420
|
+
rails: 'Run extra Rails cops.',
|
421
|
+
lint: 'Run only lint cops.',
|
422
|
+
safe: 'Run only safe cops.',
|
423
|
+
list_target_files: 'List all files RuboCop will inspect.',
|
424
|
+
auto_correct: 'Auto-correct offenses.',
|
425
|
+
safe_auto_correct: 'Run auto-correct only when it\'s safe.',
|
426
|
+
fix_layout: 'Run only layout cops, with auto-correct on.',
|
427
|
+
color: 'Force color output on or off.',
|
428
|
+
version: 'Display version.',
|
429
|
+
verbose_version: 'Display verbose version.',
|
430
|
+
parallel: ['Use available CPUs to execute inspection in',
|
431
|
+
'parallel.'],
|
432
|
+
stdin: ['Pipe source from STDIN, using FILE in offense',
|
433
|
+
'reports. This is useful for editor integration.']
|
423
434
|
}.freeze
|
424
435
|
end
|
425
436
|
end
|
data/lib/rubocop/result_cache.rb
CHANGED
@@ -97,7 +97,15 @@ module RuboCop
|
|
97
97
|
|
98
98
|
def save(offenses)
|
99
99
|
dir = File.dirname(@path)
|
100
|
-
|
100
|
+
|
101
|
+
begin
|
102
|
+
FileUtils.mkdir_p(dir)
|
103
|
+
rescue Errno::EACCES => e
|
104
|
+
warn "Couldn't create cache directory. Continuing without cache."\
|
105
|
+
"\n #{e.message}"
|
106
|
+
return
|
107
|
+
end
|
108
|
+
|
101
109
|
preliminary_path = "#{@path}_#{rand(1_000_000_000)}"
|
102
110
|
# RuboCop must be in control of where its cached data is stored. A
|
103
111
|
# symbolic link anywhere in the cache directory tree can be an
|
@@ -5,7 +5,7 @@ module RuboCop
|
|
5
5
|
# Mixin for `expect_offense` and `expect_no_offenses`
|
6
6
|
#
|
7
7
|
# This mixin makes it easier to specify strict offense expectations
|
8
|
-
#
|
8
|
+
# in a declarative and visual fashion. Just type out the code that
|
9
9
|
# should generate a offense, annotate code by writing '^'s
|
10
10
|
# underneath each character that should be highlighted, and follow
|
11
11
|
# the carets with a string (separated by a space) that is the
|
@@ -65,7 +65,7 @@ module RuboCop
|
|
65
65
|
|
66
66
|
# Parsed representation of code annotated with the `^^^ Message` style
|
67
67
|
class AnnotatedSource
|
68
|
-
ANNOTATION_PATTERN = /\A\s*\^+
|
68
|
+
ANNOTATION_PATTERN = /\A\s*\^+ /.freeze
|
69
69
|
|
70
70
|
# @param annotated_source [String] string passed to the matchers
|
71
71
|
#
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'tmpdir'
|
4
4
|
require 'fileutils'
|
5
5
|
|
6
|
-
shared_context 'isolated environment', :isolated_environment do
|
6
|
+
RSpec.shared_context 'isolated environment', :isolated_environment do
|
7
7
|
around do |example|
|
8
8
|
Dir.mktmpdir do |tmpdir|
|
9
9
|
original_home = ENV['HOME']
|
@@ -36,7 +36,7 @@ shared_context 'isolated environment', :isolated_environment do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
# `cop_config` must be declared with #let.
|
39
|
-
shared_context 'config', :config do
|
39
|
+
RSpec.shared_context 'config', :config do
|
40
40
|
let(:config) do
|
41
41
|
# Module#<
|
42
42
|
unless described_class < RuboCop::Cop::Cop
|
@@ -59,38 +59,38 @@ shared_context 'config', :config do
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
shared_context 'ruby 2.2', :ruby22 do
|
62
|
+
RSpec.shared_context 'ruby 2.2', :ruby22 do
|
63
63
|
let(:ruby_version) { 2.2 }
|
64
64
|
end
|
65
65
|
|
66
|
-
shared_context 'ruby 2.3', :ruby23 do
|
66
|
+
RSpec.shared_context 'ruby 2.3', :ruby23 do
|
67
67
|
let(:ruby_version) { 2.3 }
|
68
68
|
end
|
69
69
|
|
70
|
-
shared_context 'ruby 2.4', :ruby24 do
|
70
|
+
RSpec.shared_context 'ruby 2.4', :ruby24 do
|
71
71
|
let(:ruby_version) { 2.4 }
|
72
72
|
end
|
73
73
|
|
74
|
-
shared_context 'ruby 2.5', :ruby25 do
|
74
|
+
RSpec.shared_context 'ruby 2.5', :ruby25 do
|
75
75
|
let(:ruby_version) { 2.5 }
|
76
76
|
end
|
77
77
|
|
78
|
-
shared_context 'ruby 2.6', :ruby26 do
|
78
|
+
RSpec.shared_context 'ruby 2.6', :ruby26 do
|
79
79
|
let(:ruby_version) { 2.6 }
|
80
80
|
end
|
81
81
|
|
82
|
-
shared_context 'with Rails', :enabled_rails do
|
82
|
+
RSpec.shared_context 'with Rails', :enabled_rails do
|
83
83
|
let(:enabled_rails) { true }
|
84
84
|
end
|
85
85
|
|
86
|
-
shared_context 'with Rails 3', :rails3 do
|
86
|
+
RSpec.shared_context 'with Rails 3', :rails3 do
|
87
87
|
let(:rails_version) { 3.0 }
|
88
88
|
end
|
89
89
|
|
90
|
-
shared_context 'with Rails 4', :rails4 do
|
90
|
+
RSpec.shared_context 'with Rails 4', :rails4 do
|
91
91
|
let(:rails_version) { 4.0 }
|
92
92
|
end
|
93
93
|
|
94
|
-
shared_context 'with Rails 5', :rails5 do
|
94
|
+
RSpec.shared_context 'with Rails 5', :rails5 do
|
95
95
|
let(:rails_version) { 5.0 }
|
96
96
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# `cop` and `source` must be declared with #let.
|
4
4
|
|
5
|
-
shared_examples_for 'misaligned' do |annotated_source, used_style|
|
5
|
+
RSpec.shared_examples_for 'misaligned' do |annotated_source, used_style|
|
6
6
|
config_to_allow_offenses = if used_style
|
7
7
|
{ 'EnforcedStyleAlignWith' => used_style.to_s }
|
8
8
|
else
|
@@ -31,7 +31,7 @@ shared_examples_for 'misaligned' do |annotated_source, used_style|
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
shared_examples_for 'aligned' do |alignment_base, arg, end_kw, name|
|
34
|
+
RSpec.shared_examples_for 'aligned' do |alignment_base, arg, end_kw, name|
|
35
35
|
name ||= alignment_base
|
36
36
|
name = name.gsub(/\n/, ' <newline>')
|
37
37
|
it "accepts matching #{name} ... end" do
|
@@ -40,7 +40,7 @@ shared_examples_for 'aligned' do |alignment_base, arg, end_kw, name|
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
shared_examples_for 'debugger' do |name, src|
|
43
|
+
RSpec.shared_examples_for 'debugger' do |name, src|
|
44
44
|
it "reports an offense for a #{name} call" do
|
45
45
|
inspect_source(src)
|
46
46
|
src = [src] if src.is_a? String
|
@@ -51,7 +51,7 @@ shared_examples_for 'debugger' do |name, src|
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
-
shared_examples_for 'non-debugger' do |name, src|
|
54
|
+
RSpec.shared_examples_for 'non-debugger' do |name, src|
|
55
55
|
it "does not report an offense for #{name}" do
|
56
56
|
inspect_source(src)
|
57
57
|
expect(cop.offenses).to be_empty
|
data/lib/rubocop/version.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module RuboCop
|
4
4
|
# This module holds the RuboCop version information.
|
5
5
|
module Version
|
6
|
-
STRING = '0.
|
6
|
+
STRING = '0.60.0'.freeze
|
7
7
|
|
8
8
|
MSG = '%<version>s (using Parser %<parser_version>s, running on ' \
|
9
9
|
'%<ruby_engine>s %<ruby_version>s %<ruby_platform>s)'.freeze
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.60.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-10-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: jaro_winkler
|
@@ -114,20 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
118
|
-
- - ">="
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: 1.0.1
|
117
|
+
version: 1.4.0
|
121
118
|
type: :runtime
|
122
119
|
prerelease: false
|
123
120
|
version_requirements: !ruby/object:Gem::Requirement
|
124
121
|
requirements:
|
125
122
|
- - "~>"
|
126
123
|
- !ruby/object:Gem::Version
|
127
|
-
version:
|
128
|
-
- - ">="
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: 1.0.1
|
124
|
+
version: 1.4.0
|
131
125
|
- !ruby/object:Gem::Dependency
|
132
126
|
name: bundler
|
133
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,8 +168,6 @@ files:
|
|
174
168
|
- bin/console
|
175
169
|
- bin/setup
|
176
170
|
- config/default.yml
|
177
|
-
- config/disabled.yml
|
178
|
-
- config/enabled.yml
|
179
171
|
- exe/rubocop
|
180
172
|
- lib/rubocop.rb
|
181
173
|
- lib/rubocop/ast/builder.rb
|
@@ -425,6 +417,7 @@ files:
|
|
425
417
|
- lib/rubocop/cop/metrics/module_length.rb
|
426
418
|
- lib/rubocop/cop/metrics/parameter_lists.rb
|
427
419
|
- lib/rubocop/cop/metrics/perceived_complexity.rb
|
420
|
+
- lib/rubocop/cop/metrics/utils/abc_size_calculator.rb
|
428
421
|
- lib/rubocop/cop/mixin/alignment.rb
|
429
422
|
- lib/rubocop/cop/mixin/annotation_comment.rb
|
430
423
|
- lib/rubocop/cop/mixin/array_hash_indentation.rb
|
@@ -822,7 +815,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
822
815
|
version: '0'
|
823
816
|
requirements: []
|
824
817
|
rubyforge_project:
|
825
|
-
rubygems_version: 2.6
|
818
|
+
rubygems_version: 2.7.6
|
826
819
|
signing_key:
|
827
820
|
specification_version: 4
|
828
821
|
summary: Automatic Ruby code style checking tool.
|