rubocop 1.9.1 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86b427813730f667d5978bd4b4ca7e8f6766adf4ddf713e413cf07a0345b84b2
4
- data.tar.gz: ede1028f4ebe7b6b1cd59de4d604e655c7115d928d38393ebd7febdbbff5b3e7
3
+ metadata.gz: 580e325f7dc471739e2f4857d82e279776098ae14fff7367eaa803f688c9e58d
4
+ data.tar.gz: c8331c8b2ebbecb239d4a63dee21375172d1d2939572516bba910109ef5375a1
5
5
  SHA512:
6
- metadata.gz: b5e3ca723e7530916204e9bfce59bec1452232765a0903093ba2b4783fc35f109e655251c2fce8e3b08dbebcf4a4e67a4301b00c8113d45f5f0bb2a63cc4be7f
7
- data.tar.gz: d91068c77da3ea787a5c36c287f1913bc94c23d98fc315604883cb21742f4c1031014e10c9470c67dca2fa3dfdc41eb848134f0a9565ff5a82e65aed5d6d2cf3
6
+ metadata.gz: 5f9ecd1e28e7fa7946b22aaecc0d5571337d85ca6b9a198e9542a9d26d05c9d0806597ccd66d0090c4318d349c7023fe201103fa197eaa88d5e98534d25ff755
7
+ data.tar.gz: 4bc7ec5d20c127826a1761b9495669242d53b740509ca13060c1202d0114062fb73a52738b9fb717f5348fdad7cb2a2fb5ee0ea4cc8a9b5823298908a0ce6a5b
data/README.md CHANGED
@@ -1,15 +1,16 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/rubocop-hq/rubocop/master/logo/rubo-logo-horizontal.png" alt="RuboCop Logo"/>
2
+ <img src="https://raw.githubusercontent.com/rubocop/rubocop/master/logo/rubo-logo-horizontal.png" alt="RuboCop Logo"/>
3
3
  </p>
4
4
 
5
5
  ----------
6
- [![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop-hq/rubocop)
6
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)
7
7
  [![Gem Version](https://badge.fury.io/rb/rubocop.svg)](https://badge.fury.io/rb/rubocop)
8
- [![CircleCI Status](https://circleci.com/gh/rubocop-hq/rubocop/tree/master.svg?style=svg)](https://circleci.com/gh/rubocop-hq/rubocop/tree/master)
9
- [![Actions Status](https://github.com/rubocop-hq/rubocop/workflows/CI/badge.svg?branch=master)](https://github.com/rubocop-hq/rubocop/actions?query=workflow%3ACI)
10
- [![Test Coverage](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/test_coverage)](https://codeclimate.com/github/rubocop-hq/rubocop/test_coverage)
11
- [![Maintainability](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/maintainability)](https://codeclimate.com/github/rubocop-hq/rubocop/maintainability)
8
+ [![CircleCI Status](https://circleci.com/gh/rubocop/rubocop/tree/master.svg?style=svg)](https://circleci.com/gh/rubocop/rubocop/tree/master)
9
+ [![Actions Status](https://github.com/rubocop/rubocop/workflows/CI/badge.svg?branch=master)](https://github.com/rubocop/rubocop/actions?query=workflow%3ACI)
10
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/test_coverage)](https://codeclimate.com/github/rubocop/rubocop/test_coverage)
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
@@ -20,7 +21,7 @@ Guide](https://rubystyle.guide). Apart from reporting the problems discovered in
20
21
  RuboCop can also automatically fix many of them for you.
21
22
 
22
23
  RuboCop is extremely flexible and most aspects of its behavior can be tweaked via various
23
- [configuration options](https://github.com/rubocop-hq/rubocop/blob/master/config/default.yml).
24
+ [configuration options](https://github.com/rubocop/rubocop/blob/master/config/default.yml).
24
25
 
25
26
  ----------
26
27
  [![Patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://www.patreon.com/bbatsov)
@@ -51,10 +52,10 @@ 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.9', require: false
55
+ gem 'rubocop', '~> 1.13', require: false
55
56
  ```
56
57
 
57
- See [versioning](https://docs.rubocop.org/rubocop/1.0/versioning.html) for further details.
58
+ See [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) for further details.
58
59
 
59
60
  ## Quickstart
60
61
 
@@ -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.
@@ -82,7 +83,7 @@ See the [compatibility documentation](https://docs.rubocop.org/rubocop/compatibi
82
83
 
83
84
  If you use RuboCop in your project, you can include one of these badges in your readme to let people know that your code is written following the community Ruby Style Guide.
84
85
 
85
- [![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop-hq/rubocop)
86
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)
86
87
 
87
88
  [![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)
88
89
 
@@ -90,7 +91,7 @@ If you use RuboCop in your project, you can include one of these badges in your
90
91
  Here are the Markdown snippets for the two badges:
91
92
 
92
93
  ``` markdown
93
- [![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop-hq/rubocop)
94
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)
94
95
 
95
96
  [![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)
96
97
  ```
@@ -116,14 +117,14 @@ See the [team page](https://docs.rubocop.org/rubocop/about/team.html) for more d
116
117
  ## Logo
117
118
 
118
119
  RuboCop's logo was created by [Dimiter Petrov](https://www.chadomoto.com/). You can find the logo in various
119
- formats [here](https://github.com/rubocop-hq/rubocop/tree/master/logo).
120
+ formats [here](https://github.com/rubocop/rubocop/tree/master/logo).
120
121
 
121
122
  The logo is licensed under a
122
123
  [Creative Commons Attribution-NonCommercial 4.0 International License](https://creativecommons.org/licenses/by-nc/4.0/deed.en_GB).
123
124
 
124
125
  ## Contributors
125
126
 
126
- Here's a [list](https://github.com/rubocop-hq/rubocop/graphs/contributors) of
127
+ Here's a [list](https://github.com/rubocop/rubocop/graphs/contributors) of
127
128
  all the people who have contributed to the development of RuboCop.
128
129
 
129
130
  I'm extremely grateful to each and every one of them!
@@ -254,7 +254,7 @@
254
254
  <% end %>
255
255
  </div>
256
256
  <footer>
257
- Generated by <a href="https://github.com/rubocop-hq/rubocop">RuboCop</a>
257
+ Generated by <a href="https://github.com/rubocop/rubocop">RuboCop</a>
258
258
  <span class="version"><%= RuboCop::Version::STRING %></span>
259
259
  </footer>
260
260
  </body>
data/config/default.yml CHANGED
@@ -203,6 +203,13 @@ Bundler/OrderedGems:
203
203
 
204
204
  #################### Gemspec ###############################
205
205
 
206
+ Gemspec/DateAssignment:
207
+ Description: 'Checks that `date =` is not used in gemspec file, it is set automatically when the gem is packaged.'
208
+ Enabled: pending
209
+ VersionAdded: '1.10'
210
+ Include:
211
+ - '**/*.gemspec'
212
+
206
213
  Gemspec/DuplicatedAssignment:
207
214
  Description: 'An attribute assignment method calls should be listed only once in a gemspec.'
208
215
  Enabled: true
@@ -1094,6 +1101,14 @@ Layout/ParameterAlignment:
1094
1101
  # But it can be overridden by setting this parameter
1095
1102
  IndentationWidth: ~
1096
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
+
1097
1112
  Layout/RescueEnsureAlignment:
1098
1113
  Description: 'Align rescues and ensures correctly.'
1099
1114
  Enabled: true
@@ -1373,6 +1388,8 @@ Lint/AmbiguousBlockAssociation:
1373
1388
  StyleGuide: '#syntax'
1374
1389
  Enabled: true
1375
1390
  VersionAdded: '0.48'
1391
+ VersionChanged: '1.13'
1392
+ IgnoredMethods: []
1376
1393
 
1377
1394
  Lint/AmbiguousOperator:
1378
1395
  Description: >-
@@ -1446,23 +1463,31 @@ Lint/Debugger:
1446
1463
  Description: 'Check for debugger calls.'
1447
1464
  Enabled: true
1448
1465
  VersionAdded: '0.14'
1449
- VersionChanged: '0.49'
1450
- DebuggerReceivers:
1451
- - binding
1452
- - Kernel
1453
- - Pry
1466
+ VersionChanged: '1.10'
1467
+ DebuggerReceivers: [] # deprecated
1454
1468
  DebuggerMethods:
1455
- - debugger
1456
- - byebug
1457
- - remote_byebug
1458
- - pry
1459
- - remote_pry
1460
- - pry_remote
1461
- - console
1462
- - rescue
1463
- - save_and_open_page
1464
- - save_and_open_screenshot
1465
- - irb
1469
+ # Groups are available so that a specific group can be disabled in
1470
+ # a user's configuration, but are otherwise not significant.
1471
+ Kernel:
1472
+ - binding.irb
1473
+ Byebug:
1474
+ - byebug
1475
+ - remote_byebug
1476
+ - Kernel.byebug
1477
+ - Kernel.remote_byebug
1478
+ Capybara:
1479
+ - save_and_open_page
1480
+ - save_and_open_screenshot
1481
+ Pry:
1482
+ - binding.pry
1483
+ - binding.remote_pry
1484
+ - binding.pry_remote
1485
+ - Pry.rescue
1486
+ Rails:
1487
+ - debugger
1488
+ - Kernel.debugger
1489
+ WebConsole:
1490
+ - binding.console
1466
1491
 
1467
1492
  Lint/DeprecatedClassMethods:
1468
1493
  Description: 'Check for deprecated class method calls.'
@@ -2040,13 +2065,18 @@ Lint/SuppressedException:
2040
2065
  StyleGuide: '#dont-hide-exceptions'
2041
2066
  Enabled: true
2042
2067
  AllowComments: true
2068
+ AllowNil: true
2043
2069
  VersionAdded: '0.9'
2044
- VersionChanged: '0.81'
2070
+ VersionChanged: '1.12'
2045
2071
 
2046
2072
  Lint/SymbolConversion:
2047
2073
  Description: 'Checks for unnecessary symbol conversions.'
2048
2074
  Enabled: pending
2049
2075
  VersionAdded: '1.9'
2076
+ EnforcedStyle: strict
2077
+ SupportedStyles:
2078
+ - strict
2079
+ - consistent
2050
2080
 
2051
2081
  Lint/Syntax:
2052
2082
  Description: 'Checks for syntax errors.'
@@ -2474,6 +2504,7 @@ Naming/MemoizedInstanceVariableName:
2474
2504
  - disallowed
2475
2505
  - required
2476
2506
  - optional
2507
+ Safe: false
2477
2508
 
2478
2509
  Naming/MethodName:
2479
2510
  Description: 'Use the configured style when naming methods.'
@@ -3087,6 +3118,8 @@ Style/ConstantVisibility:
3087
3118
  visibility declarations.
3088
3119
  Enabled: false
3089
3120
  VersionAdded: '0.66'
3121
+ VersionChanged: '1.10'
3122
+ IgnoreModules: false
3090
3123
 
3091
3124
  # Checks that you have put a copyright in a comment before any code.
3092
3125
  #
@@ -3157,6 +3190,7 @@ Style/Documentation:
3157
3190
  Description: 'Document classes and non-namespace modules.'
3158
3191
  Enabled: true
3159
3192
  VersionAdded: '0.9'
3193
+ AllowedConstants: []
3160
3194
  Exclude:
3161
3195
  - 'spec/**/*'
3162
3196
  - 'test/**/*'
@@ -3425,6 +3459,13 @@ Style/HashAsLastArrayItem:
3425
3459
  - braces
3426
3460
  - no_braces
3427
3461
 
3462
+ Style/HashConversion:
3463
+ Description: 'Avoid Hash[] in favor of ary.to_h or literal hashes.'
3464
+ Enabled: pending
3465
+ VersionAdded: '1.10'
3466
+ VersionChanged: '1.11'
3467
+ AllowSplatArgument: true
3468
+
3428
3469
  Style/HashEachMethods:
3429
3470
  Description: 'Use Hash#each_key and Hash#each_value.'
3430
3471
  StyleGuide: '#hash-each'
@@ -3648,6 +3689,7 @@ Style/MethodCallWithArgsParentheses:
3648
3689
  AllowParenthesesInMultilineCall: false
3649
3690
  AllowParenthesesInChaining: false
3650
3691
  AllowParenthesesInCamelCaseMethod: false
3692
+ AllowParenthesesInStringInterpolation: false
3651
3693
  EnforcedStyle: require_parentheses
3652
3694
  SupportedStyles:
3653
3695
  - require_parentheses
@@ -4467,6 +4509,13 @@ Style/StderrPuts:
4467
4509
  Enabled: true
4468
4510
  VersionAdded: '0.51'
4469
4511
 
4512
+ Style/StringChars:
4513
+ Description: 'Checks for uses of `String#split` with empty string or regexp literal argument.'
4514
+ StyleGuide: '#string-chars'
4515
+ Enabled: pending
4516
+ Safe: false
4517
+ VersionAdded: '1.12'
4518
+
4470
4519
  Style/StringConcatenation:
4471
4520
  Description: 'Checks for places where string concatenation can be replaced with string interpolation.'
4472
4521
  StyleGuide: '#string-interpolation'
@@ -4564,6 +4613,7 @@ Style/SymbolProc:
4564
4613
  Safe: false
4565
4614
  VersionAdded: '0.26'
4566
4615
  VersionChanged: '1.5'
4616
+ AllowMethodsWithArguments: false
4567
4617
  # A list of method names to be ignored by the check.
4568
4618
  # The names should be fairly unique, otherwise you'll end up ignoring lots of code.
4569
4619
  IgnoredMethods:
@@ -4716,6 +4766,16 @@ Style/UnlessElse:
4716
4766
  Enabled: true
4717
4767
  VersionAdded: '0.9'
4718
4768
 
4769
+ Style/UnlessLogicalOperators:
4770
+ Description: >-
4771
+ Checks for use of logical operators in an unless condition.
4772
+ Enabled: false
4773
+ VersionAdded: '1.11'
4774
+ EnforcedStyle: forbid_mixed_logical_operators
4775
+ SupportedStyles:
4776
+ - forbid_mixed_logical_operators
4777
+ - forbid_logical_operators
4778
+
4719
4779
  Style/UnpackFirst:
4720
4780
  Description: >-
4721
4781
  Checks for accessing the first element of `String#unpack`
@@ -187,6 +187,10 @@ changed_parameters:
187
187
  parameters: ExcludedMethods
188
188
  alternative: IgnoredMethods
189
189
  severity: warning
190
+ - cops: Lint/Debugger
191
+ parameters: DebuggerReceivers
192
+ reason: "`DebuggerReceivers` is no longer necessary, method receivers should be specified in `DebuggerMethods` instead."
193
+ severity: warning
190
194
 
191
195
  # Enforced styles that have been removed or replaced
192
196
  changed_enforced_styles:
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'
@@ -152,6 +151,7 @@ require_relative 'rubocop/cop/bundler/gem_comment'
152
151
  require_relative 'rubocop/cop/bundler/insecure_protocol_source'
153
152
  require_relative 'rubocop/cop/bundler/ordered_gems'
154
153
 
154
+ require_relative 'rubocop/cop/gemspec/date_assignment'
155
155
  require_relative 'rubocop/cop/gemspec/duplicated_assignment'
156
156
  require_relative 'rubocop/cop/gemspec/ordered_dependencies'
157
157
  require_relative 'rubocop/cop/gemspec/required_ruby_version'
@@ -221,6 +221,7 @@ require_relative 'rubocop/cop/layout/multiline_method_call_indentation'
221
221
  require_relative 'rubocop/cop/layout/multiline_method_definition_brace_layout'
222
222
  require_relative 'rubocop/cop/layout/multiline_operation_indentation'
223
223
  require_relative 'rubocop/cop/layout/parameter_alignment'
224
+ require_relative 'rubocop/cop/layout/redundant_line_break'
224
225
  require_relative 'rubocop/cop/layout/rescue_ensure_alignment'
225
226
  require_relative 'rubocop/cop/layout/space_after_colon'
226
227
  require_relative 'rubocop/cop/layout/space_after_comma'
@@ -472,6 +473,7 @@ require_relative 'rubocop/cop/style/global_std_stream'
472
473
  require_relative 'rubocop/cop/style/global_vars'
473
474
  require_relative 'rubocop/cop/style/guard_clause'
474
475
  require_relative 'rubocop/cop/style/hash_as_last_array_item'
476
+ require_relative 'rubocop/cop/style/hash_conversion'
475
477
  require_relative 'rubocop/cop/style/hash_each_methods'
476
478
  require_relative 'rubocop/cop/style/hash_except'
477
479
  require_relative 'rubocop/cop/style/hash_like_case'
@@ -580,6 +582,7 @@ require_relative 'rubocop/cop/style/slicing_with_range'
580
582
  require_relative 'rubocop/cop/style/special_global_vars'
581
583
  require_relative 'rubocop/cop/style/stabby_lambda_parentheses'
582
584
  require_relative 'rubocop/cop/style/stderr_puts'
585
+ require_relative 'rubocop/cop/style/string_chars'
583
586
  require_relative 'rubocop/cop/style/string_concatenation'
584
587
  require_relative 'rubocop/cop/style/string_hash_keys'
585
588
  require_relative 'rubocop/cop/style/string_literals'
@@ -603,6 +606,7 @@ require_relative 'rubocop/cop/style/trailing_method_end_statement'
603
606
  require_relative 'rubocop/cop/style/trailing_underscore_variable'
604
607
  require_relative 'rubocop/cop/style/trivial_accessors'
605
608
  require_relative 'rubocop/cop/style/unless_else'
609
+ require_relative 'rubocop/cop/style/unless_logical_operators'
606
610
  require_relative 'rubocop/cop/style/unpack_first'
607
611
  require_relative 'rubocop/cop/style/variable_interpolation'
608
612
  require_relative 'rubocop/cop/style/when_then'
@@ -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)