rubocop 1.12.0 → 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 (401) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/config/default.yml +10 -0
  4. data/exe/rubocop +1 -3
  5. data/lib/rubocop.rb +1 -1
  6. data/lib/rubocop/cached_data.rb +1 -3
  7. data/lib/rubocop/cli.rb +4 -6
  8. data/lib/rubocop/cli/command/auto_genenerate_config.rb +9 -19
  9. data/lib/rubocop/cli/command/init_dotfile.rb +1 -3
  10. data/lib/rubocop/cli/command/show_cops.rb +1 -4
  11. data/lib/rubocop/comment_config.rb +2 -7
  12. data/lib/rubocop/config.rb +11 -26
  13. data/lib/rubocop/config_loader.rb +5 -11
  14. data/lib/rubocop/config_loader_resolver.rb +22 -14
  15. data/lib/rubocop/config_obsoletion/cop_rule.rb +1 -2
  16. data/lib/rubocop/config_store.rb +1 -2
  17. data/lib/rubocop/config_validator.rb +5 -10
  18. data/lib/rubocop/cop/autocorrect_logic.rb +3 -8
  19. data/lib/rubocop/cop/badge.rb +1 -2
  20. data/lib/rubocop/cop/base.rb +8 -6
  21. data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -2
  22. data/lib/rubocop/cop/bundler/gem_comment.rb +42 -8
  23. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -4
  24. data/lib/rubocop/cop/commissioner.rb +2 -8
  25. data/lib/rubocop/cop/cop.rb +4 -18
  26. data/lib/rubocop/cop/corrector.rb +1 -4
  27. data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
  28. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +2 -4
  29. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +1 -2
  30. data/lib/rubocop/cop/correctors/line_break_corrector.rb +3 -6
  31. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -3
  32. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +1 -3
  33. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +2 -8
  34. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -2
  35. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -4
  36. data/lib/rubocop/cop/generator.rb +1 -4
  37. data/lib/rubocop/cop/generator/configuration_injector.rb +1 -2
  38. data/lib/rubocop/cop/generator/require_file_injector.rb +2 -5
  39. data/lib/rubocop/cop/internal_affairs/example_description.rb +6 -4
  40. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +2 -5
  41. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +1 -3
  42. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +1 -3
  43. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -2
  44. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +1 -2
  45. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -3
  46. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -2
  47. data/lib/rubocop/cop/layout/argument_alignment.rb +2 -4
  48. data/lib/rubocop/cop/layout/assignment_indentation.rb +2 -4
  49. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -4
  50. data/lib/rubocop/cop/layout/block_alignment.rb +7 -19
  51. data/lib/rubocop/cop/layout/case_indentation.rb +1 -3
  52. data/lib/rubocop/cop/layout/class_structure.rb +4 -10
  53. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -15
  54. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -5
  55. data/lib/rubocop/cop/layout/def_end_alignment.rb +2 -6
  56. data/lib/rubocop/cop/layout/dot_position.rb +1 -3
  57. data/lib/rubocop/cop/layout/else_alignment.rb +1 -3
  58. data/lib/rubocop/cop/layout/empty_comment.rb +5 -12
  59. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +22 -8
  60. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -6
  61. data/lib/rubocop/cop/layout/empty_lines.rb +1 -3
  62. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +8 -18
  63. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -8
  64. data/lib/rubocop/cop/layout/end_alignment.rb +1 -2
  65. data/lib/rubocop/cop/layout/end_of_line.rb +1 -1
  66. data/lib/rubocop/cop/layout/extra_spacing.rb +3 -7
  67. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -2
  68. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -2
  69. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -5
  70. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -2
  71. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -2
  72. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +1 -2
  73. data/lib/rubocop/cop/layout/hash_alignment.rb +3 -6
  74. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -9
  75. data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -6
  76. data/lib/rubocop/cop/layout/indentation_style.rb +1 -3
  77. data/lib/rubocop/cop/layout/indentation_width.rb +1 -2
  78. data/lib/rubocop/cop/layout/initial_indentation.rb +1 -4
  79. data/lib/rubocop/cop/layout/line_length.rb +4 -15
  80. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +1 -2
  81. data/lib/rubocop/cop/layout/multiline_block_layout.rb +7 -15
  82. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -2
  83. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -2
  84. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +16 -10
  85. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +4 -0
  86. data/lib/rubocop/cop/layout/redundant_line_break.rb +125 -0
  87. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -6
  88. data/lib/rubocop/cop/layout/space_after_colon.rb +1 -3
  89. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -4
  90. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +6 -14
  91. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +1 -2
  92. data/lib/rubocop/cop/layout/space_around_keyword.rb +3 -6
  93. data/lib/rubocop/cop/layout/space_around_operators.rb +4 -9
  94. data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -2
  95. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -3
  96. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  97. data/lib/rubocop/cop/layout/space_before_first_arg.rb +5 -11
  98. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +2 -4
  99. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -10
  100. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +2 -7
  101. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -10
  102. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -2
  103. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -2
  104. data/lib/rubocop/cop/legacy/corrections_proxy.rb +2 -8
  105. data/lib/rubocop/cop/legacy/corrector.rb +1 -3
  106. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +1 -6
  107. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +14 -7
  108. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -2
  109. data/lib/rubocop/cop/lint/constant_resolution.rb +1 -2
  110. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +2 -4
  111. data/lib/rubocop/cop/lint/deprecated_constants.rb +3 -3
  112. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +2 -5
  113. data/lib/rubocop/cop/lint/duplicate_branch.rb +1 -2
  114. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +1 -3
  115. data/lib/rubocop/cop/lint/duplicate_methods.rb +3 -7
  116. data/lib/rubocop/cop/lint/else_layout.rb +1 -3
  117. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -3
  118. data/lib/rubocop/cop/lint/empty_file.rb +1 -3
  119. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -3
  120. data/lib/rubocop/cop/lint/ensure_return.rb +1 -3
  121. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
  122. data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -2
  123. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +3 -6
  124. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -2
  125. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -2
  126. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +3 -7
  127. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -2
  128. data/lib/rubocop/cop/lint/interpolation_check.rb +3 -11
  129. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +3 -6
  130. data/lib/rubocop/cop/lint/loop.rb +1 -2
  131. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +3 -7
  132. data/lib/rubocop/cop/lint/missing_super.rb +1 -2
  133. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -2
  134. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -2
  135. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -3
  136. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -3
  137. data/lib/rubocop/cop/lint/number_conversion.rb +3 -4
  138. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +1 -2
  139. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +1 -3
  140. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -3
  141. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -3
  142. data/lib/rubocop/cop/lint/raise_exception.rb +1 -2
  143. data/lib/rubocop/cop/lint/rand_one.rb +1 -2
  144. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +8 -20
  145. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +1 -3
  146. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +3 -7
  147. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -2
  148. data/lib/rubocop/cop/lint/redundant_with_index.rb +1 -4
  149. data/lib/rubocop/cop/lint/redundant_with_object.rb +1 -4
  150. data/lib/rubocop/cop/lint/regexp_as_condition.rb +1 -3
  151. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -4
  152. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -2
  153. data/lib/rubocop/cop/lint/rescue_type.rb +2 -7
  154. data/lib/rubocop/cop/lint/return_in_void_context.rb +1 -2
  155. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -2
  156. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +4 -10
  157. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +1 -2
  158. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +2 -7
  159. data/lib/rubocop/cop/lint/shadowed_argument.rb +4 -11
  160. data/lib/rubocop/cop/lint/shadowed_exception.rb +7 -8
  161. data/lib/rubocop/cop/lint/struct_new_override.rb +1 -2
  162. data/lib/rubocop/cop/lint/symbol_conversion.rb +2 -4
  163. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  164. data/lib/rubocop/cop/lint/to_json.rb +1 -2
  165. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -3
  166. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +1 -3
  167. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -5
  168. data/lib/rubocop/cop/lint/unreachable_loop.rb +2 -5
  169. data/lib/rubocop/cop/lint/unused_block_argument.rb +4 -8
  170. data/lib/rubocop/cop/lint/unused_method_argument.rb +1 -2
  171. data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -4
  172. data/lib/rubocop/cop/lint/useless_assignment.rb +4 -9
  173. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -3
  174. data/lib/rubocop/cop/lint/void.rb +4 -11
  175. data/lib/rubocop/cop/message_annotator.rb +1 -3
  176. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -7
  177. data/lib/rubocop/cop/metrics/class_length.rb +1 -3
  178. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -2
  179. data/lib/rubocop/cop/metrics/module_length.rb +2 -6
  180. data/lib/rubocop/cop/metrics/parameter_lists.rb +2 -5
  181. data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -2
  182. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +4 -7
  183. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +2 -7
  184. data/lib/rubocop/cop/migration/department_name.rb +3 -7
  185. data/lib/rubocop/cop/mixin/alignment.rb +2 -4
  186. data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
  187. data/lib/rubocop/cop/mixin/code_length.rb +1 -3
  188. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +2 -2
  189. data/lib/rubocop/cop/mixin/configurable_formatting.rb +3 -8
  190. data/lib/rubocop/cop/mixin/def_node.rb +2 -5
  191. data/lib/rubocop/cop/mixin/documentation_comment.rb +2 -5
  192. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +3 -7
  193. data/lib/rubocop/cop/mixin/empty_parameter.rb +1 -3
  194. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -3
  195. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -6
  196. data/lib/rubocop/cop/mixin/first_element_line_break.rb +1 -3
  197. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +3 -9
  198. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +3 -6
  199. data/lib/rubocop/cop/mixin/hash_transform_method.rb +7 -22
  200. data/lib/rubocop/cop/mixin/interpolation.rb +1 -3
  201. data/lib/rubocop/cop/mixin/line_length_help.rb +2 -4
  202. data/lib/rubocop/cop/mixin/match_range.rb +2 -5
  203. data/lib/rubocop/cop/mixin/method_complexity.rb +1 -3
  204. data/lib/rubocop/cop/mixin/method_preference.rb +1 -2
  205. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -2
  206. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +1 -3
  207. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +7 -37
  208. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +1 -2
  209. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -2
  210. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +1 -4
  211. data/lib/rubocop/cop/mixin/percent_array.rb +1 -3
  212. data/lib/rubocop/cop/mixin/percent_literal.rb +0 -6
  213. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +5 -11
  214. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +3 -6
  215. data/lib/rubocop/cop/mixin/range_help.rb +10 -13
  216. data/lib/rubocop/cop/mixin/rescue_node.rb +2 -6
  217. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -2
  218. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +2 -4
  219. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -2
  220. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -3
  221. data/lib/rubocop/cop/mixin/trailing_body.rb +1 -2
  222. data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -2
  223. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +3 -7
  224. data/lib/rubocop/cop/mixin/unused_argument.rb +1 -3
  225. data/lib/rubocop/cop/naming/ascii_identifiers.rb +2 -4
  226. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -2
  227. data/lib/rubocop/cop/naming/file_name.rb +7 -16
  228. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +2 -3
  229. data/lib/rubocop/cop/naming/method_name.rb +1 -2
  230. data/lib/rubocop/cop/naming/predicate_name.rb +1 -2
  231. data/lib/rubocop/cop/offense.rb +3 -8
  232. data/lib/rubocop/cop/registry.rb +3 -11
  233. data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -4
  234. data/lib/rubocop/cop/style/accessor_grouping.rb +1 -3
  235. data/lib/rubocop/cop/style/alias.rb +5 -12
  236. data/lib/rubocop/cop/style/and_or.rb +3 -1
  237. data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -3
  238. data/lib/rubocop/cop/style/ascii_comments.rb +1 -2
  239. data/lib/rubocop/cop/style/attr.rb +1 -3
  240. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +2 -5
  241. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +1 -3
  242. data/lib/rubocop/cop/style/case_like_if.rb +1 -2
  243. data/lib/rubocop/cop/style/character_literal.rb +2 -4
  244. data/lib/rubocop/cop/style/class_and_module_children.rb +3 -6
  245. data/lib/rubocop/cop/style/class_methods.rb +1 -3
  246. data/lib/rubocop/cop/style/collection_compact.rb +1 -3
  247. data/lib/rubocop/cop/style/colon_method_call.rb +1 -3
  248. data/lib/rubocop/cop/style/combinable_loops.rb +3 -2
  249. data/lib/rubocop/cop/style/command_literal.rb +3 -8
  250. data/lib/rubocop/cop/style/comment_annotation.rb +3 -6
  251. data/lib/rubocop/cop/style/commented_keyword.rb +7 -13
  252. data/lib/rubocop/cop/style/conditional_assignment.rb +10 -24
  253. data/lib/rubocop/cop/style/copyright.rb +3 -6
  254. data/lib/rubocop/cop/style/date_time.rb +2 -5
  255. data/lib/rubocop/cop/style/def_with_parentheses.rb +1 -2
  256. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -2
  257. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -7
  258. data/lib/rubocop/cop/style/empty_else.rb +3 -9
  259. data/lib/rubocop/cop/style/empty_literal.rb +4 -8
  260. data/lib/rubocop/cop/style/empty_method.rb +3 -7
  261. data/lib/rubocop/cop/style/end_block.rb +1 -2
  262. data/lib/rubocop/cop/style/endless_method.rb +1 -3
  263. data/lib/rubocop/cop/style/eval_with_location.rb +2 -4
  264. data/lib/rubocop/cop/style/expand_path_arguments.rb +1 -3
  265. data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -4
  266. data/lib/rubocop/cop/style/format_string_token.rb +1 -4
  267. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -11
  268. data/lib/rubocop/cop/style/guard_clause.rb +3 -7
  269. data/lib/rubocop/cop/style/hash_conversion.rb +31 -3
  270. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -2
  271. data/lib/rubocop/cop/style/hash_like_case.rb +1 -2
  272. data/lib/rubocop/cop/style/hash_syntax.rb +4 -9
  273. data/lib/rubocop/cop/style/identical_conditional_branches.rb +1 -3
  274. data/lib/rubocop/cop/style/if_unless_modifier.rb +41 -13
  275. data/lib/rubocop/cop/style/infinite_loop.rb +2 -5
  276. data/lib/rubocop/cop/style/inverse_methods.rb +3 -7
  277. data/lib/rubocop/cop/style/ip_addresses.rb +1 -2
  278. data/lib/rubocop/cop/style/lambda.rb +2 -4
  279. data/lib/rubocop/cop/style/lambda_call.rb +1 -2
  280. data/lib/rubocop/cop/style/line_end_concatenation.rb +5 -12
  281. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +7 -3
  282. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +10 -18
  283. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -2
  284. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
  285. data/lib/rubocop/cop/style/method_def_parentheses.rb +4 -8
  286. data/lib/rubocop/cop/style/min_max.rb +1 -2
  287. data/lib/rubocop/cop/style/missing_else.rb +2 -4
  288. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +1 -2
  289. data/lib/rubocop/cop/style/mixin_grouping.rb +4 -10
  290. data/lib/rubocop/cop/style/mixin_usage.rb +1 -2
  291. data/lib/rubocop/cop/style/module_function.rb +3 -6
  292. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -2
  293. data/lib/rubocop/cop/style/multiline_method_signature.rb +11 -6
  294. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -2
  295. data/lib/rubocop/cop/style/multiple_comparison.rb +2 -4
  296. data/lib/rubocop/cop/style/mutable_constant.rb +4 -10
  297. data/lib/rubocop/cop/style/negated_if.rb +1 -2
  298. data/lib/rubocop/cop/style/negated_unless.rb +1 -2
  299. data/lib/rubocop/cop/style/nested_modifier.rb +3 -7
  300. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -3
  301. data/lib/rubocop/cop/style/next.rb +4 -9
  302. data/lib/rubocop/cop/style/non_nil_check.rb +2 -5
  303. data/lib/rubocop/cop/style/numeric_literals.rb +3 -11
  304. data/lib/rubocop/cop/style/numeric_predicate.rb +2 -7
  305. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -2
  306. data/lib/rubocop/cop/style/option_hash.rb +1 -3
  307. data/lib/rubocop/cop/style/optional_arguments.rb +2 -5
  308. data/lib/rubocop/cop/style/or_assignment.rb +2 -6
  309. data/lib/rubocop/cop/style/parallel_assignment.rb +6 -9
  310. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -3
  311. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -2
  312. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -9
  313. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -4
  314. data/lib/rubocop/cop/style/proc.rb +1 -2
  315. data/lib/rubocop/cop/style/raise_args.rb +4 -8
  316. data/lib/rubocop/cop/style/random_with_offset.rb +3 -8
  317. data/lib/rubocop/cop/style/redundant_argument.rb +2 -11
  318. data/lib/rubocop/cop/style/redundant_assignment.rb +1 -3
  319. data/lib/rubocop/cop/style/redundant_begin.rb +15 -4
  320. data/lib/rubocop/cop/style/redundant_capital_w.rb +1 -2
  321. data/lib/rubocop/cop/style/redundant_condition.rb +2 -5
  322. data/lib/rubocop/cop/style/redundant_conditional.rb +3 -6
  323. data/lib/rubocop/cop/style/redundant_exception.rb +3 -6
  324. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +1 -1
  325. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -2
  326. data/lib/rubocop/cop/style/redundant_interpolation.rb +1 -2
  327. data/lib/rubocop/cop/style/redundant_parentheses.rb +8 -20
  328. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -2
  329. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -4
  330. data/lib/rubocop/cop/style/redundant_return.rb +3 -5
  331. data/lib/rubocop/cop/style/redundant_self.rb +2 -6
  332. data/lib/rubocop/cop/style/redundant_self_assignment.rb +2 -2
  333. data/lib/rubocop/cop/style/redundant_sort.rb +2 -5
  334. data/lib/rubocop/cop/style/regexp_literal.rb +4 -8
  335. data/lib/rubocop/cop/style/rescue_modifier.rb +4 -0
  336. data/lib/rubocop/cop/style/rescue_standard_error.rb +3 -7
  337. data/lib/rubocop/cop/style/return_nil.rb +1 -2
  338. data/lib/rubocop/cop/style/safe_navigation.rb +10 -21
  339. data/lib/rubocop/cop/style/send.rb +1 -2
  340. data/lib/rubocop/cop/style/signal_exception.rb +3 -7
  341. data/lib/rubocop/cop/style/single_argument_dig.rb +1 -2
  342. data/lib/rubocop/cop/style/single_line_block_params.rb +2 -5
  343. data/lib/rubocop/cop/style/single_line_methods.rb +16 -4
  344. data/lib/rubocop/cop/style/sole_nested_conditional.rb +1 -2
  345. data/lib/rubocop/cop/style/special_global_vars.rb +6 -18
  346. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -2
  347. data/lib/rubocop/cop/style/stderr_puts.rb +2 -6
  348. data/lib/rubocop/cop/style/string_chars.rb +2 -1
  349. data/lib/rubocop/cop/style/string_concatenation.rb +8 -10
  350. data/lib/rubocop/cop/style/string_literals.rb +2 -5
  351. data/lib/rubocop/cop/style/struct_inheritance.rb +9 -1
  352. data/lib/rubocop/cop/style/symbol_literal.rb +1 -3
  353. data/lib/rubocop/cop/style/symbol_proc.rb +4 -9
  354. data/lib/rubocop/cop/style/ternary_parentheses.rb +3 -6
  355. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +1 -2
  356. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +2 -6
  357. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +2 -5
  358. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +4 -10
  359. data/lib/rubocop/cop/style/trivial_accessors.rb +2 -4
  360. data/lib/rubocop/cop/style/unless_else.rb +1 -2
  361. data/lib/rubocop/cop/style/unless_logical_operators.rb +2 -2
  362. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  363. data/lib/rubocop/cop/style/when_then.rb +1 -3
  364. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -2
  365. data/lib/rubocop/cop/style/word_array.rb +1 -2
  366. data/lib/rubocop/cop/style/yoda_condition.rb +3 -11
  367. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -2
  368. data/lib/rubocop/cop/team.rb +2 -5
  369. data/lib/rubocop/cop/util.rb +8 -11
  370. data/lib/rubocop/cop/utils/format_string.rb +1 -3
  371. data/lib/rubocop/cop/variable_force.rb +6 -15
  372. data/lib/rubocop/cop/variable_force/assignment.rb +1 -2
  373. data/lib/rubocop/cop/variable_force/branch.rb +1 -2
  374. data/lib/rubocop/cop/variable_force/reference.rb +1 -3
  375. data/lib/rubocop/cop/variable_force/scope.rb +4 -8
  376. data/lib/rubocop/cop/variable_force/variable.rb +2 -4
  377. data/lib/rubocop/cops_documentation_generator.rb +7 -21
  378. data/lib/rubocop/directive_comment.rb +5 -0
  379. data/lib/rubocop/file_finder.rb +1 -3
  380. data/lib/rubocop/formatter/clang_style_formatter.rb +4 -2
  381. data/lib/rubocop/formatter/disabled_config_formatter.rb +3 -8
  382. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -5
  383. data/lib/rubocop/formatter/html_formatter.rb +4 -10
  384. data/lib/rubocop/formatter/json_formatter.rb +1 -5
  385. data/lib/rubocop/formatter/junit_formatter.rb +3 -9
  386. data/lib/rubocop/formatter/progress_formatter.rb +1 -3
  387. data/lib/rubocop/formatter/tap_formatter.rb +4 -2
  388. data/lib/rubocop/options.rb +27 -41
  389. data/lib/rubocop/path_util.rb +1 -3
  390. data/lib/rubocop/rake_task.rb +3 -0
  391. data/lib/rubocop/remote_config.rb +4 -7
  392. data/lib/rubocop/result_cache.rb +5 -12
  393. data/lib/rubocop/rspec/cop_helper.rb +1 -1
  394. data/lib/rubocop/rspec/expect_offense.rb +4 -9
  395. data/lib/rubocop/rspec/shared_contexts.rb +4 -15
  396. data/lib/rubocop/runner.rb +7 -14
  397. data/lib/rubocop/target_finder.rb +11 -16
  398. data/lib/rubocop/target_ruby.rb +4 -8
  399. data/lib/rubocop/version.rb +1 -1
  400. metadata +5 -5
  401. data/lib/rubocop/core_ext/hash.rb +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c4f019dc65a23e4fdd32592747afcbee2cf60dff91484b26714f587b9f70a178
4
- data.tar.gz: 85f0e9d193e2165646764047f5422cb7942c87a147c96ff8e4a05b186eaea3c5
3
+ metadata.gz: 580e325f7dc471739e2f4857d82e279776098ae14fff7367eaa803f688c9e58d
4
+ data.tar.gz: c8331c8b2ebbecb239d4a63dee21375172d1d2939572516bba910109ef5375a1
5
5
  SHA512:
6
- metadata.gz: 5064fb48121769e10df9fe4dd7295151f15c2a3ae5f67fbb2869302a7ad268dfd3ed20e7a3242bf59ef68c1c6cf4e92452fedab08971702d29dba06516250de8
7
- data.tar.gz: 3b01830b9394f8336bdc415d90e2805f2817eb9fa9686a11392ef8009c4a58dd4b04e40c4a8005e90204774e85b38a6885c315581d55c56bf4a847c71c570447
6
+ metadata.gz: 5f9ecd1e28e7fa7946b22aaecc0d5571337d85ca6b9a198e9542a9d26d05c9d0806597ccd66d0090c4318d349c7023fe201103fa197eaa88d5e98534d25ff755
7
+ data.tar.gz: 4bc7ec5d20c127826a1761b9495669242d53b740509ca13060c1202d0114062fb73a52738b9fb717f5348fdad7cb2a2fb5ee0ea4cc8a9b5823298908a0ce6a5b
data/README.md CHANGED
@@ -10,6 +10,7 @@
10
10
  [![Test Coverage](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/test_coverage)](https://codeclimate.com/github/rubocop/rubocop/test_coverage)
11
11
  [![Maintainability](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/maintainability)](https://codeclimate.com/github/rubocop/rubocop/maintainability)
12
12
  [![SemVer](https://api.dependabot.com/badges/compatibility_score?dependency-name=rubocop&package-manager=bundler&version-scheme=semver)](https://dependabot.com/compatibility-score.html?dependency-name=rubocop&package-manager=bundler&version-scheme=semver)
13
+ [![Discord](https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true)](https://discord.gg/wJjWvGRDmm)
13
14
 
14
15
  > Role models are important. <br/>
15
16
  > -- Officer Alex J. Murphy / RoboCop
@@ -51,7 +52,7 @@ To prevent an unwanted RuboCop update you might want to use a conservative versi
51
52
  in your `Gemfile`:
52
53
 
53
54
  ```rb
54
- gem 'rubocop', '~> 1.12', require: false
55
+ gem 'rubocop', '~> 1.13', require: false
55
56
  ```
56
57
 
57
58
  See [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) for further details.
@@ -73,7 +74,7 @@ You can read a lot more about RuboCop in its [official docs](https://docs.ruboco
73
74
 
74
75
  RuboCop officially supports the following Ruby implementations:
75
76
 
76
- * MRI 2.4+
77
+ * MRI 2.5+
77
78
  * JRuby 9.2+
78
79
 
79
80
  See the [compatibility documentation](https://docs.rubocop.org/rubocop/compatibility.html) for further details.
data/config/default.yml CHANGED
@@ -1101,6 +1101,14 @@ Layout/ParameterAlignment:
1101
1101
  # But it can be overridden by setting this parameter
1102
1102
  IndentationWidth: ~
1103
1103
 
1104
+ Layout/RedundantLineBreak:
1105
+ Description: >-
1106
+ Do not break up an expression into multiple lines when it fits
1107
+ on a single line.
1108
+ Enabled: false
1109
+ InspectBlocks: false
1110
+ VersionAdded: '1.13'
1111
+
1104
1112
  Layout/RescueEnsureAlignment:
1105
1113
  Description: 'Align rescues and ensures correctly.'
1106
1114
  Enabled: true
@@ -1380,6 +1388,8 @@ Lint/AmbiguousBlockAssociation:
1380
1388
  StyleGuide: '#syntax'
1381
1389
  Enabled: true
1382
1390
  VersionAdded: '0.48'
1391
+ VersionChanged: '1.13'
1392
+ IgnoredMethods: []
1383
1393
 
1384
1394
  Lint/AmbiguousOperator:
1385
1395
  Description: >-
data/exe/rubocop CHANGED
@@ -9,9 +9,7 @@ require 'benchmark'
9
9
  cli = RuboCop::CLI.new
10
10
  result = 0
11
11
 
12
- time = Benchmark.realtime do
13
- result = cli.run
14
- end
12
+ time = Benchmark.realtime { result = cli.run }
15
13
 
16
14
  puts "Finished in #{time} seconds" if cli.options[:debug] || cli.options[:display_time]
17
15
  exit result
data/lib/rubocop.rb CHANGED
@@ -18,7 +18,6 @@ require_relative 'rubocop/ext/regexp_node'
18
18
  require_relative 'rubocop/ext/regexp_parser'
19
19
 
20
20
  require_relative 'rubocop/core_ext/string'
21
- require_relative 'rubocop/core_ext/hash'
22
21
  require_relative 'rubocop/ext/processed_source'
23
22
 
24
23
  require_relative 'rubocop/path_util'
@@ -222,6 +221,7 @@ require_relative 'rubocop/cop/layout/multiline_method_call_indentation'
222
221
  require_relative 'rubocop/cop/layout/multiline_method_definition_brace_layout'
223
222
  require_relative 'rubocop/cop/layout/multiline_operation_indentation'
224
223
  require_relative 'rubocop/cop/layout/parameter_alignment'
224
+ require_relative 'rubocop/cop/layout/redundant_line_break'
225
225
  require_relative 'rubocop/cop/layout/rescue_ensure_alignment'
226
226
  require_relative 'rubocop/cop/layout/space_after_colon'
227
227
  require_relative 'rubocop/cop/layout/space_after_comma'
@@ -51,9 +51,7 @@ module RuboCop
51
51
  location = Parser::Source::Range.new(source_buffer,
52
52
  o['location']['begin_pos'],
53
53
  o['location']['end_pos'])
54
- Cop::Offense.new(o['severity'], location,
55
- o['message'],
56
- o['cop_name'], o['status'].to_sym)
54
+ Cop::Offense.new(o['severity'], location, o['message'], o['cop_name'], o['status'].to_sym)
57
55
  end
58
56
  end
59
57
  end
data/lib/rubocop/cli.rb CHANGED
@@ -78,12 +78,10 @@ module RuboCop
78
78
  end
79
79
 
80
80
  def validate_options_vs_config
81
- if @options[:parallel] &&
82
- !@config_store.for_pwd.for_all_cops['UseCache']
83
- raise OptionArgumentError, '-P/--parallel uses caching to speed up ' \
84
- 'execution, so combining with AllCops: ' \
85
- 'UseCache: false is not allowed.'
86
- end
81
+ return unless @options[:parallel] && !@config_store.for_pwd.for_all_cops['UseCache']
82
+
83
+ raise OptionArgumentError, '-P/--parallel uses caching to speed up execution, so combining ' \
84
+ 'with AllCops: UseCache: false is not allowed.'
87
85
  end
88
86
 
89
87
  def act_on_options
@@ -14,10 +14,8 @@ module RuboCop
14
14
  PHASE_1 = 'Phase 1 of 2: run Layout/LineLength cop'
15
15
  PHASE_2 = 'Phase 2 of 2: run all cops'
16
16
 
17
- PHASE_1_OVERRIDDEN =
18
- '(skipped because the default Layout/LineLength:Max is overridden)'
19
- PHASE_1_DISABLED =
20
- '(skipped because Layout/LineLength is disabled)'
17
+ PHASE_1_OVERRIDDEN = '(skipped because the default Layout/LineLength:Max is overridden)'
18
+ PHASE_1_DISABLED = '(skipped because Layout/LineLength is disabled)'
21
19
 
22
20
  def run
23
21
  add_formatter
@@ -31,9 +29,7 @@ module RuboCop
31
29
  def maybe_run_line_length_cop
32
30
  if !line_length_enabled?(@config_store.for_pwd)
33
31
  skip_line_length_cop(PHASE_1_DISABLED)
34
- elsif !same_max_line_length?(
35
- @config_store.for_pwd, ConfigLoader.default_configuration
36
- )
32
+ elsif !same_max_line_length?(@config_store.for_pwd, ConfigLoader.default_configuration)
37
33
  skip_line_length_cop(PHASE_1_OVERRIDDEN)
38
34
  else
39
35
  run_line_length_cop
@@ -71,10 +67,7 @@ module RuboCop
71
67
  @options.delete(:only)
72
68
  @config_store = ConfigStore.new
73
69
  # Save the todo configuration of the LineLength cop.
74
- IO.read(AUTO_GENERATED_FILE)
75
- .lines
76
- .drop_while { |line| line.start_with?('#') }
77
- .join
70
+ File.read(AUTO_GENERATED_FILE).lines.drop_while { |line| line.start_with?('#') }.join
78
71
  end
79
72
 
80
73
  def run_all_cops(line_length_contents)
@@ -82,9 +75,7 @@ module RuboCop
82
75
  result = execute_runner
83
76
  # This run was made with the current maximum length allowed, so append
84
77
  # the saved setting for LineLength.
85
- File.open(AUTO_GENERATED_FILE, 'a') do |f|
86
- f.write(line_length_contents)
87
- end
78
+ File.open(AUTO_GENERATED_FILE, 'a') { |f| f.write(line_length_contents) }
88
79
  result
89
80
  end
90
81
 
@@ -96,8 +87,7 @@ module RuboCop
96
87
  end
97
88
 
98
89
  def add_formatter
99
- @options[:formatters] << [Formatter::DisabledConfigFormatter,
100
- AUTO_GENERATED_FILE]
90
+ @options[:formatters] << [Formatter::DisabledConfigFormatter, AUTO_GENERATED_FILE]
101
91
  end
102
92
 
103
93
  def execute_runner
@@ -125,9 +115,9 @@ module RuboCop
125
115
  end
126
116
 
127
117
  def existing_configuration(config_file)
128
- IO.read(config_file, encoding: Encoding::UTF_8)
129
- .sub(/^inherit_from: *[^\n]+/, '')
130
- .sub(/^inherit_from: *(\n *- *[^\n]+)+/, '')
118
+ File.read(config_file, encoding: Encoding::UTF_8)
119
+ .sub(/^inherit_from: *[^\n]+/, '')
120
+ .sub(/^inherit_from: *(\n *- *[^\n]+)+/, '')
131
121
  end
132
122
 
133
123
  def write_config_file(file_name, file_string, rubocop_yml_contents)
@@ -31,9 +31,7 @@ module RuboCop
31
31
  # See https://docs.rubocop.org/rubocop/configuration
32
32
  DESC
33
33
 
34
- File.open(DOTFILE, 'w') do |f|
35
- f.write(description)
36
- end
34
+ File.open(DOTFILE, 'w') { |f| f.write(description) }
37
35
 
38
36
  puts "Writing new #{DOTFILE} to #{path}"
39
37
 
@@ -26,10 +26,7 @@ module RuboCop
26
26
  registry = Cop::Registry.global
27
27
  show_all = @options[:show_cops].empty?
28
28
 
29
- if show_all
30
- puts "# Available cops (#{registry.length}) " \
31
- "+ config for #{Dir.pwd}: "
32
- end
29
+ puts "# Available cops (#{registry.length}) + config for #{Dir.pwd}: " if show_all
33
30
 
34
31
  registry.departments.sort!.each do |department|
35
32
  print_cops_of_department(registry, department, show_all)
@@ -25,16 +25,11 @@ module RuboCop
25
25
  end
26
26
 
27
27
  def extra_enabled_comments
28
- extra_enabled_comments_with_names(
29
- extras: Hash.new { |h, k| h[k] = [] },
30
- names: Hash.new(0)
31
- )
28
+ extra_enabled_comments_with_names(extras: Hash.new { |h, k| h[k] = [] }, names: Hash.new(0))
32
29
  end
33
30
 
34
31
  def comment_only_line?(line_number)
35
- non_comment_token_line_numbers.none? do |non_comment_line_number|
36
- non_comment_line_number == line_number
37
- end
32
+ non_comment_token_line_numbers.none?(line_number)
38
33
  end
39
34
 
40
35
  private
@@ -45,9 +45,7 @@ module RuboCop
45
45
  end
46
46
 
47
47
  def check
48
- deprecation_check do |deprecation_message|
49
- warn("#{loaded_path} - #{deprecation_message}")
50
- end
48
+ deprecation_check { |deprecation_message| warn("#{loaded_path} - #{deprecation_message}") }
51
49
  @validator.validate
52
50
  make_excludes_absolute
53
51
  self
@@ -67,8 +65,7 @@ module RuboCop
67
65
 
68
66
  # True if this is a config file that is shipped with RuboCop
69
67
  def internal?
70
- base_config_path = File.expand_path(File.join(ConfigLoader::RUBOCOP_HOME,
71
- 'config'))
68
+ base_config_path = File.expand_path(File.join(ConfigLoader::RUBOCOP_HOME, 'config'))
72
69
  File.expand_path(loaded_path).start_with?(base_config_path)
73
70
  end
74
71
 
@@ -79,8 +76,7 @@ module RuboCop
79
76
 
80
77
  self[key]['Exclude'].map! do |exclude_elem|
81
78
  if exclude_elem.is_a?(String) && !absolute?(exclude_elem)
82
- File.expand_path(File.join(base_dir_for_path_parameters,
83
- exclude_elem))
79
+ File.expand_path(File.join(base_dir_for_path_parameters, exclude_elem))
84
80
  else
85
81
  exclude_elem
86
82
  end
@@ -122,17 +118,14 @@ module RuboCop
122
118
  # Note: the 'Enabled' attribute is same as that returned by `for_cop`
123
119
  def for_badge(badge)
124
120
  cop_config = for_cop(badge.to_s)
125
- fetch(badge.department.to_s) { return cop_config }
126
- .merge(cop_config)
121
+ fetch(badge.department.to_s) { return cop_config }.merge(cop_config)
127
122
  end
128
123
 
129
124
  # @return [Config] for the given department name.
130
125
  # Note: the 'Enabled' attribute will be present only if specified
131
126
  # at the department's level
132
127
  def for_department(department_name)
133
- @for_department ||= Hash.new do |h, dept|
134
- h[dept] = self[dept] || {}
135
- end
128
+ @for_department ||= Hash.new { |h, dept| h[dept] = self[dept] || {} }
136
129
  @for_department[department_name.to_s]
137
130
  end
138
131
 
@@ -153,8 +146,7 @@ module RuboCop
153
146
 
154
147
  # Optimization to quickly decide if the given file is hidden (on the top
155
148
  # level) and cannot be matched by any pattern.
156
- is_hidden = relative_file_path.start_with?('.') &&
157
- !relative_file_path.start_with?('..')
149
+ is_hidden = relative_file_path.start_with?('.') && !relative_file_path.start_with?('..')
158
150
  return false if is_hidden && !possibly_include_hidden?
159
151
 
160
152
  absolute_file_path = File.expand_path(file)
@@ -163,8 +155,7 @@ module RuboCop
163
155
  if block_given?
164
156
  yield pattern, relative_file_path, absolute_file_path
165
157
  else
166
- match_path?(pattern, relative_file_path) ||
167
- match_path?(pattern, absolute_file_path)
158
+ match_path?(pattern, relative_file_path) || match_path?(pattern, absolute_file_path)
168
159
  end
169
160
  end
170
161
  end
@@ -177,8 +168,7 @@ module RuboCop
177
168
 
178
169
  file_to_include?(file) do |pattern, relative_path, absolute_path|
179
170
  /[A-Z]/.match?(pattern.to_s) &&
180
- (match_path?(pattern, relative_path) ||
181
- match_path?(pattern, absolute_path))
171
+ (match_path?(pattern, relative_path) || match_path?(pattern, absolute_path))
182
172
  end
183
173
  end
184
174
 
@@ -194,9 +184,7 @@ module RuboCop
194
184
 
195
185
  def file_to_exclude?(file)
196
186
  file = File.expand_path(file)
197
- patterns_to_exclude.any? do |pattern|
198
- match_path?(pattern, file)
199
- end
187
+ patterns_to_exclude.any? { |pattern| match_path?(pattern, file) }
200
188
  end
201
189
 
202
190
  def patterns_to_include
@@ -267,8 +255,7 @@ module RuboCop
267
255
  private
268
256
 
269
257
  def target_rails_version_from_bundler_lock_file
270
- @target_rails_version_from_bundler_lock_file ||=
271
- read_rails_version_from_bundler_lock_file
258
+ @target_rails_version_from_bundler_lock_file ||= read_rails_version_from_bundler_lock_file
272
259
  end
273
260
 
274
261
  def read_rails_version_from_bundler_lock_file
@@ -288,9 +275,7 @@ module RuboCop
288
275
  return true if cop_options['Enabled'] == true
289
276
 
290
277
  department = department_of(qualified_cop_name)
291
- cop_enabled = cop_options.fetch('Enabled') do
292
- !for_all_cops['DisabledByDefault']
293
- end
278
+ cop_enabled = cop_options.fetch('Enabled') { !for_all_cops['DisabledByDefault'] }
294
279
  return true if cop_enabled == 'override_department'
295
280
  return false if department && department['Enabled'] == false
296
281
 
@@ -22,8 +22,7 @@ module RuboCop
22
22
  class << self
23
23
  include FileFinder
24
24
 
25
- attr_accessor :debug, :ignore_parent_exclusion,
26
- :disable_pending_cops, :enable_pending_cops
25
+ attr_accessor :debug, :ignore_parent_exclusion, :disable_pending_cops, :enable_pending_cops
27
26
  attr_writer :default_configuration, :project_root
28
27
  attr_reader :loaded_features
29
28
 
@@ -58,9 +57,7 @@ module RuboCop
58
57
 
59
58
  def load_yaml_configuration(absolute_path)
60
59
  file_contents = read_file(absolute_path)
61
- yaml_code = Dir.chdir(File.dirname(absolute_path)) do
62
- ERB.new(file_contents).result
63
- end
60
+ yaml_code = Dir.chdir(File.dirname(absolute_path)) { ERB.new(file_contents).result }
64
61
  check_duplication(yaml_code, absolute_path)
65
62
  hash = yaml_safe_load(yaml_code, absolute_path) || {}
66
63
 
@@ -156,9 +153,7 @@ module RuboCop
156
153
 
157
154
  warn Rainbow(PENDING_BANNER).yellow
158
155
 
159
- pending_cops.each do |cop|
160
- warn_pending_cop cop
161
- end
156
+ pending_cops.each { |cop| warn_pending_cop cop }
162
157
 
163
158
  warn Rainbow('For more information: https://docs.rubocop.org/rubocop/versioning.html').yellow
164
159
  end
@@ -246,10 +241,9 @@ module RuboCop
246
241
  # stderr. Care is taken to use the standard OS exit code for a "file not
247
242
  # found" error.
248
243
  def read_file(absolute_path)
249
- IO.read(absolute_path, encoding: Encoding::UTF_8)
244
+ File.read(absolute_path, encoding: Encoding::UTF_8)
250
245
  rescue Errno::ENOENT
251
- raise ConfigNotFoundError,
252
- "Configuration file not found: #{absolute_path}"
246
+ raise ConfigNotFoundError, "Configuration file not found: #{absolute_path}"
253
247
  end
254
248
 
255
249
  def yaml_safe_load(yaml_code, filename)
@@ -37,16 +37,30 @@ module RuboCop
37
37
  inherit_mode: determine_inherit_mode(hash, k))
38
38
  end
39
39
  hash[k] = v
40
+ fix_include_paths(base_config.loaded_path, hash, path, k, v) if v.key?('Include')
40
41
  end
41
42
  end
42
43
  end
43
44
 
45
+ # When one .rubocop.yml file inherits from another .rubocop.yml file, the Include paths in the
46
+ # base configuration are relative to the directory where the base configuration file is. For the
47
+ # derived configuration, we need to make those paths relative to where the derived configuration
48
+ # file is.
49
+ def fix_include_paths(base_config_path, hash, path, key, value)
50
+ return unless File.basename(base_config_path).start_with?('.rubocop')
51
+
52
+ base_dir = File.dirname(base_config_path)
53
+ derived_dir = File.dirname(path)
54
+ hash[key]['Include'] = value['Include'].map do |include_path|
55
+ PathUtil.relative_path(File.join(base_dir, include_path), derived_dir)
56
+ end
57
+ end
58
+
44
59
  def resolve_inheritance_from_gems(hash)
45
60
  gems = hash.delete('inherit_gem')
46
61
  (gems || {}).each_pair do |gem_name, config_path|
47
62
  if gem_name == 'rubocop'
48
- raise ArgumentError,
49
- "can't inherit configuration from the rubocop gem"
63
+ raise ArgumentError, "can't inherit configuration from the rubocop gem"
50
64
  end
51
65
 
52
66
  hash['inherit_from'] = Array(hash['inherit_from'])
@@ -77,8 +91,7 @@ module RuboCop
77
91
  config = handle_disabled_by_default(config, default_configuration) if disabled_by_default
78
92
  override_enabled_for_disabled_departments(default_configuration, config)
79
93
 
80
- opts = { inherit_mode: config['inherit_mode'] || {},
81
- unset_nil: unset_nil }
94
+ opts = { inherit_mode: config['inherit_mode'] || {}, unset_nil: unset_nil }
82
95
  Config.new(merge(default_configuration, config, **opts), config_file)
83
96
  end
84
97
 
@@ -112,8 +125,7 @@ module RuboCop
112
125
  next unless key =~ %r{(.*)/.*}
113
126
 
114
127
  department = Regexp.last_match(1)
115
- next unless disabled?(derived_hash, department) ||
116
- disabled?(base_hash, department)
128
+ next unless disabled?(derived_hash, department) || disabled?(base_hash, department)
117
129
 
118
130
  # The `override_department` setting for the `Enabled` parameter is an
119
131
  # internal setting that's not documented in the manual. It will cause a
@@ -155,13 +167,10 @@ module RuboCop
155
167
  end
156
168
 
157
169
  def warn_on_duplicate_setting(base_hash, derived_hash, key, **opts)
158
- return unless duplicate_setting?(base_hash, derived_hash,
159
- key, opts[:inherited_file])
170
+ return unless duplicate_setting?(base_hash, derived_hash, key, opts[:inherited_file])
160
171
 
161
- inherit_mode = opts[:inherit_mode]['merge'] ||
162
- opts[:inherit_mode]['override']
163
- return if base_hash[key].is_a?(Array) &&
164
- inherit_mode && inherit_mode.include?(key)
172
+ inherit_mode = opts[:inherit_mode]['merge'] || opts[:inherit_mode]['override']
173
+ return if base_hash[key].is_a?(Array) && inherit_mode && inherit_mode.include?(key)
165
174
 
166
175
  puts "#{PathUtil.smart_path(opts[:file])}: " \
167
176
  "#{opts[:cop_name]}:#{key} overrides " \
@@ -251,8 +260,7 @@ module RuboCop
251
260
 
252
261
  File.join(gem_path, relative_config_path)
253
262
  rescue Gem::LoadError => e
254
- raise Gem::LoadError,
255
- "Unable to find gem #{gem_name}; is the gem installed? #{e}"
263
+ raise Gem::LoadError, "Unable to find gem #{gem_name}; is the gem installed? #{e}"
256
264
  end
257
265
  end
258
266
  end