rubocop 0.88.0 → 0.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/bin/rubocop-profile +1 -0
  4. data/config/default.yml +96 -16
  5. data/lib/rubocop.rb +16 -4
  6. data/lib/rubocop/cli/command/auto_genenerate_config.rb +1 -1
  7. data/lib/rubocop/cli/command/base.rb +1 -0
  8. data/lib/rubocop/cli/command/execute_runner.rb +1 -1
  9. data/lib/rubocop/cli/command/show_cops.rb +1 -1
  10. data/lib/rubocop/cli/command/version.rb +2 -2
  11. data/lib/rubocop/comment_config.rb +2 -2
  12. data/lib/rubocop/config.rb +19 -2
  13. data/lib/rubocop/config_loader.rb +1 -1
  14. data/lib/rubocop/config_loader_resolver.rb +3 -3
  15. data/lib/rubocop/config_obsoletion.rb +6 -1
  16. data/lib/rubocop/config_validator.rb +1 -3
  17. data/lib/rubocop/cop/base.rb +2 -2
  18. data/lib/rubocop/cop/commissioner.rb +0 -1
  19. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -3
  20. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  21. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +1 -1
  22. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +15 -18
  23. data/lib/rubocop/cop/force.rb +1 -0
  24. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +32 -11
  25. data/lib/rubocop/cop/generator/configuration_injector.rb +2 -2
  26. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +4 -12
  27. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -1
  28. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +8 -8
  29. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +10 -7
  30. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +7 -8
  31. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +2 -2
  32. data/lib/rubocop/cop/layout/block_alignment.rb +1 -1
  33. data/lib/rubocop/cop/layout/empty_lines.rb +0 -2
  34. data/lib/rubocop/cop/layout/extra_spacing.rb +9 -16
  35. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -1
  36. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
  37. data/lib/rubocop/cop/layout/indentation_style.rb +0 -2
  38. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -1
  39. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +0 -2
  40. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +9 -1
  41. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +7 -4
  42. data/lib/rubocop/cop/lint/ambiguous_operator.rb +15 -10
  43. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +11 -13
  44. data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -2
  45. data/lib/rubocop/cop/lint/big_decimal_new.rb +10 -10
  46. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +49 -0
  47. data/lib/rubocop/cop/lint/boolean_symbol.rb +16 -11
  48. data/lib/rubocop/cop/lint/circular_argument_reference.rb +1 -1
  49. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -1
  50. data/lib/rubocop/cop/lint/debugger.rb +7 -1
  51. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +9 -10
  52. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +17 -13
  53. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +1 -1
  54. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -1
  55. data/lib/rubocop/cop/lint/duplicate_methods.rb +7 -4
  56. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +60 -0
  57. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  58. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  59. data/lib/rubocop/cop/lint/empty_conditional_body.rb +67 -0
  60. data/lib/rubocop/cop/lint/empty_ensure.rb +5 -5
  61. data/lib/rubocop/cop/lint/empty_expression.rb +2 -2
  62. data/lib/rubocop/cop/lint/empty_interpolation.rb +5 -6
  63. data/lib/rubocop/cop/lint/empty_when.rb +2 -2
  64. data/lib/rubocop/cop/lint/ensure_return.rb +27 -29
  65. data/lib/rubocop/cop/lint/erb_new_arguments.rb +11 -10
  66. data/lib/rubocop/cop/lint/flip_flop.rb +1 -1
  67. data/lib/rubocop/cop/lint/float_comparison.rb +93 -0
  68. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
  69. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +5 -4
  70. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +13 -14
  71. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +2 -2
  72. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +8 -8
  73. data/lib/rubocop/cop/lint/inherit_exception.rb +12 -7
  74. data/lib/rubocop/cop/lint/interpolation_check.rb +18 -15
  75. data/lib/rubocop/cop/lint/literal_as_condition.rb +4 -2
  76. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +7 -7
  77. data/lib/rubocop/cop/lint/loop.rb +23 -2
  78. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +6 -5
  79. data/lib/rubocop/cop/lint/missing_super.rb +99 -0
  80. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -1
  81. data/lib/rubocop/cop/lint/multiple_comparison.rb +6 -9
  82. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
  83. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  84. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  85. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +27 -23
  86. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
  87. data/lib/rubocop/cop/lint/number_conversion.rb +6 -9
  88. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +11 -13
  89. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +61 -0
  90. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +4 -10
  91. data/lib/rubocop/cop/lint/percent_string_array.rb +13 -12
  92. data/lib/rubocop/cop/lint/percent_symbol_array.rb +13 -12
  93. data/lib/rubocop/cop/lint/raise_exception.rb +12 -10
  94. data/lib/rubocop/cop/lint/rand_one.rb +2 -2
  95. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +2 -2
  96. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +7 -11
  97. data/lib/rubocop/cop/lint/redundant_require_statement.rb +4 -7
  98. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +13 -9
  99. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +6 -13
  100. data/lib/rubocop/cop/lint/redundant_with_index.rb +11 -14
  101. data/lib/rubocop/cop/lint/redundant_with_object.rb +11 -14
  102. data/lib/rubocop/cop/lint/regexp_as_condition.rb +4 -6
  103. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -2
  104. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  105. data/lib/rubocop/cop/lint/rescue_type.rb +8 -8
  106. data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -4
  107. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -6
  108. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +14 -10
  109. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +7 -7
  110. data/lib/rubocop/cop/lint/script_permission.rb +10 -7
  111. data/lib/rubocop/cop/lint/self_assignment.rb +78 -0
  112. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +5 -11
  113. data/lib/rubocop/cop/lint/shadowed_argument.rb +3 -3
  114. data/lib/rubocop/cop/lint/shadowed_exception.rb +2 -2
  115. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +3 -3
  116. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -1
  117. data/lib/rubocop/cop/lint/suppressed_exception.rb +4 -7
  118. data/lib/rubocop/cop/lint/to_json.rb +4 -6
  119. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +34 -0
  120. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +4 -4
  121. data/lib/rubocop/cop/lint/unified_integer.rb +4 -6
  122. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  123. data/lib/rubocop/cop/lint/unreachable_loop.rb +174 -0
  124. data/lib/rubocop/cop/lint/unused_block_argument.rb +8 -3
  125. data/lib/rubocop/cop/lint/unused_method_argument.rb +8 -3
  126. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -1
  127. data/lib/rubocop/cop/lint/uri_regexp.rb +11 -31
  128. data/lib/rubocop/cop/lint/useless_access_modifier.rb +25 -15
  129. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -4
  130. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -15
  131. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -6
  132. data/lib/rubocop/cop/lint/void.rb +3 -7
  133. data/lib/rubocop/cop/metrics/abc_size.rb +1 -1
  134. data/lib/rubocop/cop/metrics/block_length.rb +2 -2
  135. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
  136. data/lib/rubocop/cop/metrics/class_length.rb +2 -2
  137. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +2 -1
  138. data/lib/rubocop/cop/metrics/method_length.rb +2 -2
  139. data/lib/rubocop/cop/metrics/module_length.rb +2 -2
  140. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -6
  141. data/lib/rubocop/cop/metrics/perceived_complexity.rb +7 -8
  142. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +48 -5
  143. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +52 -24
  144. data/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +37 -0
  145. data/lib/rubocop/cop/migration/department_name.rb +13 -15
  146. data/lib/rubocop/cop/mixin/array_min_size.rb +1 -1
  147. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  148. data/lib/rubocop/cop/mixin/code_length.rb +22 -5
  149. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -0
  150. data/lib/rubocop/cop/mixin/method_complexity.rb +10 -2
  151. data/lib/rubocop/cop/mixin/statement_modifier.rb +35 -6
  152. data/lib/rubocop/cop/mixin/surrounding_space.rb +0 -25
  153. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +6 -13
  154. data/lib/rubocop/cop/mixin/unused_argument.rb +4 -6
  155. data/lib/rubocop/cop/naming/accessor_method_name.rb +4 -2
  156. data/lib/rubocop/cop/naming/ascii_identifiers.rb +3 -3
  157. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  158. data/lib/rubocop/cop/naming/block_parameter_name.rb +1 -1
  159. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +2 -2
  160. data/lib/rubocop/cop/naming/constant_name.rb +2 -2
  161. data/lib/rubocop/cop/naming/file_name.rb +3 -3
  162. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +2 -2
  163. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +2 -2
  164. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -2
  165. data/lib/rubocop/cop/naming/method_parameter_name.rb +1 -1
  166. data/lib/rubocop/cop/naming/predicate_name.rb +3 -5
  167. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +12 -11
  168. data/lib/rubocop/cop/registry.rb +3 -3
  169. data/lib/rubocop/cop/security/eval.rb +2 -2
  170. data/lib/rubocop/cop/security/json_load.rb +6 -8
  171. data/lib/rubocop/cop/security/marshal_load.rb +2 -4
  172. data/lib/rubocop/cop/security/open.rb +2 -2
  173. data/lib/rubocop/cop/security/yaml_load.rb +6 -6
  174. data/lib/rubocop/cop/style/access_modifier_declarations.rb +11 -1
  175. data/lib/rubocop/cop/style/accessor_grouping.rb +9 -7
  176. data/lib/rubocop/cop/style/alias.rb +7 -3
  177. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +0 -2
  178. data/lib/rubocop/cop/style/case_equality.rb +22 -3
  179. data/lib/rubocop/cop/style/case_like_if.rb +2 -2
  180. data/lib/rubocop/cop/style/colon_method_call.rb +3 -3
  181. data/lib/rubocop/cop/style/conditional_assignment.rb +11 -2
  182. data/lib/rubocop/cop/style/documentation.rb +4 -4
  183. data/lib/rubocop/cop/style/each_with_object.rb +0 -2
  184. data/lib/rubocop/cop/style/empty_method.rb +5 -5
  185. data/lib/rubocop/cop/style/eval_with_location.rb +4 -0
  186. data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -0
  187. data/lib/rubocop/cop/style/explicit_block_argument.rb +102 -0
  188. data/lib/rubocop/cop/style/format_string.rb +4 -0
  189. data/lib/rubocop/cop/style/format_string_token.rb +1 -0
  190. data/lib/rubocop/cop/style/global_std_stream.rb +65 -0
  191. data/lib/rubocop/cop/style/guard_clause.rb +2 -2
  192. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +8 -1
  193. data/lib/rubocop/cop/style/hash_syntax.rb +6 -3
  194. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -1
  195. data/lib/rubocop/cop/style/if_inside_else.rb +1 -1
  196. data/lib/rubocop/cop/style/if_unless_modifier.rb +0 -20
  197. data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
  198. data/lib/rubocop/cop/style/inverse_methods.rb +2 -3
  199. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +5 -0
  200. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -1
  201. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +9 -2
  202. data/lib/rubocop/cop/style/multiline_memoization.rb +2 -2
  203. data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
  204. data/lib/rubocop/cop/style/numeric_predicate.rb +4 -0
  205. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +42 -0
  206. data/lib/rubocop/cop/style/parallel_assignment.rb +2 -2
  207. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +2 -2
  208. data/lib/rubocop/cop/style/random_with_offset.rb +1 -0
  209. data/lib/rubocop/cop/style/redundant_condition.rb +15 -3
  210. data/lib/rubocop/cop/style/redundant_exception.rb +4 -0
  211. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +9 -9
  212. data/lib/rubocop/cop/style/redundant_sort.rb +25 -10
  213. data/lib/rubocop/cop/style/signal_exception.rb +2 -0
  214. data/lib/rubocop/cop/style/single_argument_dig.rb +54 -0
  215. data/lib/rubocop/cop/style/string_concatenation.rb +92 -0
  216. data/lib/rubocop/cop/style/struct_inheritance.rb +1 -1
  217. data/lib/rubocop/cop/style/symbol_array.rb +1 -1
  218. data/lib/rubocop/cop/style/symbol_proc.rb +1 -1
  219. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +1 -1
  220. data/lib/rubocop/cop/style/zero_length_predicate.rb +10 -6
  221. data/lib/rubocop/cop/team.rb +1 -1
  222. data/lib/rubocop/cop/tokens_util.rb +84 -0
  223. data/lib/rubocop/cop/util.rb +1 -13
  224. data/lib/rubocop/cop/variable_force.rb +0 -2
  225. data/lib/rubocop/cop/variable_force/branch.rb +1 -0
  226. data/lib/rubocop/cop/variable_force/variable.rb +2 -2
  227. data/lib/rubocop/cops_documentation_generator.rb +282 -0
  228. data/lib/rubocop/error.rb +1 -0
  229. data/lib/rubocop/formatter/formatter_set.rb +1 -0
  230. data/lib/rubocop/path_util.rb +19 -4
  231. data/lib/rubocop/rake_task.rb +1 -0
  232. data/lib/rubocop/rspec/expect_offense.rb +1 -1
  233. data/lib/rubocop/target_finder.rb +12 -9
  234. data/lib/rubocop/version.rb +2 -2
  235. metadata +19 -6
  236. data/lib/rubocop/cop/lint/useless_comparison.rb +0 -28
  237. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +0 -37
  238. data/lib/rubocop/cop/mixin/too_many_lines.rb +0 -25
  239. data/lib/rubocop/cop/style/method_missing_super.rb +0 -34
@@ -12,6 +12,7 @@ module RuboCop
12
12
  # A wrapper to display errored location of analyzed file.
13
13
  class ErrorWithAnalyzedFileLocation < Error
14
14
  def initialize(cause:, node:, cop:)
15
+ super()
15
16
  @cause = cause
16
17
  @cop = cop
17
18
  @location = node.is_a?(RuboCop::AST::Node) ? node.loc : node
@@ -35,6 +35,7 @@ module RuboCop
35
35
  end
36
36
 
37
37
  def initialize(options = {})
38
+ super()
38
39
  @options = options # CLI options
39
40
  end
40
41
 
@@ -55,10 +55,25 @@ module RuboCop
55
55
  end
56
56
 
57
57
  def hidden_file_in_not_hidden_dir?(pattern, path)
58
- File.fnmatch?(
59
- pattern, path,
60
- File::FNM_PATHNAME | File::FNM_EXTGLOB | File::FNM_DOTMATCH
61
- ) && File.basename(path).start_with?('.') && !hidden_dir?(path)
58
+ hidden_file?(path) &&
59
+ File.fnmatch?(
60
+ pattern, path,
61
+ File::FNM_PATHNAME | File::FNM_EXTGLOB | File::FNM_DOTMATCH
62
+ ) &&
63
+ !hidden_dir?(path)
64
+ end
65
+
66
+ def hidden_file?(path)
67
+ maybe_hidden_file?(path) && File.basename(path).start_with?('.')
68
+ end
69
+
70
+ # Loose check to reduce memory allocations
71
+ def maybe_hidden_file?(path)
72
+ separator_index = path.rindex(File::SEPARATOR)
73
+ return false unless separator_index
74
+
75
+ dot_index = path.index('.', separator_index + 1)
76
+ dot_index == separator_index + 1
62
77
  end
63
78
 
64
79
  def hidden_dir?(path)
@@ -15,6 +15,7 @@ module RuboCop
15
15
  attr_accessor :name, :verbose, :fail_on_error, :patterns, :formatters, :requires, :options
16
16
 
17
17
  def initialize(name = :rubocop, *args, &task_block)
18
+ super()
18
19
  setup_ivars(name)
19
20
 
20
21
  desc 'Run RuboCop' unless ::Rake.application.last_description
@@ -134,7 +134,7 @@ module RuboCop
134
134
  actual_annotations =
135
135
  expected_annotations.with_offense_annotations(offenses)
136
136
 
137
- expect(actual_annotations).to eq(expected_annotations)
137
+ expect(actual_annotations).to eq(expected_annotations), ''
138
138
  expect(offenses.map(&:severity).uniq).to eq([severity]) if severity
139
139
  end
140
140
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'set'
4
-
5
3
  module RuboCop
6
4
  # This class finds target files to inspect by scanning the directory tree
7
5
  # and picking ruby files.
@@ -114,10 +112,12 @@ module RuboCop
114
112
  end
115
113
 
116
114
  def ruby_extensions
117
- ext_patterns = all_cops_include.select do |pattern|
118
- pattern.start_with?('**/*.')
115
+ @ruby_extensions ||= begin
116
+ ext_patterns = all_cops_include.select do |pattern|
117
+ pattern.start_with?('**/*.')
118
+ end
119
+ ext_patterns.map { |pattern| pattern.sub('**/*', '') }
119
120
  end
120
- ext_patterns.map { |pattern| pattern.sub('**/*', '') }
121
121
  end
122
122
 
123
123
  def ruby_filename?(file)
@@ -125,14 +125,17 @@ module RuboCop
125
125
  end
126
126
 
127
127
  def ruby_filenames
128
- file_patterns = all_cops_include.reject do |pattern|
129
- pattern.start_with?('**/*.')
128
+ @ruby_filenames ||= begin
129
+ file_patterns = all_cops_include.reject do |pattern|
130
+ pattern.start_with?('**/*.')
131
+ end
132
+ file_patterns.map { |pattern| pattern.sub('**/', '') }
130
133
  end
131
- file_patterns.map { |pattern| pattern.sub('**/', '') }
132
134
  end
133
135
 
134
136
  def all_cops_include
135
- @config_store.for_pwd.for_all_cops['Include'].map(&:to_s)
137
+ @all_cops_include ||=
138
+ @config_store.for_pwd.for_all_cops['Include'].map(&:to_s)
136
139
  end
137
140
 
138
141
  def ruby_executable?(file)
@@ -3,13 +3,13 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '0.88.0'
6
+ STRING = '0.89.0'
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, '\
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
10
10
  'running on %<ruby_engine>s %<ruby_version>s %<ruby_platform>s)'
11
11
 
12
- def self.version(debug = false)
12
+ def self.version(debug: false)
13
13
  if debug
14
14
  format(MSG, version: STRING, parser_version: Parser::VERSION,
15
15
  rubocop_ast_version: RuboCop::AST::Version::STRING,
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.88.0
4
+ version: 0.89.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: 2020-07-13 00:00:00.000000000 Z
13
+ date: 2020-08-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: parallel
@@ -340,6 +340,7 @@ files:
340
340
  - lib/rubocop/cop/lint/ambiguous_regexp_literal.rb
341
341
  - lib/rubocop/cop/lint/assignment_in_condition.rb
342
342
  - lib/rubocop/cop/lint/big_decimal_new.rb
343
+ - lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb
343
344
  - lib/rubocop/cop/lint/boolean_symbol.rb
344
345
  - lib/rubocop/cop/lint/circular_argument_reference.rb
345
346
  - lib/rubocop/cop/lint/constant_resolution.rb
@@ -351,8 +352,10 @@ files:
351
352
  - lib/rubocop/cop/lint/duplicate_elsif_condition.rb
352
353
  - lib/rubocop/cop/lint/duplicate_hash_key.rb
353
354
  - lib/rubocop/cop/lint/duplicate_methods.rb
355
+ - lib/rubocop/cop/lint/duplicate_rescue_exception.rb
354
356
  - lib/rubocop/cop/lint/each_with_object_argument.rb
355
357
  - lib/rubocop/cop/lint/else_layout.rb
358
+ - lib/rubocop/cop/lint/empty_conditional_body.rb
356
359
  - lib/rubocop/cop/lint/empty_ensure.rb
357
360
  - lib/rubocop/cop/lint/empty_expression.rb
358
361
  - lib/rubocop/cop/lint/empty_interpolation.rb
@@ -360,6 +363,7 @@ files:
360
363
  - lib/rubocop/cop/lint/ensure_return.rb
361
364
  - lib/rubocop/cop/lint/erb_new_arguments.rb
362
365
  - lib/rubocop/cop/lint/flip_flop.rb
366
+ - lib/rubocop/cop/lint/float_comparison.rb
363
367
  - lib/rubocop/cop/lint/float_out_of_range.rb
364
368
  - lib/rubocop/cop/lint/format_parameter_mismatch.rb
365
369
  - lib/rubocop/cop/lint/heredoc_method_call_position.rb
@@ -371,6 +375,7 @@ files:
371
375
  - lib/rubocop/cop/lint/literal_in_interpolation.rb
372
376
  - lib/rubocop/cop/lint/loop.rb
373
377
  - lib/rubocop/cop/lint/missing_cop_enable_directive.rb
378
+ - lib/rubocop/cop/lint/missing_super.rb
374
379
  - lib/rubocop/cop/lint/mixed_regexp_capture_types.rb
375
380
  - lib/rubocop/cop/lint/multiple_comparison.rb
376
381
  - lib/rubocop/cop/lint/nested_method_definition.rb
@@ -380,6 +385,7 @@ files:
380
385
  - lib/rubocop/cop/lint/non_local_exit_from_iterator.rb
381
386
  - lib/rubocop/cop/lint/number_conversion.rb
382
387
  - lib/rubocop/cop/lint/ordered_magic_comments.rb
388
+ - lib/rubocop/cop/lint/out_of_range_regexp_ref.rb
383
389
  - lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb
384
390
  - lib/rubocop/cop/lint/percent_string_array.rb
385
391
  - lib/rubocop/cop/lint/percent_symbol_array.rb
@@ -401,6 +407,7 @@ files:
401
407
  - lib/rubocop/cop/lint/safe_navigation_consistency.rb
402
408
  - lib/rubocop/cop/lint/safe_navigation_with_empty.rb
403
409
  - lib/rubocop/cop/lint/script_permission.rb
410
+ - lib/rubocop/cop/lint/self_assignment.rb
404
411
  - lib/rubocop/cop/lint/send_with_mixin_argument.rb
405
412
  - lib/rubocop/cop/lint/shadowed_argument.rb
406
413
  - lib/rubocop/cop/lint/shadowed_exception.rb
@@ -409,16 +416,17 @@ files:
409
416
  - lib/rubocop/cop/lint/suppressed_exception.rb
410
417
  - lib/rubocop/cop/lint/syntax.rb
411
418
  - lib/rubocop/cop/lint/to_json.rb
419
+ - lib/rubocop/cop/lint/top_level_return_with_argument.rb
412
420
  - lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb
413
421
  - lib/rubocop/cop/lint/unified_integer.rb
414
422
  - lib/rubocop/cop/lint/unreachable_code.rb
423
+ - lib/rubocop/cop/lint/unreachable_loop.rb
415
424
  - lib/rubocop/cop/lint/unused_block_argument.rb
416
425
  - lib/rubocop/cop/lint/unused_method_argument.rb
417
426
  - lib/rubocop/cop/lint/uri_escape_unescape.rb
418
427
  - lib/rubocop/cop/lint/uri_regexp.rb
419
428
  - lib/rubocop/cop/lint/useless_access_modifier.rb
420
429
  - lib/rubocop/cop/lint/useless_assignment.rb
421
- - lib/rubocop/cop/lint/useless_comparison.rb
422
430
  - lib/rubocop/cop/lint/useless_else_without_rescue.rb
423
431
  - lib/rubocop/cop/lint/useless_setter_call.rb
424
432
  - lib/rubocop/cop/lint/void.rb
@@ -435,6 +443,7 @@ files:
435
443
  - lib/rubocop/cop/metrics/utils/abc_size_calculator.rb
436
444
  - lib/rubocop/cop/metrics/utils/code_length_calculator.rb
437
445
  - lib/rubocop/cop/metrics/utils/iterating_block.rb
446
+ - lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb
438
447
  - lib/rubocop/cop/migration/department_name.rb
439
448
  - lib/rubocop/cop/mixin/alignment.rb
440
449
  - lib/rubocop/cop/mixin/allowed_methods.rb
@@ -480,7 +489,6 @@ files:
480
489
  - lib/rubocop/cop/mixin/on_normal_if_unless.rb
481
490
  - lib/rubocop/cop/mixin/ordered_gem_node.rb
482
491
  - lib/rubocop/cop/mixin/parentheses.rb
483
- - lib/rubocop/cop/mixin/parser_diagnostic.rb
484
492
  - lib/rubocop/cop/mixin/percent_array.rb
485
493
  - lib/rubocop/cop/mixin/percent_literal.rb
486
494
  - lib/rubocop/cop/mixin/preceding_following_alignment.rb
@@ -497,7 +505,6 @@ files:
497
505
  - lib/rubocop/cop/mixin/string_literals_help.rb
498
506
  - lib/rubocop/cop/mixin/surrounding_space.rb
499
507
  - lib/rubocop/cop/mixin/target_ruby_version.rb
500
- - lib/rubocop/cop/mixin/too_many_lines.rb
501
508
  - lib/rubocop/cop/mixin/trailing_body.rb
502
509
  - lib/rubocop/cop/mixin/trailing_comma.rb
503
510
  - lib/rubocop/cop/mixin/uncommunicative_name.rb
@@ -578,12 +585,14 @@ files:
578
585
  - lib/rubocop/cop/style/eval_with_location.rb
579
586
  - lib/rubocop/cop/style/even_odd.rb
580
587
  - lib/rubocop/cop/style/expand_path_arguments.rb
588
+ - lib/rubocop/cop/style/explicit_block_argument.rb
581
589
  - lib/rubocop/cop/style/exponential_notation.rb
582
590
  - lib/rubocop/cop/style/float_division.rb
583
591
  - lib/rubocop/cop/style/for.rb
584
592
  - lib/rubocop/cop/style/format_string.rb
585
593
  - lib/rubocop/cop/style/format_string_token.rb
586
594
  - lib/rubocop/cop/style/frozen_string_literal_comment.rb
595
+ - lib/rubocop/cop/style/global_std_stream.rb
587
596
  - lib/rubocop/cop/style/global_vars.rb
588
597
  - lib/rubocop/cop/style/guard_clause.rb
589
598
  - lib/rubocop/cop/style/hash_as_last_array_item.rb
@@ -611,7 +620,6 @@ files:
611
620
  - lib/rubocop/cop/style/method_call_without_args_parentheses.rb
612
621
  - lib/rubocop/cop/style/method_called_on_do_end_block.rb
613
622
  - lib/rubocop/cop/style/method_def_parentheses.rb
614
- - lib/rubocop/cop/style/method_missing_super.rb
615
623
  - lib/rubocop/cop/style/min_max.rb
616
624
  - lib/rubocop/cop/style/missing_else.rb
617
625
  - lib/rubocop/cop/style/missing_respond_to_missing.rb
@@ -643,6 +651,7 @@ files:
643
651
  - lib/rubocop/cop/style/one_line_conditional.rb
644
652
  - lib/rubocop/cop/style/option_hash.rb
645
653
  - lib/rubocop/cop/style/optional_arguments.rb
654
+ - lib/rubocop/cop/style/optional_boolean_parameter.rb
646
655
  - lib/rubocop/cop/style/or_assignment.rb
647
656
  - lib/rubocop/cop/style/parallel_assignment.rb
648
657
  - lib/rubocop/cop/style/parentheses_around_condition.rb
@@ -681,12 +690,14 @@ files:
681
690
  - lib/rubocop/cop/style/semicolon.rb
682
691
  - lib/rubocop/cop/style/send.rb
683
692
  - lib/rubocop/cop/style/signal_exception.rb
693
+ - lib/rubocop/cop/style/single_argument_dig.rb
684
694
  - lib/rubocop/cop/style/single_line_block_params.rb
685
695
  - lib/rubocop/cop/style/single_line_methods.rb
686
696
  - lib/rubocop/cop/style/slicing_with_range.rb
687
697
  - lib/rubocop/cop/style/special_global_vars.rb
688
698
  - lib/rubocop/cop/style/stabby_lambda_parentheses.rb
689
699
  - lib/rubocop/cop/style/stderr_puts.rb
700
+ - lib/rubocop/cop/style/string_concatenation.rb
690
701
  - lib/rubocop/cop/style/string_hash_keys.rb
691
702
  - lib/rubocop/cop/style/string_literals.rb
692
703
  - lib/rubocop/cop/style/string_literals_in_interpolation.rb
@@ -717,6 +728,7 @@ files:
717
728
  - lib/rubocop/cop/style/yoda_condition.rb
718
729
  - lib/rubocop/cop/style/zero_length_predicate.rb
719
730
  - lib/rubocop/cop/team.rb
731
+ - lib/rubocop/cop/tokens_util.rb
720
732
  - lib/rubocop/cop/util.rb
721
733
  - lib/rubocop/cop/utils/format_string.rb
722
734
  - lib/rubocop/cop/variable_force.rb
@@ -727,6 +739,7 @@ files:
727
739
  - lib/rubocop/cop/variable_force/scope.rb
728
740
  - lib/rubocop/cop/variable_force/variable.rb
729
741
  - lib/rubocop/cop/variable_force/variable_table.rb
742
+ - lib/rubocop/cops_documentation_generator.rb
730
743
  - lib/rubocop/core_ext/string.rb
731
744
  - lib/rubocop/error.rb
732
745
  - lib/rubocop/ext/processed_source.rb
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module Lint
6
- # This cop checks for comparison of something with itself.
7
- #
8
- # @example
9
- #
10
- # # bad
11
- #
12
- # x.top >= x.top
13
- class UselessComparison < Cop
14
- MSG = 'Comparison of something with itself detected.'
15
- OPS = %w[== === != < > <= >= <=>].freeze
16
-
17
- def_node_matcher :useless_comparison?,
18
- "(send $_match {:#{OPS.join(' :')}} $_match)"
19
-
20
- def on_send(node)
21
- return unless useless_comparison?(node)
22
-
23
- add_offense(node, location: :selector)
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- # Common functionality for cops which processes Parser's diagnostics.
6
- # This mixin requires its user class to define `#relevant_diagnostic?`.
7
- #
8
- # def relevant_diagnostic?(diagnostic)
9
- # diagnostic.reason == :my_interested_diagnostic_type
10
- # end
11
- #
12
- # If you want to use an alternative offense message rather than the one in
13
- # Parser's diagnostic, define `#alternative_message`.
14
- #
15
- # def alternative_message(diagnostic)
16
- # 'My custom message'
17
- # end
18
- module ParserDiagnostic
19
- def investigate(processed_source)
20
- processed_source.diagnostics.each do |d|
21
- next unless relevant_diagnostic?(d)
22
-
23
- message = if respond_to?(:alternative_message, true)
24
- alternative_message(d)
25
- else
26
- d.message.capitalize
27
- end
28
-
29
- add_offense(find_offense_node_by(d),
30
- location: d.location,
31
- message: message,
32
- severity: d.level)
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- # Common functionality for checking for too many lines.
6
- module TooManyLines
7
- include ConfigurableMax
8
- include CodeLength
9
-
10
- MSG = '%<label>s has too many lines. [%<length>d/%<max>d]'
11
-
12
- private
13
-
14
- def message(length, max_length)
15
- format(MSG, label: cop_label, length: length, max: max_length)
16
- end
17
-
18
- def code_length(node)
19
- Metrics::Utils::CodeLengthCalculator.new(node,
20
- count_comments: count_comments?,
21
- foldable_types: count_as_one).calculate
22
- end
23
- end
24
- end
25
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module Style
6
- # This cop checks for the presence of `method_missing` without
7
- # falling back on `super`.
8
- #
9
- # @example
10
- # #bad
11
- # def method_missing(name, *args)
12
- # # ...
13
- # end
14
- #
15
- # #good
16
- #
17
- # def method_missing(name, *args)
18
- # # ...
19
- # super
20
- # end
21
- class MethodMissingSuper < Cop
22
- MSG = 'When using `method_missing`, fall back on `super`.'
23
-
24
- def on_def(node)
25
- return unless node.method?(:method_missing)
26
- return if node.descendants.any?(&:zsuper_type?)
27
-
28
- add_offense(node)
29
- end
30
- alias on_defs on_def
31
- end
32
- end
33
- end
34
- end