rubocop 1.9.1 → 1.13.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 (488) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -14
  3. data/assets/output.html.erb +1 -1
  4. data/config/default.yml +77 -17
  5. data/config/obsoletion.yml +4 -0
  6. data/exe/rubocop +1 -3
  7. data/lib/rubocop.rb +5 -1
  8. data/lib/rubocop/cached_data.rb +1 -3
  9. data/lib/rubocop/cli.rb +4 -6
  10. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  11. data/lib/rubocop/cli/command/execute_runner.rb +1 -1
  12. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  13. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  14. data/lib/rubocop/cli/command/suggest_extensions.rb +3 -2
  15. data/lib/rubocop/comment_config.rb +45 -101
  16. data/lib/rubocop/config.rb +11 -26
  17. data/lib/rubocop/config_loader.rb +5 -11
  18. data/lib/rubocop/config_loader_resolver.rb +22 -14
  19. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  20. data/lib/rubocop/config_store.rb +1 -2
  21. data/lib/rubocop/config_validator.rb +5 -10
  22. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  23. data/lib/rubocop/cop/badge.rb +1 -2
  24. data/lib/rubocop/cop/base.rb +8 -6
  25. data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -3
  26. data/lib/rubocop/cop/bundler/gem_comment.rb +43 -8
  27. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -0
  28. data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -4
  29. data/lib/rubocop/cop/commissioner.rb +2 -8
  30. data/lib/rubocop/cop/cop.rb +4 -18
  31. data/lib/rubocop/cop/corrector.rb +1 -4
  32. data/lib/rubocop/cop/correctors/alignment_corrector.rb +6 -12
  33. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  34. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  35. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  36. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  37. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  38. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  39. data/lib/rubocop/cop/gemspec/date_assignment.rb +57 -0
  40. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +3 -2
  41. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +2 -4
  42. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +2 -0
  43. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +2 -0
  44. data/lib/rubocop/cop/generator.rb +3 -6
  45. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  46. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  47. data/lib/rubocop/cop/internal_affairs.rb +1 -0
  48. data/lib/rubocop/cop/internal_affairs/example_description.rb +7 -4
  49. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +3 -5
  50. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +3 -3
  51. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +151 -0
  52. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +2 -3
  53. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +3 -2
  54. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +1 -0
  55. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +1 -0
  56. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -0
  57. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +3 -0
  58. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +5 -2
  59. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +3 -3
  60. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +12 -10
  61. data/lib/rubocop/cop/layout/argument_alignment.rb +8 -9
  62. data/lib/rubocop/cop/layout/array_alignment.rb +7 -6
  63. data/lib/rubocop/cop/layout/assignment_indentation.rb +8 -7
  64. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  65. data/lib/rubocop/cop/layout/block_alignment.rb +8 -19
  66. data/lib/rubocop/cop/layout/block_end_newline.rb +4 -8
  67. data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
  68. data/lib/rubocop/cop/layout/class_structure.rb +5 -10
  69. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +18 -30
  70. data/lib/rubocop/cop/layout/comment_indentation.rb +17 -21
  71. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  72. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  73. data/lib/rubocop/cop/layout/else_alignment.rb +10 -9
  74. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  75. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
  76. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  77. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  78. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  79. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  80. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  81. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  82. data/lib/rubocop/cop/layout/extra_spacing.rb +5 -9
  83. data/lib/rubocop/cop/layout/first_argument_indentation.rb +12 -6
  84. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +10 -8
  85. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  86. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +24 -20
  87. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  88. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  89. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  90. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +6 -5
  91. data/lib/rubocop/cop/layout/hash_alignment.rb +3 -6
  92. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  93. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  94. data/lib/rubocop/cop/layout/indentation_consistency.rb +9 -6
  95. data/lib/rubocop/cop/layout/indentation_style.rb +25 -30
  96. data/lib/rubocop/cop/layout/indentation_width.rb +21 -11
  97. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  98. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  99. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  100. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +26 -0
  101. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  102. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  103. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  104. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +22 -15
  105. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +10 -5
  106. data/lib/rubocop/cop/layout/parameter_alignment.rb +6 -5
  107. data/lib/rubocop/cop/layout/redundant_line_break.rb +125 -0
  108. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  109. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  110. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  111. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  112. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  113. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
  114. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  115. data/lib/rubocop/cop/layout/space_before_block_braces.rb +2 -3
  116. data/lib/rubocop/cop/layout/space_before_brackets.rb +2 -4
  117. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  118. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  119. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  120. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  121. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  122. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +6 -11
  123. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  124. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  125. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  126. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  127. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  128. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  129. data/lib/rubocop/cop/lint/big_decimal_new.rb +1 -0
  130. data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -2
  131. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +2 -0
  132. data/lib/rubocop/cop/lint/constant_resolution.rb +2 -2
  133. data/lib/rubocop/cop/lint/debugger.rb +60 -14
  134. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +2 -4
  135. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  136. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +16 -9
  137. data/lib/rubocop/cop/lint/duplicate_branch.rb +2 -3
  138. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  139. data/lib/rubocop/cop/lint/duplicate_methods.rb +6 -7
  140. data/lib/rubocop/cop/lint/duplicate_require.rb +3 -2
  141. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -0
  142. data/lib/rubocop/cop/lint/else_layout.rb +2 -4
  143. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  144. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  145. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  146. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  147. data/lib/rubocop/cop/lint/erb_new_arguments.rb +4 -7
  148. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  149. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -6
  150. data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +1 -0
  151. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  152. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  153. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +4 -7
  154. data/lib/rubocop/cop/lint/inherit_exception.rb +2 -2
  155. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  156. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  157. data/lib/rubocop/cop/lint/loop.rb +1 -2
  158. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  159. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  160. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  161. data/lib/rubocop/cop/lint/multiple_comparison.rb +5 -4
  162. data/lib/rubocop/cop/lint/nested_method_definition.rb +4 -2
  163. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  164. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -0
  165. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +8 -3
  166. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +3 -0
  167. data/lib/rubocop/cop/lint/number_conversion.rb +12 -4
  168. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  169. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  170. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  171. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  172. data/lib/rubocop/cop/lint/raise_exception.rb +3 -2
  173. data/lib/rubocop/cop/lint/rand_one.rb +2 -2
  174. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +9 -22
  175. data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -0
  176. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +2 -3
  177. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +10 -10
  178. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
  179. data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -4
  180. data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -4
  181. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  182. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  183. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  184. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  185. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  186. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +2 -2
  187. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  188. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +2 -2
  189. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +3 -7
  190. data/lib/rubocop/cop/lint/shadowed_argument.rb +5 -11
  191. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  192. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +1 -0
  193. data/lib/rubocop/cop/lint/struct_new_override.rb +2 -2
  194. data/lib/rubocop/cop/lint/suppressed_exception.rb +44 -1
  195. data/lib/rubocop/cop/lint/symbol_conversion.rb +91 -6
  196. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  197. data/lib/rubocop/cop/lint/to_enum_arguments.rb +3 -0
  198. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  199. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  200. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  201. data/lib/rubocop/cop/lint/unified_integer.rb +1 -0
  202. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +5 -0
  203. data/lib/rubocop/cop/lint/unreachable_code.rb +3 -5
  204. data/lib/rubocop/cop/lint/unreachable_loop.rb +3 -5
  205. data/lib/rubocop/cop/lint/unused_block_argument.rb +4 -8
  206. data/lib/rubocop/cop/lint/unused_method_argument.rb +2 -2
  207. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +1 -0
  208. data/lib/rubocop/cop/lint/useless_access_modifier.rb +6 -4
  209. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  210. data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -3
  211. data/lib/rubocop/cop/lint/useless_times.rb +3 -0
  212. data/lib/rubocop/cop/lint/void.rb +4 -11
  213. data/lib/rubocop/cop/message_annotator.rb +1 -3
  214. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  215. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  216. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  217. data/lib/rubocop/cop/metrics/module_length.rb +3 -6
  218. data/lib/rubocop/cop/metrics/parameter_lists.rb +3 -5
  219. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  220. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  221. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +6 -4
  222. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +4 -7
  223. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  224. data/lib/rubocop/cop/mixin/alignment.rb +12 -7
  225. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  226. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  227. data/lib/rubocop/cop/mixin/comments_help.rb +5 -1
  228. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  229. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  230. data/lib/rubocop/cop/mixin/def_node.rb +3 -5
  231. data/lib/rubocop/cop/mixin/documentation_comment.rb +3 -6
  232. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +6 -7
  233. data/lib/rubocop/cop/mixin/empty_parameter.rb +2 -3
  234. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  235. data/lib/rubocop/cop/mixin/enforce_superclass.rb +4 -6
  236. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  237. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
  238. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
  239. data/lib/rubocop/cop/mixin/hash_transform_method.rb +8 -22
  240. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  241. data/lib/rubocop/cop/mixin/line_length_help.rb +13 -10
  242. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  243. data/lib/rubocop/cop/mixin/method_complexity.rb +2 -3
  244. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  245. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +4 -3
  246. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  247. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +11 -40
  248. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  249. data/lib/rubocop/cop/mixin/negative_conditional.rb +4 -2
  250. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  251. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  252. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  253. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  254. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +6 -9
  255. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  256. data/lib/rubocop/cop/mixin/rational_literal.rb +1 -0
  257. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  258. data/lib/rubocop/cop/mixin/safe_assignment.rb +6 -2
  259. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  260. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  261. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  262. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  263. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  264. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +7 -13
  265. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  266. data/lib/rubocop/cop/mixin/visibility_help.rb +1 -0
  267. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  268. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +2 -2
  269. data/lib/rubocop/cop/naming/constant_name.rb +2 -0
  270. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  271. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +8 -3
  272. data/lib/rubocop/cop/naming/method_name.rb +4 -2
  273. data/lib/rubocop/cop/naming/predicate_name.rb +2 -2
  274. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +10 -0
  275. data/lib/rubocop/cop/offense.rb +3 -8
  276. data/lib/rubocop/cop/registry.rb +13 -12
  277. data/lib/rubocop/cop/security/eval.rb +1 -0
  278. data/lib/rubocop/cop/security/json_load.rb +1 -0
  279. data/lib/rubocop/cop/security/marshal_load.rb +1 -0
  280. data/lib/rubocop/cop/security/open.rb +1 -0
  281. data/lib/rubocop/cop/security/yaml_load.rb +1 -0
  282. data/lib/rubocop/cop/style/access_modifier_declarations.rb +4 -5
  283. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  284. data/lib/rubocop/cop/style/alias.rb +6 -12
  285. data/lib/rubocop/cop/style/and_or.rb +3 -1
  286. data/lib/rubocop/cop/style/arguments_forwarding.rb +4 -3
  287. data/lib/rubocop/cop/style/array_coercion.rb +2 -0
  288. data/lib/rubocop/cop/style/array_join.rb +1 -0
  289. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  290. data/lib/rubocop/cop/style/attr.rb +2 -3
  291. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  292. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +59 -71
  293. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
  294. data/lib/rubocop/cop/style/case_equality.rb +2 -1
  295. data/lib/rubocop/cop/style/case_like_if.rb +16 -6
  296. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  297. data/lib/rubocop/cop/style/class_and_module_children.rb +3 -6
  298. data/lib/rubocop/cop/style/class_equality_comparison.rb +3 -0
  299. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  300. data/lib/rubocop/cop/style/collection_compact.rb +3 -3
  301. data/lib/rubocop/cop/style/colon_method_call.rb +2 -3
  302. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  303. data/lib/rubocop/cop/style/command_literal.rb +4 -9
  304. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  305. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  306. data/lib/rubocop/cop/style/conditional_assignment.rb +12 -24
  307. data/lib/rubocop/cop/style/constant_visibility.rb +28 -0
  308. data/lib/rubocop/cop/style/copyright.rb +3 -6
  309. data/lib/rubocop/cop/style/date_time.rb +5 -5
  310. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  311. data/lib/rubocop/cop/style/dir.rb +1 -0
  312. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +2 -2
  313. data/lib/rubocop/cop/style/documentation.rb +30 -3
  314. data/lib/rubocop/cop/style/documentation_method.rb +1 -0
  315. data/lib/rubocop/cop/style/double_negation.rb +3 -2
  316. data/lib/rubocop/cop/style/each_for_simple_loop.rb +2 -2
  317. data/lib/rubocop/cop/style/each_with_object.rb +1 -0
  318. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  319. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  320. data/lib/rubocop/cop/style/empty_literal.rb +13 -8
  321. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  322. data/lib/rubocop/cop/style/end_block.rb +1 -2
  323. data/lib/rubocop/cop/style/endless_method.rb +2 -3
  324. data/lib/rubocop/cop/style/eval_with_location.rb +91 -31
  325. data/lib/rubocop/cop/style/even_odd.rb +1 -0
  326. data/lib/rubocop/cop/style/expand_path_arguments.rb +4 -3
  327. data/lib/rubocop/cop/style/explicit_block_argument.rb +3 -5
  328. data/lib/rubocop/cop/style/exponential_notation.rb +6 -7
  329. data/lib/rubocop/cop/style/float_division.rb +4 -0
  330. data/lib/rubocop/cop/style/format_string.rb +2 -0
  331. data/lib/rubocop/cop/style/format_string_token.rb +2 -4
  332. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  333. data/lib/rubocop/cop/style/global_std_stream.rb +1 -0
  334. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  335. data/lib/rubocop/cop/style/hash_conversion.rb +133 -0
  336. data/lib/rubocop/cop/style/hash_each_methods.rb +2 -2
  337. data/lib/rubocop/cop/style/hash_except.rb +1 -0
  338. data/lib/rubocop/cop/style/hash_like_case.rb +2 -2
  339. data/lib/rubocop/cop/style/hash_syntax.rb +20 -24
  340. data/lib/rubocop/cop/style/hash_transform_keys.rb +4 -0
  341. data/lib/rubocop/cop/style/hash_transform_values.rb +4 -0
  342. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  343. data/lib/rubocop/cop/style/if_unless_modifier.rb +41 -13
  344. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +2 -0
  345. data/lib/rubocop/cop/style/implicit_runtime_error.rb +1 -0
  346. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  347. data/lib/rubocop/cop/style/inverse_methods.rb +5 -7
  348. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  349. data/lib/rubocop/cop/style/lambda.rb +2 -4
  350. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  351. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  352. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +47 -3
  353. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +26 -16
  354. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  355. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  356. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  357. data/lib/rubocop/cop/style/min_max.rb +2 -2
  358. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  359. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  360. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  361. data/lib/rubocop/cop/style/mixin_usage.rb +3 -2
  362. data/lib/rubocop/cop/style/module_function.rb +8 -6
  363. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  364. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  365. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  366. data/lib/rubocop/cop/style/multiple_comparison.rb +22 -5
  367. data/lib/rubocop/cop/style/mutable_constant.rb +7 -10
  368. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  369. data/lib/rubocop/cop/style/negated_if_else_condition.rb +16 -2
  370. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  371. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  372. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  373. data/lib/rubocop/cop/style/next.rb +4 -9
  374. data/lib/rubocop/cop/style/nil_comparison.rb +3 -0
  375. data/lib/rubocop/cop/style/nil_lambda.rb +1 -0
  376. data/lib/rubocop/cop/style/non_nil_check.rb +9 -5
  377. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  378. data/lib/rubocop/cop/style/numeric_predicate.rb +5 -7
  379. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  380. data/lib/rubocop/cop/style/option_hash.rb +2 -3
  381. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  382. data/lib/rubocop/cop/style/or_assignment.rb +4 -6
  383. data/lib/rubocop/cop/style/parallel_assignment.rb +12 -9
  384. data/lib/rubocop/cop/style/parentheses_around_condition.rb +1 -0
  385. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  386. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  387. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  388. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  389. data/lib/rubocop/cop/style/proc.rb +2 -2
  390. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  391. data/lib/rubocop/cop/style/random_with_offset.rb +8 -8
  392. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  393. data/lib/rubocop/cop/style/redundant_assignment.rb +2 -3
  394. data/lib/rubocop/cop/style/redundant_begin.rb +47 -7
  395. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  396. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  397. data/lib/rubocop/cop/style/redundant_conditional.rb +5 -6
  398. data/lib/rubocop/cop/style/redundant_exception.rb +5 -6
  399. data/lib/rubocop/cop/style/redundant_fetch_block.rb +2 -0
  400. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +2 -1
  401. data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
  402. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  403. data/lib/rubocop/cop/style/redundant_parentheses.rb +21 -20
  404. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  405. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  406. data/lib/rubocop/cop/style/redundant_return.rb +6 -4
  407. data/lib/rubocop/cop/style/redundant_self.rb +9 -9
  408. data/lib/rubocop/cop/style/redundant_self_assignment.rb +4 -2
  409. data/lib/rubocop/cop/style/redundant_sort.rb +3 -5
  410. data/lib/rubocop/cop/style/redundant_sort_by.rb +1 -0
  411. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  412. data/lib/rubocop/cop/style/rescue_modifier.rb +21 -14
  413. data/lib/rubocop/cop/style/rescue_standard_error.rb +5 -7
  414. data/lib/rubocop/cop/style/return_nil.rb +7 -2
  415. data/lib/rubocop/cop/style/safe_navigation.rb +12 -21
  416. data/lib/rubocop/cop/style/sample.rb +1 -0
  417. data/lib/rubocop/cop/style/send.rb +1 -2
  418. data/lib/rubocop/cop/style/signal_exception.rb +6 -7
  419. data/lib/rubocop/cop/style/single_argument_dig.rb +2 -2
  420. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  421. data/lib/rubocop/cop/style/single_line_methods.rb +16 -4
  422. data/lib/rubocop/cop/style/slicing_with_range.rb +1 -0
  423. data/lib/rubocop/cop/style/sole_nested_conditional.rb +17 -2
  424. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  425. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  426. data/lib/rubocop/cop/style/stderr_puts.rb +3 -6
  427. data/lib/rubocop/cop/style/string_chars.rb +39 -0
  428. data/lib/rubocop/cop/style/string_concatenation.rb +9 -10
  429. data/lib/rubocop/cop/style/string_hash_keys.rb +2 -0
  430. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  431. data/lib/rubocop/cop/style/strip.rb +1 -0
  432. data/lib/rubocop/cop/style/struct_inheritance.rb +11 -0
  433. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  434. data/lib/rubocop/cop/style/symbol_proc.rb +29 -10
  435. data/lib/rubocop/cop/style/ternary_parentheses.rb +4 -6
  436. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +6 -2
  437. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  438. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +3 -6
  439. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  440. data/lib/rubocop/cop/style/trivial_accessors.rb +3 -4
  441. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  442. data/lib/rubocop/cop/style/unless_logical_operators.rb +105 -0
  443. data/lib/rubocop/cop/style/unpack_first.rb +1 -0
  444. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  445. data/lib/rubocop/cop/style/when_then.rb +1 -3
  446. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  447. data/lib/rubocop/cop/style/word_array.rb +1 -2
  448. data/lib/rubocop/cop/style/yoda_condition.rb +4 -11
  449. data/lib/rubocop/cop/style/zero_length_predicate.rb +6 -2
  450. data/lib/rubocop/cop/team.rb +2 -5
  451. data/lib/rubocop/cop/util.rb +8 -11
  452. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  453. data/lib/rubocop/cop/variable_force.rb +6 -15
  454. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  455. data/lib/rubocop/cop/variable_force/branch.rb +1 -2
  456. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  457. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  458. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  459. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  460. data/lib/rubocop/directive_comment.rb +69 -9
  461. data/lib/rubocop/ext/regexp_parser.rb +3 -6
  462. data/lib/rubocop/file_finder.rb +1 -3
  463. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  464. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  465. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  466. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  467. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  468. data/lib/rubocop/formatter/junit_formatter.rb +3 -9
  469. data/lib/rubocop/formatter/offense_count_formatter.rb +1 -1
  470. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  471. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  472. data/lib/rubocop/formatter/worst_offenders_formatter.rb +1 -1
  473. data/lib/rubocop/magic_comment.rb +1 -1
  474. data/lib/rubocop/name_similarity.rb +1 -1
  475. data/lib/rubocop/options.rb +27 -41
  476. data/lib/rubocop/path_util.rb +1 -3
  477. data/lib/rubocop/rake_task.rb +3 -0
  478. data/lib/rubocop/remote_config.rb +4 -7
  479. data/lib/rubocop/result_cache.rb +5 -12
  480. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  481. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  482. data/lib/rubocop/rspec/shared_contexts.rb +4 -15
  483. data/lib/rubocop/runner.rb +7 -14
  484. data/lib/rubocop/target_finder.rb +12 -16
  485. data/lib/rubocop/target_ruby.rb +25 -21
  486. data/lib/rubocop/version.rb +1 -1
  487. metadata +15 -9
  488. data/lib/rubocop/core_ext/hash.rb +0 -20
@@ -6,7 +6,7 @@ require 'tempfile'
6
6
  module CopHelper
7
7
  extend RSpec::SharedContext
8
8
 
9
- let(:ruby_version) { 2.4 }
9
+ let(:ruby_version) { 2.5 }
10
10
  let(:rails_version) { false }
11
11
 
12
12
  def inspect_source(source, file = nil)
@@ -118,8 +118,7 @@ module RuboCop
118
118
 
119
119
  @processed_source = parse_processed_source(source, file)
120
120
  @offenses = _investigate(cop, @processed_source)
121
- actual_annotations =
122
- expected_annotations.with_offense_annotations(@offenses)
121
+ actual_annotations = expected_annotations.with_offense_annotations(@offenses)
123
122
 
124
123
  expect(actual_annotations).to eq(expected_annotations), ''
125
124
  expect(@offenses.map(&:severity).uniq).to eq([severity]) if severity
@@ -152,8 +151,7 @@ module RuboCop
152
151
  end
153
152
 
154
153
  # Prepare for next loop
155
- @processed_source = parse_source(corrected_source,
156
- @processed_source.path)
154
+ @processed_source = parse_source(corrected_source, @processed_source.path)
157
155
  _investigate(cop, @processed_source)
158
156
  end
159
157
 
@@ -178,8 +176,7 @@ module RuboCop
178
176
  offenses = inspect_source(source, file)
179
177
 
180
178
  expected_annotations = AnnotatedSource.parse(source)
181
- actual_annotations =
182
- expected_annotations.with_offense_annotations(offenses)
179
+ actual_annotations = expected_annotations.with_offense_annotations(offenses)
183
180
  expect(actual_annotations.to_s).to eq(source)
184
181
  end
185
182
 
@@ -246,9 +243,7 @@ module RuboCop
246
243
  end
247
244
 
248
245
  def ==(other)
249
- other.is_a?(self.class) &&
250
- other.lines == lines &&
251
- match_annotations?(other)
246
+ other.is_a?(self.class) && other.lines == lines && match_annotations?(other)
252
247
  end
253
248
 
254
249
  # Dirty hack: expectations with [...] are rewritten when they match
@@ -27,9 +27,7 @@ RSpec.shared_context 'isolated environment', :isolated_environment do
27
27
  begin
28
28
  FileUtils.mkdir_p(working_dir)
29
29
 
30
- Dir.chdir(working_dir) do
31
- example.run
32
- end
30
+ Dir.chdir(working_dir) { example.run }
33
31
  ensure
34
32
  ENV['HOME'] = original_home
35
33
  ENV['XDG_CONFIG_HOME'] = original_xdg_config_home
@@ -41,9 +39,7 @@ RSpec.shared_context 'isolated environment', :isolated_environment do
41
39
  end
42
40
 
43
41
  RSpec.shared_context 'maintain registry', :restore_registry do
44
- around(:each) do |example|
45
- RuboCop::Cop::Registry.with_temporary_global { example.run }
46
- end
42
+ around(:each) { |example| RuboCop::Cop::Registry.with_temporary_global { example.run } }
47
43
 
48
44
  def stub_cop_class(name, inherit: RuboCop::Cop::Base, &block)
49
45
  klass = Class.new(inherit, &block)
@@ -100,15 +96,12 @@ RSpec.shared_context 'config', :config do # rubocop:disable Metrics/BlockLength
100
96
  end
101
97
 
102
98
  let(:config) do
103
- hash = { 'AllCops' => all_cops_config,
104
- cop_class.cop_name => cur_cop_config }.merge!(other_cops)
99
+ hash = { 'AllCops' => all_cops_config, cop_class.cop_name => cur_cop_config }.merge!(other_cops)
105
100
 
106
101
  RuboCop::Config.new(hash, "#{Dir.pwd}/.rubocop.yml")
107
102
  end
108
103
 
109
- let(:cop) do
110
- cop_class.new(config, cop_options)
111
- end
104
+ let(:cop) { cop_class.new(config, cop_options) }
112
105
  end
113
106
 
114
107
  RSpec.shared_context 'mock console output' do
@@ -123,10 +116,6 @@ RSpec.shared_context 'mock console output' do
123
116
  end
124
117
  end
125
118
 
126
- RSpec.shared_context 'ruby 2.4', :ruby24 do
127
- let(:ruby_version) { 2.4 }
128
- end
129
-
130
119
  RSpec.shared_context 'ruby 2.5', :ruby25 do
131
120
  let(:ruby_version) { 2.5 }
132
121
  end
@@ -112,9 +112,7 @@ module RuboCop
112
112
  end
113
113
 
114
114
  def list_files(paths)
115
- paths.each do |path|
116
- puts PathUtil.relative_path(path)
117
- end
115
+ paths.each { |path| puts PathUtil.relative_path(path) }
118
116
  end
119
117
 
120
118
  def process_file(file)
@@ -193,11 +191,10 @@ module RuboCop
193
191
 
194
192
  def redundant_cop_disable_directive(file)
195
193
  config = @config_store.for_file(file)
196
- if config.for_cop(Cop::Lint::RedundantCopDisableDirective)
197
- .fetch('Enabled')
198
- cop = Cop::Lint::RedundantCopDisableDirective.new(config, @options)
199
- yield cop if cop.relevant_file?(file)
200
- end
194
+ return unless config.for_cop(Cop::Lint::RedundantCopDisableDirective).fetch('Enabled')
195
+
196
+ cop = Cop::Lint::RedundantCopDisableDirective.new(config, @options)
197
+ yield cop if cop.relevant_file?(file)
201
198
  end
202
199
 
203
200
  def filtered_run?
@@ -206,9 +203,7 @@ module RuboCop
206
203
 
207
204
  def file_started(file)
208
205
  puts "Scanning #{file}" if @options[:debug]
209
- formatter_set.file_started(file,
210
- cli_options: @options,
211
- config_store: @config_store)
206
+ formatter_set.file_started(file, cli_options: @options, config_store: @config_store)
212
207
  end
213
208
 
214
209
  def file_finished(file, offenses)
@@ -372,9 +367,7 @@ module RuboCop
372
367
  @formatter_set ||= begin
373
368
  set = Formatter::FormatterSet.new(@options)
374
369
  pairs = @options[:formatters] || [['progress']]
375
- pairs.each do |formatter_key, output_path|
376
- set.add_formatter(formatter_key, output_path)
377
- end
370
+ pairs.each { |formatter_key, output_path| set.add_formatter(formatter_key, output_path) }
378
371
  set
379
372
  end
380
373
  end
@@ -61,9 +61,7 @@ module RuboCop
61
61
  hidden_files = all_files.select { |file| file.include?(HIDDEN_PATH_SUBSTRING) }.sort
62
62
  base_dir_config = @config_store.for(base_dir)
63
63
 
64
- target_files = all_files.select do |file|
65
- to_inspect?(file, hidden_files, base_dir_config)
66
- end
64
+ target_files = all_files.select { |file| to_inspect?(file, hidden_files, base_dir_config) }
67
65
 
68
66
  target_files.sort_by!(&order)
69
67
  end
@@ -96,12 +94,16 @@ module RuboCop
96
94
  end
97
95
 
98
96
  def wanted_dir_patterns(base_dir, exclude_pattern, flags)
97
+ base_dir = base_dir.gsub('/{}/', '/\{}/')
99
98
  dirs = Dir.glob(File.join(base_dir.gsub('/**/', '/\**/'), '*/'), flags)
100
99
  .reject do |dir|
101
- dir.end_with?('/./', '/../') || File.fnmatch?(exclude_pattern, dir, flags)
100
+ next true if dir.end_with?('/./', '/../')
101
+ next true if File.fnmatch?(exclude_pattern, dir, flags)
102
+
103
+ File.symlink?(dir.chomp('/')) && File.fnmatch?(exclude_pattern,
104
+ "#{File.realpath(dir)}/", flags)
102
105
  end
103
- dirs.flat_map { |dir| wanted_dir_patterns(dir, exclude_pattern, flags) }
104
- .unshift(base_dir)
106
+ dirs.flat_map { |dir| wanted_dir_patterns(dir, exclude_pattern, flags) }.unshift(base_dir)
105
107
  end
106
108
 
107
109
  def combined_exclude_glob_patterns(base_dir)
@@ -117,9 +119,7 @@ module RuboCop
117
119
 
118
120
  def ruby_extensions
119
121
  @ruby_extensions ||= begin
120
- ext_patterns = all_cops_include.select do |pattern|
121
- pattern.start_with?('**/*.')
122
- end
122
+ ext_patterns = all_cops_include.select { |pattern| pattern.start_with?('**/*.') }
123
123
  ext_patterns.map { |pattern| pattern.sub('**/*', '') }
124
124
  end
125
125
  end
@@ -130,16 +130,13 @@ module RuboCop
130
130
 
131
131
  def ruby_filenames
132
132
  @ruby_filenames ||= begin
133
- file_patterns = all_cops_include.reject do |pattern|
134
- pattern.start_with?('**/*.')
135
- end
133
+ file_patterns = all_cops_include.reject { |pattern| pattern.start_with?('**/*.') }
136
134
  file_patterns.map { |pattern| pattern.sub('**/', '') }
137
135
  end
138
136
  end
139
137
 
140
138
  def all_cops_include
141
- @all_cops_include ||=
142
- @config_store.for_pwd.for_all_cops['Include'].map(&:to_s)
139
+ @all_cops_include ||= @config_store.for_pwd.for_all_cops['Include'].map(&:to_s)
143
140
  end
144
141
 
145
142
  def ruby_executable?(file)
@@ -162,8 +159,7 @@ module RuboCop
162
159
  end
163
160
 
164
161
  def ruby_file?(file)
165
- stdin? || ruby_extension?(file) || ruby_filename?(file) ||
166
- ruby_executable?(file)
162
+ stdin? || ruby_extension?(file) || ruby_filename?(file) || ruby_executable?(file)
167
163
  end
168
164
 
169
165
  def configured_include?(file)
@@ -4,11 +4,11 @@ module RuboCop
4
4
  # The kind of Ruby that code inspected by RuboCop is written in.
5
5
  # @api private
6
6
  class TargetRuby
7
- KNOWN_RUBIES = [2.4, 2.5, 2.6, 2.7, 3.0].freeze
7
+ KNOWN_RUBIES = [2.5, 2.6, 2.7, 3.0].freeze
8
8
  DEFAULT_VERSION = KNOWN_RUBIES.first
9
9
 
10
10
  OBSOLETE_RUBIES = {
11
- 1.9 => '0.41', 2.0 => '0.50', 2.1 => '0.57', 2.2 => '0.68', 2.3 => '0.81'
11
+ 1.9 => '0.41', 2.0 => '0.50', 2.1 => '0.57', 2.2 => '0.68', 2.3 => '0.81', 2.4 => '1.12'
12
12
  }.freeze
13
13
  private_constant :KNOWN_RUBIES, :OBSOLETE_RUBIES
14
14
 
@@ -65,15 +65,11 @@ module RuboCop
65
65
  file = version_file
66
66
  return unless file && File.file?(file)
67
67
 
68
- File.read(file).match(pattern) do |md|
69
- md[:version].to_f
70
- end
68
+ File.read(file).match(pattern) { |md| md[:version].to_f }
71
69
  end
72
70
 
73
71
  def version_file
74
- @version_file ||=
75
- @config.find_file_upwards(filename,
76
- @config.base_dir_for_path_parameters)
72
+ @version_file ||= @config.find_file_upwards(filename, @config.base_dir_for_path_parameters)
77
73
  end
78
74
  end
79
75
 
@@ -147,10 +143,12 @@ module RuboCop
147
143
 
148
144
  GEMSPEC_EXTENSION = '.gemspec'
149
145
 
146
+ # @!method required_ruby_version(node)
150
147
  def_node_search :required_ruby_version, <<~PATTERN
151
148
  (send _ :required_ruby_version= $_)
152
149
  PATTERN
153
150
 
151
+ # @!method gem_requirement?(node)
154
152
  def_node_matcher :gem_requirement?, <<~PATTERN
155
153
  (send (const(const _ :Gem):Requirement) :new $str)
156
154
  PATTERN
@@ -165,14 +163,10 @@ module RuboCop
165
163
  file = gemspec_filepath
166
164
  return unless file && File.file?(file)
167
165
 
168
- version = version_from_gemspec_file(file)
169
- return if version.nil?
170
-
171
- requirement = version.children.last
172
- return version_from_array(version) if version.array_type?
173
- return version_from_array(requirement) if gem_requirement? version
166
+ right_hand_side = version_from_gemspec_file(file)
167
+ return if right_hand_side.nil?
174
168
 
175
- version_from_str(version.str_content)
169
+ find_minimal_known_ruby(right_hand_side)
176
170
  end
177
171
 
178
172
  def gemspec_filename
@@ -192,15 +186,25 @@ module RuboCop
192
186
  required_ruby_version(processed_source.ast).first
193
187
  end
194
188
 
189
+ def version_from_right_hand_side(right_hand_side)
190
+ if right_hand_side.array_type?
191
+ version_from_array(right_hand_side)
192
+ elsif gem_requirement?(right_hand_side)
193
+ right_hand_side.children.last.value
194
+ else
195
+ right_hand_side.value
196
+ end
197
+ end
198
+
195
199
  def version_from_array(array)
196
- versions = array.children.map { |v| version_from_str(v.is_a?(String) ? v : v.str_content) }
197
- versions.compact.min
200
+ array.children.map(&:value)
198
201
  end
199
202
 
200
- def version_from_str(str)
201
- str.match(/^(?:>=|<=)?\s*(?<version>\d+(?:\.\d+)*)/) do |md|
202
- md[:version].to_f
203
- end
203
+ def find_minimal_known_ruby(right_hand_side)
204
+ version = version_from_right_hand_side(right_hand_side)
205
+ requirement = Gem::Requirement.new(version)
206
+
207
+ KNOWN_RUBIES.detect { |v| requirement.satisfied_by?(Gem::Version.new("#{v}.99")) }
204
208
  end
205
209
  end
206
210
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.9.1'
6
+ STRING = '1.13.0'
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, '\
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
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: 1.9.1
4
+ version: 1.13.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: 2021-02-01 00:00:00.000000000 Z
13
+ date: 2021-04-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: parallel
@@ -244,6 +244,7 @@ files:
244
244
  - lib/rubocop/cop/documentation.rb
245
245
  - lib/rubocop/cop/exclude_limit.rb
246
246
  - lib/rubocop/cop/force.rb
247
+ - lib/rubocop/cop/gemspec/date_assignment.rb
247
248
  - lib/rubocop/cop/gemspec/duplicated_assignment.rb
248
249
  - lib/rubocop/cop/gemspec/ordered_dependencies.rb
249
250
  - lib/rubocop/cop/gemspec/required_ruby_version.rb
@@ -257,6 +258,7 @@ files:
257
258
  - lib/rubocop/cop/internal_affairs/example_description.rb
258
259
  - lib/rubocop/cop/internal_affairs/method_name_equal.rb
259
260
  - lib/rubocop/cop/internal_affairs/node_destructuring.rb
261
+ - lib/rubocop/cop/internal_affairs/node_matcher_directive.rb
260
262
  - lib/rubocop/cop/internal_affairs/node_type_predicate.rb
261
263
  - lib/rubocop/cop/internal_affairs/offense_location_keyword.rb
262
264
  - lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb
@@ -329,6 +331,7 @@ files:
329
331
  - lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb
330
332
  - lib/rubocop/cop/layout/multiline_operation_indentation.rb
331
333
  - lib/rubocop/cop/layout/parameter_alignment.rb
334
+ - lib/rubocop/cop/layout/redundant_line_break.rb
332
335
  - lib/rubocop/cop/layout/rescue_ensure_alignment.rb
333
336
  - lib/rubocop/cop/layout/space_after_colon.rb
334
337
  - lib/rubocop/cop/layout/space_after_comma.rb
@@ -599,6 +602,7 @@ files:
599
602
  - lib/rubocop/cop/style/bare_percent_literals.rb
600
603
  - lib/rubocop/cop/style/begin_block.rb
601
604
  - lib/rubocop/cop/style/bisected_attr_accessor.rb
605
+ - lib/rubocop/cop/style/bisected_attr_accessor/macro.rb
602
606
  - lib/rubocop/cop/style/block_comments.rb
603
607
  - lib/rubocop/cop/style/block_delimiters.rb
604
608
  - lib/rubocop/cop/style/case_equality.rb
@@ -655,6 +659,7 @@ files:
655
659
  - lib/rubocop/cop/style/global_vars.rb
656
660
  - lib/rubocop/cop/style/guard_clause.rb
657
661
  - lib/rubocop/cop/style/hash_as_last_array_item.rb
662
+ - lib/rubocop/cop/style/hash_conversion.rb
658
663
  - lib/rubocop/cop/style/hash_each_methods.rb
659
664
  - lib/rubocop/cop/style/hash_except.rb
660
665
  - lib/rubocop/cop/style/hash_like_case.rb
@@ -765,6 +770,7 @@ files:
765
770
  - lib/rubocop/cop/style/stabby_lambda_parentheses.rb
766
771
  - lib/rubocop/cop/style/static_class.rb
767
772
  - lib/rubocop/cop/style/stderr_puts.rb
773
+ - lib/rubocop/cop/style/string_chars.rb
768
774
  - lib/rubocop/cop/style/string_concatenation.rb
769
775
  - lib/rubocop/cop/style/string_hash_keys.rb
770
776
  - lib/rubocop/cop/style/string_literals.rb
@@ -788,6 +794,7 @@ files:
788
794
  - lib/rubocop/cop/style/trailing_underscore_variable.rb
789
795
  - lib/rubocop/cop/style/trivial_accessors.rb
790
796
  - lib/rubocop/cop/style/unless_else.rb
797
+ - lib/rubocop/cop/style/unless_logical_operators.rb
791
798
  - lib/rubocop/cop/style/unpack_first.rb
792
799
  - lib/rubocop/cop/style/variable_interpolation.rb
793
800
  - lib/rubocop/cop/style/when_then.rb
@@ -808,7 +815,6 @@ files:
808
815
  - lib/rubocop/cop/variable_force/variable.rb
809
816
  - lib/rubocop/cop/variable_force/variable_table.rb
810
817
  - lib/rubocop/cops_documentation_generator.rb
811
- - lib/rubocop/core_ext/hash.rb
812
818
  - lib/rubocop/core_ext/string.rb
813
819
  - lib/rubocop/directive_comment.rb
814
820
  - lib/rubocop/error.rb
@@ -859,15 +865,15 @@ files:
859
865
  - lib/rubocop/version.rb
860
866
  - lib/rubocop/warning.rb
861
867
  - lib/rubocop/yaml_duplication_checker.rb
862
- homepage: https://github.com/rubocop-hq/rubocop
868
+ homepage: https://github.com/rubocop/rubocop
863
869
  licenses:
864
870
  - MIT
865
871
  metadata:
866
872
  homepage_uri: https://rubocop.org/
867
- changelog_uri: https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md
868
- source_code_uri: https://github.com/rubocop-hq/rubocop/
869
- documentation_uri: https://docs.rubocop.org/rubocop/1.9/
870
- bug_tracker_uri: https://github.com/rubocop-hq/rubocop/issues
873
+ changelog_uri: https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md
874
+ source_code_uri: https://github.com/rubocop/rubocop/
875
+ documentation_uri: https://docs.rubocop.org/rubocop/1.13/
876
+ bug_tracker_uri: https://github.com/rubocop/rubocop/issues
871
877
  post_install_message:
872
878
  rdoc_options: []
873
879
  require_paths:
@@ -876,7 +882,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
876
882
  requirements:
877
883
  - - ">="
878
884
  - !ruby/object:Gem::Version
879
- version: 2.4.0
885
+ version: 2.5.0
880
886
  required_rubygems_version: !ruby/object:Gem::Requirement
881
887
  requirements:
882
888
  - - ">="
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Extensions to the core Hash class
4
- class Hash
5
- unless method_defined?(:slice)
6
- # Adds `Hash#slice` for Ruby 2.4.
7
- # Returns a hash containing a subset of keys. If a given key is not
8
- # in the hash, it will not be returned.
9
- #
10
- # @return [Hash] hash containing only the keys given.
11
- #
12
- # @example
13
- # { one: 1, two: 2 }.slice(:two, :three) #=> { two: 2 }
14
- def slice(*keys)
15
- h = {}
16
- keys.each { |k| h[k] = self[k] if key?(k) }
17
- h
18
- end
19
- end
20
- end