rubocop 0.49.1 → 0.50.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 (292) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -3
  3. data/bin/rubocop +1 -1
  4. data/config/default.yml +160 -99
  5. data/config/disabled.yml +4 -5
  6. data/config/enabled.yml +149 -47
  7. data/lib/rubocop.rb +41 -14
  8. data/lib/rubocop/ast/builder.rb +4 -1
  9. data/lib/rubocop/ast/node.rb +36 -42
  10. data/lib/rubocop/ast/node/args_node.rb +1 -13
  11. data/lib/rubocop/ast/node/array_node.rb +9 -0
  12. data/lib/rubocop/ast/node/block_node.rb +9 -0
  13. data/lib/rubocop/ast/node/def_node.rb +71 -0
  14. data/lib/rubocop/ast/node/for_node.rb +8 -0
  15. data/lib/rubocop/ast/node/if_node.rb +10 -2
  16. data/lib/rubocop/ast/node/mixin/collection_node.rb +15 -0
  17. data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +174 -0
  18. data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +89 -0
  19. data/lib/rubocop/ast/node/mixin/parameterized_node.rb +18 -31
  20. data/lib/rubocop/ast/node/regexp_node.rb +35 -0
  21. data/lib/rubocop/ast/node/send_node.rb +1 -154
  22. data/lib/rubocop/ast/node/super_node.rb +3 -24
  23. data/lib/rubocop/ast/node/yield_node.rb +21 -0
  24. data/lib/rubocop/ast/traversal.rb +6 -6
  25. data/lib/rubocop/cli.rb +7 -3
  26. data/lib/rubocop/config.rb +45 -8
  27. data/lib/rubocop/config_loader.rb +7 -5
  28. data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -3
  29. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +64 -0
  30. data/lib/rubocop/cop/bundler/ordered_gems.rb +12 -12
  31. data/lib/rubocop/cop/commissioner.rb +8 -2
  32. data/lib/rubocop/cop/cop.rb +3 -1
  33. data/lib/rubocop/cop/generator.rb +94 -21
  34. data/lib/rubocop/cop/internal_affairs.rb +3 -0
  35. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +14 -3
  36. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +43 -0
  37. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +46 -0
  38. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +49 -0
  39. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +1 -1
  40. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +2 -3
  41. data/lib/rubocop/cop/layout/align_array.rb +2 -2
  42. data/lib/rubocop/cop/layout/align_hash.rb +2 -2
  43. data/lib/rubocop/cop/layout/align_parameters.rb +5 -11
  44. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +5 -5
  45. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  46. data/lib/rubocop/cop/layout/dot_position.rb +9 -0
  47. data/lib/rubocop/cop/layout/else_alignment.rb +30 -13
  48. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +4 -0
  49. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +20 -4
  50. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +3 -3
  51. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +3 -3
  52. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +3 -3
  53. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +5 -2
  54. data/lib/rubocop/cop/layout/indent_heredoc.rb +19 -24
  55. data/lib/rubocop/cop/layout/indentation_consistency.rb +1 -2
  56. data/lib/rubocop/cop/layout/indentation_width.rb +12 -8
  57. data/lib/rubocop/cop/layout/leading_comment_space.rb +33 -18
  58. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +20 -17
  59. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +3 -3
  60. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +6 -0
  61. data/lib/rubocop/cop/layout/space_after_colon.rb +7 -0
  62. data/lib/rubocop/cop/layout/space_after_comma.rb +10 -0
  63. data/lib/rubocop/cop/layout/space_after_method_name.rb +5 -3
  64. data/lib/rubocop/cop/layout/space_after_not.rb +1 -1
  65. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +13 -4
  66. data/lib/rubocop/cop/layout/space_around_keyword.rb +9 -5
  67. data/lib/rubocop/cop/layout/space_before_block_braces.rb +54 -5
  68. data/lib/rubocop/cop/layout/space_before_comment.rb +7 -0
  69. data/lib/rubocop/cop/layout/space_before_semicolon.rb +7 -0
  70. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +1 -1
  71. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +1 -1
  72. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +1 -1
  73. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +8 -4
  74. data/lib/rubocop/cop/layout/tab.rb +1 -1
  75. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +4 -2
  76. data/lib/rubocop/cop/lint/assignment_in_condition.rb +15 -1
  77. data/lib/rubocop/cop/lint/block_alignment.rb +15 -6
  78. data/lib/rubocop/cop/lint/boolean_symbol.rb +38 -0
  79. data/lib/rubocop/cop/lint/condition_position.rb +5 -1
  80. data/lib/rubocop/cop/lint/debugger.rb +16 -9
  81. data/lib/rubocop/cop/lint/def_end_alignment.rb +4 -4
  82. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +3 -3
  83. data/lib/rubocop/cop/lint/duplicate_methods.rb +73 -5
  84. data/lib/rubocop/cop/lint/duplicated_key.rb +1 -1
  85. data/lib/rubocop/cop/lint/each_with_object_argument.rb +1 -1
  86. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  87. data/lib/rubocop/cop/lint/empty_expression.rb +1 -1
  88. data/lib/rubocop/cop/lint/empty_interpolation.rb +1 -1
  89. data/lib/rubocop/cop/lint/empty_when.rb +1 -1
  90. data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
  91. data/lib/rubocop/cop/lint/float_out_of_range.rb +5 -5
  92. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +35 -40
  93. data/lib/rubocop/cop/lint/handle_exceptions.rb +1 -1
  94. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +18 -13
  95. data/lib/rubocop/cop/lint/inherit_exception.rb +8 -7
  96. data/lib/rubocop/cop/lint/interpolation_check.rb +36 -0
  97. data/lib/rubocop/cop/lint/literal_in_condition.rb +3 -3
  98. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  99. data/lib/rubocop/cop/lint/multiple_compare.rb +1 -1
  100. data/lib/rubocop/cop/lint/nested_method_definition.rb +5 -7
  101. data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
  102. data/lib/rubocop/cop/lint/percent_string_array.rb +3 -12
  103. data/lib/rubocop/cop/lint/percent_symbol_array.rb +1 -1
  104. data/lib/rubocop/cop/lint/rand_one.rb +7 -1
  105. data/lib/rubocop/cop/lint/redundant_with_index.rb +77 -0
  106. data/lib/rubocop/cop/lint/require_parentheses.rb +1 -1
  107. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  108. data/lib/rubocop/cop/lint/rescue_type.rb +13 -6
  109. data/lib/rubocop/cop/lint/rescue_without_error_class.rb +38 -0
  110. data/lib/rubocop/cop/lint/return_in_void_context.rb +63 -0
  111. data/lib/rubocop/cop/lint/script_permission.rb +6 -0
  112. data/lib/rubocop/cop/lint/syntax.rb +17 -20
  113. data/lib/rubocop/cop/lint/unified_integer.rb +3 -2
  114. data/lib/rubocop/cop/lint/unneeded_disable.rb +1 -1
  115. data/lib/rubocop/cop/lint/unneeded_splat_expansion.rb +1 -1
  116. data/lib/rubocop/cop/lint/unreachable_code.rb +53 -8
  117. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +74 -0
  118. data/lib/rubocop/cop/lint/uri_regexp.rb +73 -0
  119. data/lib/rubocop/cop/lint/useless_access_modifier.rb +4 -8
  120. data/lib/rubocop/cop/lint/useless_setter_call.rb +10 -11
  121. data/lib/rubocop/cop/lint/void.rb +29 -23
  122. data/lib/rubocop/cop/metrics/line_length.rb +2 -2
  123. data/lib/rubocop/cop/metrics/method_length.rb +8 -3
  124. data/lib/rubocop/cop/metrics/parameter_lists.rb +5 -2
  125. data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +1 -1
  126. data/lib/rubocop/cop/mixin/enforce_superclass.rb +2 -2
  127. data/lib/rubocop/cop/mixin/first_element_line_break.rb +12 -3
  128. data/lib/rubocop/cop/mixin/heredoc.rb +28 -0
  129. data/lib/rubocop/cop/mixin/method_complexity.rb +9 -6
  130. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +68 -31
  131. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +18 -0
  132. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -1
  133. data/lib/rubocop/cop/mixin/percent_array.rb +52 -0
  134. data/lib/rubocop/cop/mixin/string_help.rb +1 -1
  135. data/lib/rubocop/cop/{style → naming}/accessor_method_name.rb +11 -12
  136. data/lib/rubocop/cop/{style → naming}/ascii_identifiers.rb +1 -1
  137. data/lib/rubocop/cop/{style/op_method.rb → naming/binary_operator_parameter_name.rb} +2 -2
  138. data/lib/rubocop/cop/{style → naming}/class_and_module_camel_case.rb +1 -1
  139. data/lib/rubocop/cop/{style → naming}/constant_name.rb +1 -1
  140. data/lib/rubocop/cop/{style → naming}/file_name.rb +8 -4
  141. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +68 -0
  142. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +58 -0
  143. data/lib/rubocop/cop/{style → naming}/method_name.rb +1 -1
  144. data/lib/rubocop/cop/{style → naming}/predicate_name.rb +6 -7
  145. data/lib/rubocop/cop/{style → naming}/variable_name.rb +11 -15
  146. data/lib/rubocop/cop/{style → naming}/variable_number.rb +1 -1
  147. data/lib/rubocop/cop/performance/caller.rb +39 -11
  148. data/lib/rubocop/cop/performance/casecmp.rb +4 -4
  149. data/lib/rubocop/cop/performance/compare_with_block.rb +4 -4
  150. data/lib/rubocop/cop/performance/double_start_end_with.rb +4 -4
  151. data/lib/rubocop/cop/performance/end_with.rb +3 -3
  152. data/lib/rubocop/cop/performance/fixed_size.rb +1 -1
  153. data/lib/rubocop/cop/performance/hash_each_methods.rb +66 -25
  154. data/lib/rubocop/cop/performance/lstrip_rstrip.rb +2 -2
  155. data/lib/rubocop/cop/performance/range_include.rb +2 -2
  156. data/lib/rubocop/cop/performance/redundant_block_call.rb +6 -6
  157. data/lib/rubocop/cop/performance/redundant_match.rb +5 -5
  158. data/lib/rubocop/cop/performance/redundant_merge.rb +39 -23
  159. data/lib/rubocop/cop/performance/redundant_sort_by.rb +2 -2
  160. data/lib/rubocop/cop/performance/regexp_match.rb +13 -5
  161. data/lib/rubocop/cop/performance/size.rb +1 -1
  162. data/lib/rubocop/cop/performance/start_with.rb +3 -3
  163. data/lib/rubocop/cop/performance/times_map.rb +23 -12
  164. data/lib/rubocop/cop/performance/unfreeze_string.rb +50 -0
  165. data/lib/rubocop/cop/performance/uri_default_parser.rb +47 -0
  166. data/lib/rubocop/cop/rails/active_support_aliases.rb +1 -1
  167. data/lib/rubocop/cop/rails/delegate.rb +36 -7
  168. data/lib/rubocop/cop/rails/delegate_allow_blank.rb +1 -1
  169. data/lib/rubocop/cop/rails/enum_uniqueness.rb +2 -2
  170. data/lib/rubocop/cop/rails/file_path.rb +3 -4
  171. data/lib/rubocop/cop/rails/find_each.rb +1 -1
  172. data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +48 -0
  173. data/lib/rubocop/cop/rails/http_positional_arguments.rb +5 -5
  174. data/lib/rubocop/cop/rails/not_null_column.rb +1 -1
  175. data/lib/rubocop/cop/rails/pluralization_grammar.rb +2 -2
  176. data/lib/rubocop/cop/rails/relative_date_constant.rb +1 -1
  177. data/lib/rubocop/cop/rails/request_referer.rb +2 -2
  178. data/lib/rubocop/cop/rails/reversible_migration.rb +12 -12
  179. data/lib/rubocop/cop/rails/save_bang.rb +8 -6
  180. data/lib/rubocop/cop/rails/scope_args.rb +1 -1
  181. data/lib/rubocop/cop/security/eval.rb +2 -2
  182. data/lib/rubocop/cop/security/json_load.rb +2 -2
  183. data/lib/rubocop/cop/security/marshal_load.rb +2 -2
  184. data/lib/rubocop/cop/security/yaml_load.rb +2 -2
  185. data/lib/rubocop/cop/style/alias.rb +44 -20
  186. data/lib/rubocop/cop/style/and_or.rb +48 -34
  187. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +1 -1
  188. data/lib/rubocop/cop/style/block_comments.rb +3 -1
  189. data/lib/rubocop/cop/style/block_delimiters.rb +2 -1
  190. data/lib/rubocop/cop/style/command_literal.rb +20 -9
  191. data/lib/rubocop/cop/style/conditional_assignment.rb +30 -28
  192. data/lib/rubocop/cop/style/copyright.rb +10 -10
  193. data/lib/rubocop/cop/style/def_with_parentheses.rb +6 -5
  194. data/lib/rubocop/cop/style/dir.rb +52 -0
  195. data/lib/rubocop/cop/style/documentation_method.rb +2 -6
  196. data/lib/rubocop/cop/style/empty_case_condition.rb +1 -1
  197. data/lib/rubocop/cop/style/empty_else.rb +3 -2
  198. data/lib/rubocop/cop/style/empty_literal.rb +1 -2
  199. data/lib/rubocop/cop/style/empty_method.rb +27 -17
  200. data/lib/rubocop/cop/style/flip_flop.rb +2 -2
  201. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +1 -1
  202. data/lib/rubocop/cop/style/guard_clause.rb +4 -2
  203. data/lib/rubocop/cop/style/hash_syntax.rb +10 -10
  204. data/lib/rubocop/cop/style/identical_conditional_branches.rb +5 -1
  205. data/lib/rubocop/cop/style/if_with_semicolon.rb +1 -1
  206. data/lib/rubocop/cop/style/implicit_runtime_error.rb +4 -3
  207. data/lib/rubocop/cop/style/inline_comment.rb +1 -1
  208. data/lib/rubocop/cop/style/inverse_methods.rb +20 -8
  209. data/lib/rubocop/cop/style/lambda.rb +19 -9
  210. data/lib/rubocop/cop/style/lambda_call.rb +22 -1
  211. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +4 -20
  212. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +6 -4
  213. data/lib/rubocop/cop/style/method_def_parentheses.rb +18 -26
  214. data/lib/rubocop/cop/style/method_missing.rb +5 -18
  215. data/lib/rubocop/cop/style/min_max.rb +67 -0
  216. data/lib/rubocop/cop/style/missing_else.rb +16 -3
  217. data/lib/rubocop/cop/style/mixin_grouping.rb +2 -2
  218. data/lib/rubocop/cop/style/module_function.rb +8 -4
  219. data/lib/rubocop/cop/style/multiline_if_modifier.rb +5 -1
  220. data/lib/rubocop/cop/style/multiline_memoization.rb +25 -3
  221. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -1
  222. data/lib/rubocop/cop/style/multiple_comparison.rb +1 -1
  223. data/lib/rubocop/cop/style/mutable_constant.rb +2 -6
  224. data/lib/rubocop/cop/style/negated_if.rb +8 -4
  225. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +8 -8
  226. data/lib/rubocop/cop/style/nested_ternary_operator.rb +1 -1
  227. data/lib/rubocop/cop/style/non_nil_check.rb +14 -14
  228. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +6 -2
  229. data/lib/rubocop/cop/style/numeric_literals.rb +2 -2
  230. data/lib/rubocop/cop/style/numeric_predicate.rb +8 -4
  231. data/lib/rubocop/cop/style/one_line_conditional.rb +8 -3
  232. data/lib/rubocop/cop/style/option_hash.rb +1 -1
  233. data/lib/rubocop/cop/style/optional_arguments.rb +1 -2
  234. data/lib/rubocop/cop/style/or_assignment.rb +88 -0
  235. data/lib/rubocop/cop/style/parallel_assignment.rb +2 -2
  236. data/lib/rubocop/cop/style/parentheses_around_condition.rb +12 -11
  237. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
  238. data/lib/rubocop/cop/style/percent_q_literals.rb +2 -2
  239. data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
  240. data/lib/rubocop/cop/style/proc.rb +1 -1
  241. data/lib/rubocop/cop/style/raise_args.rb +16 -17
  242. data/lib/rubocop/cop/style/redundant_begin.rb +6 -5
  243. data/lib/rubocop/cop/style/redundant_conditional.rb +95 -0
  244. data/lib/rubocop/cop/style/redundant_freeze.rb +1 -1
  245. data/lib/rubocop/cop/style/redundant_parentheses.rb +13 -11
  246. data/lib/rubocop/cop/style/redundant_return.rb +23 -11
  247. data/lib/rubocop/cop/style/redundant_self.rb +18 -9
  248. data/lib/rubocop/cop/style/regexp_literal.rb +12 -4
  249. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  250. data/lib/rubocop/cop/style/return_nil.rb +98 -0
  251. data/lib/rubocop/cop/style/safe_navigation.rb +80 -43
  252. data/lib/rubocop/cop/style/single_line_block_params.rb +14 -13
  253. data/lib/rubocop/cop/style/single_line_methods.rb +9 -13
  254. data/lib/rubocop/cop/style/special_global_vars.rb +3 -3
  255. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +17 -39
  256. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +22 -1
  257. data/lib/rubocop/cop/style/struct_inheritance.rb +1 -1
  258. data/lib/rubocop/cop/style/symbol_array.rb +5 -25
  259. data/lib/rubocop/cop/style/symbol_literal.rb +1 -1
  260. data/lib/rubocop/cop/style/symbol_proc.rb +3 -18
  261. data/lib/rubocop/cop/style/ternary_parentheses.rb +14 -10
  262. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +28 -9
  263. data/lib/rubocop/cop/style/trivial_accessors.rb +39 -56
  264. data/lib/rubocop/cop/style/unless_else.rb +1 -1
  265. data/lib/rubocop/cop/style/unneeded_capital_w.rb +1 -1
  266. data/lib/rubocop/cop/style/unneeded_interpolation.rb +1 -1
  267. data/lib/rubocop/cop/style/unneeded_percent_q.rb +1 -1
  268. data/lib/rubocop/cop/style/variable_interpolation.rb +8 -3
  269. data/lib/rubocop/cop/style/word_array.rb +7 -24
  270. data/lib/rubocop/cop/style/yoda_condition.rb +49 -14
  271. data/lib/rubocop/cop/style/zero_length_predicate.rb +25 -18
  272. data/lib/rubocop/cop/team.rb +16 -8
  273. data/lib/rubocop/cop/util.rb +11 -0
  274. data/lib/rubocop/formatter/disabled_config_formatter.rb +1 -1
  275. data/lib/rubocop/formatter/formatter_set.rb +2 -1
  276. data/lib/rubocop/formatter/offense_count_formatter.rb +2 -0
  277. data/lib/rubocop/formatter/simple_text_formatter.rb +1 -1
  278. data/lib/rubocop/formatter/tap_formatter.rb +71 -0
  279. data/lib/rubocop/formatter/worst_offenders_formatter.rb +2 -0
  280. data/lib/rubocop/node_pattern.rb +44 -26
  281. data/lib/rubocop/options.rb +1 -0
  282. data/lib/rubocop/processed_source.rb +3 -1
  283. data/lib/rubocop/remote_config.rb +5 -1
  284. data/lib/rubocop/result_cache.rb +1 -0
  285. data/lib/rubocop/rspec/cop_helper.rb +10 -10
  286. data/lib/rubocop/rspec/expect_offense.rb +6 -8
  287. data/lib/rubocop/rspec/shared_examples.rb +8 -8
  288. data/lib/rubocop/string_util.rb +2 -0
  289. data/lib/rubocop/version.rb +1 -1
  290. metadata +51 -18
  291. data/lib/rubocop/cop/mixin/access_modifier_node.rb +0 -41
  292. data/lib/rubocop/cop/mixin/on_method_def.rb +0 -44
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 19d303a2e571971385e48eab0517fd03f0273c9c
4
- data.tar.gz: 30129d935542762c11820ad7386ff213d4944cd2
3
+ metadata.gz: fc27de01c8e40a15273487b5c90697374de840fa
4
+ data.tar.gz: 745535b26861520e259edd7bd596c64b69337d1b
5
5
  SHA512:
6
- metadata.gz: 8725c2dc3d92496b06acd39cc8efc4fd25e45e5ea7b3e3e3f565cf923de82c46f5efec1e279b75151f3a81341b94b9c70c0c3c66af60c3ab2bd2b844963993b9
7
- data.tar.gz: d51e988da1e14e4b9477a2f5bec04cbd9509bcc09bb8febfc3e8d2df9957e8c98bb5c94e90fa3bacf9b0d848d496427bf6c57206c48a9c7acc3490bfade5d7c6
6
+ metadata.gz: b4c147e35b45939d5a54d225141c41fcb5740873ec98f0f914a0a0b9e9c9fdd5c00ed4ee79fc54b7e8e808fdeb2ca594b034700a4e1edb6b6ec2e7cd23e6d3dc
7
+ data.tar.gz: eca0914100842f7c36c082af77e4d780e5fd955642eb906d18eb9a7cc84bc8d7ddf445da7b89c29c3962cd063054aaa10a1755101e8ec7e6bc33fc948034576f
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/rubocop.svg)](http://badge.fury.io/rb/rubocop)
2
2
  [![Dependency Status](https://gemnasium.com/bbatsov/rubocop.svg)](https://gemnasium.com/bbatsov/rubocop)
3
3
  [![Travis Status](https://travis-ci.org/bbatsov/rubocop.svg?branch=master)](https://travis-ci.org/bbatsov/rubocop)
4
- [![Appveyor Status](https://ci.appveyor.com/api/projects/status/github/bbatsov/rubocop?svg=true)](https://ci.appveyor.com/project/bbatsov/rubocop)
4
+ [![Appveyor status](https://ci.appveyor.com/api/projects/status/e5jdwocv30oqm4sm?svg=true)](https://ci.appveyor.com/project/bbatsov/rubocop)
5
5
  [![Coverage Status](https://img.shields.io/codeclimate/coverage/github/bbatsov/rubocop.svg)](https://codeclimate.com/github/bbatsov/rubocop)
6
6
  [![Code Climate](https://codeclimate.com/github/bbatsov/rubocop/badges/gpa.svg)](https://codeclimate.com/github/bbatsov/rubocop)
7
7
  [![Inline docs](http://inch-ci.org/github/bbatsov/rubocop.svg)](http://inch-ci.org/github/bbatsov/rubocop)
@@ -51,7 +51,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
51
51
  might want to use a conservative version locking in your `Gemfile`:
52
52
 
53
53
  ```rb
54
- gem 'rubocop', '~> 0.49.1', require: false
54
+ gem 'rubocop', '~> 0.50.0', require: false
55
55
  ```
56
56
 
57
57
  ## Quickstart
@@ -86,7 +86,9 @@ Here's a list of RuboCop's core developers:
86
86
  * [Bozhidar Batsov](https://github.com/bbatsov)
87
87
  * [Jonas Arvidsson](https://github.com/jonas054)
88
88
  * [Yuji Nakayama](https://github.com/yujinakayama)
89
- * [Evgeni Dzhelyov](https://github.com/edzhelyov)
89
+ * [Evgeni Dzhelyov](https://github.com/edzhelyov) (retired)
90
+ * [Ted Johansson](https://github.com/drenmi)
91
+ * [Masataka Kuwabara](https://github.com/pocke)
90
92
 
91
93
  ## Logo
92
94
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- $LOAD_PATH.unshift(File.dirname(File.realpath(__FILE__)) + '/../lib')
4
+ $LOAD_PATH.unshift("#{__dir__}/../lib")
5
5
 
6
6
  require 'rubocop'
7
7
  require 'benchmark'
@@ -55,6 +55,7 @@ AllCops:
55
55
  - '**/Vagabondfile'
56
56
  - '**/Vagrantfile'
57
57
  Exclude:
58
+ - 'node_modules/**/*'
58
59
  - 'vendor/**/*'
59
60
  # Default formatter will be used if no `-f/--format` option is given.
60
61
  DefaultFormatter: progress
@@ -489,6 +490,9 @@ Layout/SpaceBeforeBlockBraces:
489
490
  SupportedStyles:
490
491
  - space
491
492
  - no_space
493
+ SupportedStylesForEmptyBraces:
494
+ - space
495
+ - no_space
492
496
 
493
497
  Layout/SpaceBeforeFirstArg:
494
498
  # When `true`, allows most uses of extra spacing if the intent is to align
@@ -533,6 +537,118 @@ Layout/TrailingBlankLines:
533
537
  - final_newline
534
538
  - final_blank_line
535
539
 
540
+ #################### Naming ##########################
541
+
542
+ Naming/FileName:
543
+ # File names listed in `AllCops:Include` are excluded by default. Add extra
544
+ # excludes here.
545
+ Exclude: []
546
+ # When `true`, requires that each source file should define a class or module
547
+ # with a name which matches the file name (converted to ... case).
548
+ # It further expects it to be nested inside modules which match the names
549
+ # of subdirectories in its path.
550
+ ExpectMatchingDefinition: false
551
+ # If non-`nil`, expect all source file names to match the following regex.
552
+ # Only the file name itself is matched, not the entire file path.
553
+ # Use anchors as necessary if you want to match the entire name rather than
554
+ # just a part of it.
555
+ Regex: ~
556
+ # With `IgnoreExecutableScripts` set to `true`, this cop does not
557
+ # report offending filenames for executable scripts (i.e. source
558
+ # files with a shebang in the first line).
559
+ IgnoreExecutableScripts: true
560
+ AllowedAcronyms:
561
+ - CLI
562
+ - DSL
563
+ - ACL
564
+ - API
565
+ - ASCII
566
+ - CPU
567
+ - CSS
568
+ - DNS
569
+ - EOF
570
+ - GUID
571
+ - HTML
572
+ - HTTP
573
+ - HTTPS
574
+ - ID
575
+ - IP
576
+ - JSON
577
+ - LHS
578
+ - QPS
579
+ - RAM
580
+ - RHS
581
+ - RPC
582
+ - SLA
583
+ - SMTP
584
+ - SQL
585
+ - SSH
586
+ - TCP
587
+ - TLS
588
+ - TTL
589
+ - UDP
590
+ - UI
591
+ - UID
592
+ - UUID
593
+ - URI
594
+ - URL
595
+ - UTF8
596
+ - VM
597
+ - XML
598
+ - XMPP
599
+ - XSRF
600
+ - XSS
601
+
602
+ Naming/HeredocDelimiterNaming:
603
+ Blacklist:
604
+ - END
605
+ - !ruby/regexp '/EO[A-Z]{1}/'
606
+
607
+ Naming/HeredocDelimiterCase:
608
+ EnforcedStyle: uppercase
609
+ SupportedStyles:
610
+ - lowercase
611
+ - uppercase
612
+
613
+ Naming/MethodName:
614
+ EnforcedStyle: snake_case
615
+ SupportedStyles:
616
+ - snake_case
617
+ - camelCase
618
+
619
+ Naming/PredicateName:
620
+ # Predicate name prefixes.
621
+ NamePrefix:
622
+ - is_
623
+ - has_
624
+ - have_
625
+ # Predicate name prefixes that should be removed.
626
+ NamePrefixBlacklist:
627
+ - is_
628
+ - has_
629
+ - have_
630
+ # Predicate names which, despite having a blacklisted prefix, or no `?`,
631
+ # should still be accepted
632
+ NameWhitelist:
633
+ - is_a?
634
+ # Exclude Rspec specs because there is a strong convention to write spec
635
+ # helpers in the form of `have_something` or `be_something`.
636
+ Exclude:
637
+ - 'spec/**/*'
638
+
639
+ Naming/VariableName:
640
+ EnforcedStyle: snake_case
641
+ SupportedStyles:
642
+ - snake_case
643
+ - camelCase
644
+
645
+ Naming/VariableNumber:
646
+ EnforcedStyle: normalcase
647
+ SupportedStyles:
648
+ - snake_case
649
+ - normalcase
650
+ - non_integer
651
+
536
652
  #################### Style ###########################
537
653
 
538
654
  Style/Alias:
@@ -773,66 +889,6 @@ Style/Encoding:
773
889
  - never
774
890
  AutoCorrectEncodingComment: '# encoding: utf-8'
775
891
 
776
- Style/FileName:
777
- # File names listed in `AllCops:Include` are excluded by default. Add extra
778
- # excludes here.
779
- Exclude: []
780
- # When `true`, requires that each source file should define a class or module
781
- # with a name which matches the file name (converted to ... case).
782
- # It further expects it to be nested inside modules which match the names
783
- # of subdirectories in its path.
784
- ExpectMatchingDefinition: false
785
- # If non-`nil`, expect all source file names to match the following regex.
786
- # Only the file name itself is matched, not the entire file path.
787
- # Use anchors as necessary if you want to match the entire name rather than
788
- # just a part of it.
789
- Regex: ~
790
- # With `IgnoreExecutableScripts` set to `true`, this cop does not
791
- # report offending filenames for executable scripts (i.e. source
792
- # files with a shebang in the first line).
793
- IgnoreExecutableScripts: true
794
- AllowedAcronyms:
795
- - CLI
796
- - DSL
797
- - ACL
798
- - API
799
- - ASCII
800
- - CPU
801
- - CSS
802
- - DNS
803
- - EOF
804
- - GUID
805
- - HTML
806
- - HTTP
807
- - HTTPS
808
- - ID
809
- - IP
810
- - JSON
811
- - LHS
812
- - QPS
813
- - RAM
814
- - RHS
815
- - RPC
816
- - SLA
817
- - SMTP
818
- - SQL
819
- - SSH
820
- - TCP
821
- - TLS
822
- - TTL
823
- - UDP
824
- - UI
825
- - UID
826
- - UUID
827
- - URI
828
- - URL
829
- - UTF8
830
- - VM
831
- - XML
832
- - XMPP
833
- - XSRF
834
- - XSS
835
-
836
892
  # Checks use of for or each in multiline loops.
837
893
  Style/For:
838
894
  EnforcedStyle: each
@@ -947,12 +1003,6 @@ Style/MethodDefParentheses:
947
1003
  - require_no_parentheses
948
1004
  - require_no_parentheses_except_multiline
949
1005
 
950
- Style/MethodName:
951
- EnforcedStyle: snake_case
952
- SupportedStyles:
953
- - snake_case
954
- - camelCase
955
-
956
1006
  # Checks the grouping of mixins (`include`, `extend`, `prepend`) in `class` and
957
1007
  # `module` bodies.
958
1008
  Style/MixinGrouping:
@@ -985,6 +1035,26 @@ Style/NegatedIf:
985
1035
  - prefix
986
1036
  - postfix
987
1037
 
1038
+ Style/NestedParenthesizedCalls:
1039
+ Whitelist:
1040
+ - be
1041
+ - be_a
1042
+ - be_an
1043
+ - be_between
1044
+ - be_falsey
1045
+ - be_kind_of
1046
+ - be_instance_of
1047
+ - be_truthy
1048
+ - be_within
1049
+ - eq
1050
+ - eql
1051
+ - end_with
1052
+ - include
1053
+ - match
1054
+ - raise_error
1055
+ - respond_to
1056
+ - start_with
1057
+
988
1058
  Style/Next:
989
1059
  # With `always` all conditions at the end of an iteration needs to be
990
1060
  # replaced by next - with `skip_modifier_ifs` the modifier if like this one
@@ -1057,26 +1127,6 @@ Style/PercentQLiterals:
1057
1127
  - lower_case_q # Use `%q` when possible, `%Q` when necessary
1058
1128
  - upper_case_q # Always use `%Q`
1059
1129
 
1060
- Style/PredicateName:
1061
- # Predicate name prefixes.
1062
- NamePrefix:
1063
- - is_
1064
- - has_
1065
- - have_
1066
- # Predicate name prefixes that should be removed.
1067
- NamePrefixBlacklist:
1068
- - is_
1069
- - has_
1070
- - have_
1071
- # Predicate names which, despite having a blacklisted prefix, or no `?`,
1072
- # should still be accepted
1073
- NameWhitelist:
1074
- - is_a?
1075
- # Exclude Rspec specs because there is a strong convention to write spec
1076
- # helpers in the form of `have_something` or `be_something`.
1077
- Exclude:
1078
- - 'spec/**/*'
1079
-
1080
1130
  Style/PreferredHashMethods:
1081
1131
  EnforcedStyle: short
1082
1132
  SupportedStyles:
@@ -1107,6 +1157,12 @@ Style/RegexpLiteral:
1107
1157
  # are found in the regexp string.
1108
1158
  AllowInnerSlashes: false
1109
1159
 
1160
+ Style/ReturnNil:
1161
+ EnforcedStyle: return
1162
+ SupportedStyles:
1163
+ - return
1164
+ - return_nil
1165
+
1110
1166
  Style/SafeNavigation:
1111
1167
  # Safe navigation may cause a statement to start returning `nil` in addition
1112
1168
  # to whatever it used to return.
@@ -1258,19 +1314,6 @@ Style/TrivialAccessors:
1258
1314
  - to_s
1259
1315
  - to_sym
1260
1316
 
1261
- Style/VariableName:
1262
- EnforcedStyle: snake_case
1263
- SupportedStyles:
1264
- - snake_case
1265
- - camelCase
1266
-
1267
- Style/VariableNumber:
1268
- EnforcedStyle: normalcase
1269
- SupportedStyles:
1270
- - snake_case
1271
- - normalcase
1272
- - non_integer
1273
-
1274
1317
  Style/WhileUntilModifier:
1275
1318
  MaxLineLength: 80
1276
1319
 
@@ -1289,6 +1332,14 @@ Style/WordArray:
1289
1332
  # The regular expression `WordRegex` decides what is considered a word.
1290
1333
  WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/'
1291
1334
 
1335
+ Style/YodaCondition:
1336
+ EnforcedStyle: all_comparison_operators
1337
+ SupportedStyles:
1338
+ # check all comparison operators
1339
+ - all_comparison_operators
1340
+ # check only equality operators: `!=` and `==`
1341
+ - equality_operators_only
1342
+
1292
1343
  #################### Metrics ###############################
1293
1344
 
1294
1345
  Metrics/AbcSize:
@@ -1447,6 +1498,12 @@ Rails/Date:
1447
1498
  - strict
1448
1499
  - flexible
1449
1500
 
1501
+ Rails/Delegate:
1502
+ # When set to true, using the target object as a prefix of the
1503
+ # method name without using the `delegate` method will be a
1504
+ # violation. When set to false, this case is legal.
1505
+ EnforceForPrefixed: true
1506
+
1450
1507
  Rails/DynamicFindBy:
1451
1508
  Whitelist:
1452
1509
  - find_by_sql
@@ -1475,6 +1532,10 @@ Rails/HasAndBelongsToMany:
1475
1532
  Include:
1476
1533
  - app/models/**/*.rb
1477
1534
 
1535
+ Rails/HasManyOrHasOneDependent:
1536
+ Include:
1537
+ - app/models/**/*.rb
1538
+
1478
1539
  Rails/NotNullColumn:
1479
1540
  Include:
1480
1541
  - db/migrate/*.rb
@@ -59,11 +59,6 @@ Style/DocumentationMethod:
59
59
  - 'spec/**/*'
60
60
  - 'test/**/*'
61
61
 
62
- Style/Encoding:
63
- Description: 'Use UTF-8 as the source file encoding.'
64
- StyleGuide: '#utf-8'
65
- Enabled: false
66
-
67
62
  Style/ImplicitRuntimeError:
68
63
  Description: >-
69
64
  Use `raise` or `fail` with an explicit exception class and
@@ -105,6 +100,10 @@ Style/OptionHash:
105
100
  Description: "Don't use option hashes when you can use keyword arguments."
106
101
  Enabled: false
107
102
 
103
+ Style/ReturnNil:
104
+ Description: 'Use return instead of return nil.'
105
+ Enabled: false
106
+
108
107
  Style/Send:
109
108
  Description: 'Prefer `Object#__send__` or `Object#public_send` to `send`, as `send` may overlap with existing methods.'
110
109
  StyleGuide: '#prefer-public-send'
@@ -338,13 +338,69 @@ Layout/TrailingWhitespace:
338
338
  StyleGuide: '#no-trailing-whitespace'
339
339
  Enabled: true
340
340
 
341
- #################### Style ###############################
341
+ #################### Naming ##############################
342
342
 
343
- Style/AccessorMethodName:
343
+ Naming/AccessorMethodName:
344
344
  Description: Check the naming of accessor methods for get_/set_.
345
345
  StyleGuide: '#accessor_mutator_method_names'
346
346
  Enabled: true
347
347
 
348
+ Naming/AsciiIdentifiers:
349
+ Description: 'Use only ascii symbols in identifiers.'
350
+ StyleGuide: '#english-identifiers'
351
+ Enabled: true
352
+
353
+ Naming/ClassAndModuleCamelCase:
354
+ Description: 'Use CamelCase for classes and modules.'
355
+ StyleGuide: '#camelcase-classes'
356
+ Enabled: true
357
+
358
+ Naming/ConstantName:
359
+ Description: 'Constants should use SCREAMING_SNAKE_CASE.'
360
+ StyleGuide: '#screaming-snake-case'
361
+ Enabled: true
362
+
363
+ Naming/FileName:
364
+ Description: 'Use snake_case for source file names.'
365
+ StyleGuide: '#snake-case-files'
366
+ Enabled: true
367
+
368
+ Naming/HeredocDelimiterCase:
369
+ Description: 'Use configured case for heredoc delimiters.'
370
+ StyleGuide: '#heredoc-delimiters'
371
+ Enabled: true
372
+
373
+ Naming/HeredocDelimiterNaming:
374
+ Description: 'Use descriptive heredoc delimiters.'
375
+ StyleGuide: '#heredoc-delimiters'
376
+ Enabled: true
377
+
378
+ Naming/MethodName:
379
+ Description: 'Use the configured style when naming methods.'
380
+ StyleGuide: '#snake-case-symbols-methods-vars'
381
+ Enabled: true
382
+
383
+ Naming/PredicateName:
384
+ Description: 'Check the names of predicate methods.'
385
+ StyleGuide: '#bool-methods-qmark'
386
+ Enabled: true
387
+
388
+ Naming/BinaryOperatorParameterName:
389
+ Description: 'When defining binary operators, name the argument other.'
390
+ StyleGuide: '#other-arg'
391
+ Enabled: true
392
+
393
+ Naming/VariableName:
394
+ Description: 'Use the configured style when naming variables.'
395
+ StyleGuide: '#snake-case-symbols-methods-vars'
396
+ Enabled: true
397
+
398
+ Naming/VariableNumber:
399
+ Description: 'Use the configured style when numbering variables.'
400
+ Enabled: true
401
+
402
+ #################### Style ###############################
403
+
348
404
  Style/Alias:
349
405
  Description: 'Use alias instead of alias_method.'
350
406
  StyleGuide: '#alias-method'
@@ -365,11 +421,6 @@ Style/AsciiComments:
365
421
  StyleGuide: '#english-comments'
366
422
  Enabled: true
367
423
 
368
- Style/AsciiIdentifiers:
369
- Description: 'Use only ascii symbols in identifiers.'
370
- StyleGuide: '#english-identifiers'
371
- Enabled: true
372
-
373
424
  Style/Attr:
374
425
  Description: 'Checks for uses of Module#attr.'
375
426
  StyleGuide: '#attr'
@@ -412,13 +463,9 @@ Style/CharacterLiteral:
412
463
  StyleGuide: '#no-character-literals'
413
464
  Enabled: true
414
465
 
415
- Style/ClassAndModuleCamelCase:
416
- Description: 'Use CamelCase for classes and modules.'
417
- StyleGuide: '#camelcase-classes'
418
- Enabled: true
419
-
420
466
  Style/ClassAndModuleChildren:
421
467
  Description: 'Checks style of children classes and modules.'
468
+ StyleGuide: '#namespace-definition'
422
469
  Enabled: true
423
470
 
424
471
  Style/ClassCheck:
@@ -459,16 +506,17 @@ Style/ConditionalAssignment:
459
506
  of assigning that variable inside of each branch.
460
507
  Enabled: true
461
508
 
462
- Style/ConstantName:
463
- Description: 'Constants should use SCREAMING_SNAKE_CASE.'
464
- StyleGuide: '#screaming-snake-case'
465
- Enabled: true
466
-
467
509
  Style/DefWithParentheses:
468
510
  Description: 'Use def with parentheses when there are arguments.'
469
511
  StyleGuide: '#method-parens'
470
512
  Enabled: true
471
513
 
514
+ Style/Dir:
515
+ Description: >-
516
+ Use the `__dir__` method to retrieve the canonicalized
517
+ absolute path to the current file.
518
+ Enabled: true
519
+
472
520
  Style/Documentation:
473
521
  Description: 'Document classes and non-namespace modules.'
474
522
  Enabled: true
@@ -514,16 +562,16 @@ Style/EndBlock:
514
562
  StyleGuide: '#no-END-blocks'
515
563
  Enabled: true
516
564
 
565
+ Style/Encoding:
566
+ Description: 'Use UTF-8 as the source file encoding.'
567
+ StyleGuide: '#utf-8'
568
+ Enabled: true
569
+
517
570
  Style/EvenOdd:
518
571
  Description: 'Favor the use of Integer#even? && Integer#odd?'
519
572
  StyleGuide: '#predicate-methods'
520
573
  Enabled: true
521
574
 
522
- Style/FileName:
523
- Description: 'Use snake_case for source file names.'
524
- StyleGuide: '#snake-case-files'
525
- Enabled: true
526
-
527
575
  Style/FrozenStringLiteralComment:
528
576
  Description: >-
529
577
  Add the frozen_string_literal comment to the top of files
@@ -634,16 +682,17 @@ Style/MethodDefParentheses:
634
682
  StyleGuide: '#method-parens'
635
683
  Enabled: true
636
684
 
637
- Style/MethodName:
638
- Description: 'Use the configured style when naming methods.'
639
- StyleGuide: '#snake-case-symbols-methods-vars'
640
- Enabled: true
641
-
642
685
  Style/MethodMissing:
643
686
  Description: 'Avoid using `method_missing`.'
644
687
  StyleGuide: '#no-method-missing'
645
688
  Enabled: true
646
689
 
690
+ Style/MinMax:
691
+ Description: >-
692
+ Use `Enumerable#minmax` instead of `Enumerable#min`
693
+ and `Enumerable#max` in conjunction.'
694
+ Enabled: true
695
+
647
696
  Style/MixinGrouping:
648
697
  Description: 'Checks for grouping of mixins in `class` and `module` bodies.'
649
698
  StyleGuide: '#mixin-grouping'
@@ -768,11 +817,6 @@ Style/OneLineConditional:
768
817
  StyleGuide: '#ternary-operator'
769
818
  Enabled: true
770
819
 
771
- Style/OpMethod:
772
- Description: 'When defining binary operators, name the argument other.'
773
- StyleGuide: '#other-arg'
774
- Enabled: true
775
-
776
820
  Style/OptionalArguments:
777
821
  Description: >-
778
822
  Checks for optional arguments that do not appear at the end
@@ -780,6 +824,11 @@ Style/OptionalArguments:
780
824
  StyleGuide: '#optional-arguments'
781
825
  Enabled: true
782
826
 
827
+ Style/OrAssignment:
828
+ Description: 'Recommend usage of double pipe equals (||=) where applicable.'
829
+ StyleGuide: '#double-pipe-for-uninit'
830
+ Enabled: true
831
+
783
832
  Style/ParallelAssignment:
784
833
  Description: >-
785
834
  Check for simple usages of parallel assignment.
@@ -809,11 +858,6 @@ Style/PerlBackrefs:
809
858
  StyleGuide: '#no-perl-regexp-last-matchers'
810
859
  Enabled: true
811
860
 
812
- Style/PredicateName:
813
- Description: 'Check the names of predicate methods.'
814
- StyleGuide: '#bool-methods-qmark'
815
- Enabled: true
816
-
817
861
  Style/PreferredHashMethods:
818
862
  Description: 'Checks use of `has_key?` and `has_value?` Hash methods.'
819
863
  StyleGuide: '#hash-key'
@@ -834,6 +878,10 @@ Style/RedundantBegin:
834
878
  StyleGuide: '#begin-implicit'
835
879
  Enabled: true
836
880
 
881
+ Style/RedundantConditional:
882
+ Description: "Don't return true/false from a conditional."
883
+ Enabled: true
884
+
837
885
  Style/RedundantException:
838
886
  Description: "Checks for an obsolete RuntimeException argument in raise/fail."
839
887
  StyleGuide: '#no-explicit-runtimeerror'
@@ -988,15 +1036,6 @@ Style/VariableInterpolation:
988
1036
  StyleGuide: '#curlies-interpolate'
989
1037
  Enabled: true
990
1038
 
991
- Style/VariableName:
992
- Description: 'Use the configured style when naming variables.'
993
- StyleGuide: '#snake-case-symbols-methods-vars'
994
- Enabled: true
995
-
996
- Style/VariableNumber:
997
- Description: 'Use the configured style when numbering variables.'
998
- Enabled: true
999
-
1000
1039
  Style/WhenThen:
1001
1040
  Description: 'Use when x then ... for one-line cases.'
1002
1041
  StyleGuide: '#one-line-cases'
@@ -1113,6 +1152,10 @@ Lint/BlockAlignment:
1113
1152
  Description: 'Align block ends correctly.'
1114
1153
  Enabled: true
1115
1154
 
1155
+ Lint/BooleanSymbol:
1156
+ Description: 'Check for `:true` and `:false` symbols.'
1157
+ Enabled: true
1158
+
1116
1159
  Lint/CircularArgumentReference:
1117
1160
  Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument."
1118
1161
  Enabled: true
@@ -1217,6 +1260,10 @@ Lint/InheritException:
1217
1260
  Description: 'Avoid inheriting from the `Exception` class.'
1218
1261
  Enabled: true
1219
1262
 
1263
+ Lint/InterpolationCheck:
1264
+ Description: 'Raise warning for interpolation in single q strs'
1265
+ Enabled: true
1266
+
1220
1267
  Lint/InvalidCharacterLiteral:
1221
1268
  Description: >-
1222
1269
  Checks for invalid character literals with a non-escaped
@@ -1280,6 +1327,10 @@ Lint/RandOne:
1280
1327
  and most likely a mistake.
1281
1328
  Enabled: true
1282
1329
 
1330
+ Lint/RedundantWithIndex:
1331
+ Description: 'Checks for redundant `with_index`.'
1332
+ Enabled: true
1333
+
1283
1334
  Lint/RequireParentheses:
1284
1335
  Description: >-
1285
1336
  Use parentheses in the method call to avoid confusion
@@ -1295,6 +1346,11 @@ Lint/RescueType:
1295
1346
  Description: 'Avoid rescuing from non constants that could result in a `TypeError`.'
1296
1347
  Enabled: true
1297
1348
 
1349
+ Lint/RescueWithoutErrorClass:
1350
+ Description: 'Avoid rescuing without specifying an error class.'
1351
+ StyleGuide: '#no-blind-rescues'
1352
+ Enabled: true
1353
+
1298
1354
  Lint/SafeNavigationChain:
1299
1355
  Description: 'Do not chain ordinary method call after safe navigation operator.'
1300
1356
  Enabled: true
@@ -1320,6 +1376,10 @@ Lint/StringConversionInInterpolation:
1320
1376
  StyleGuide: '#no-to-s'
1321
1377
  Enabled: true
1322
1378
 
1379
+ Lint/Syntax:
1380
+ Description: 'Checks syntax error'
1381
+ Enabled: true
1382
+
1323
1383
  Lint/UnderscorePrefixedVariableName:
1324
1384
  Description: 'Do not use prefix `_` for a variable that is used.'
1325
1385
  Enabled: true
@@ -1353,6 +1413,20 @@ Lint/UnreachableCode:
1353
1413
  Description: 'Unreachable code.'
1354
1414
  Enabled: true
1355
1415
 
1416
+ Lint/UriEscapeUnescape:
1417
+ Description: >-
1418
+ `URI.escape` method is obsolete and should not be used. Instead, use
1419
+ `CGI.escape`, `URI.encode_www_form` or `URI.encode_www_form_component`
1420
+ depending on your specific use case.
1421
+ Also `URI.unescape` method is obsolete and should not be used. Instead, use
1422
+ `CGI.unescape`, `URI.decode_www_form` or `URI.decode_www_form_component`
1423
+ depending on your specific use case.
1424
+ Enabled: true
1425
+
1426
+ Lint/UriRegexp:
1427
+ Description: 'Use `URI::DEFAULT_PARSER.make_regexp` instead of `URI.regexp`.'
1428
+ Enabled: true
1429
+
1356
1430
  Lint/UselessAccessModifier:
1357
1431
  Description: 'Checks for useless access modifiers.'
1358
1432
  Enabled: true
@@ -1372,6 +1446,10 @@ Lint/UselessElseWithoutRescue:
1372
1446
  Description: 'Checks for useless `else` in `begin..end` without `rescue`.'
1373
1447
  Enabled: true
1374
1448
 
1449
+ Lint/ReturnInVoidContext:
1450
+ Description: 'Checks for return in void context.'
1451
+ Enabled: true
1452
+
1375
1453
  Lint/UselessSetterCall:
1376
1454
  Description: 'Checks for useless setter call to a local variable.'
1377
1455
  Enabled: true
@@ -1518,7 +1596,7 @@ Performance/Size:
1518
1596
  Enabled: true
1519
1597
 
1520
1598
  Performance/CompareWithBlock:
1521
- Description: 'Use `sort_by(&:foo)` instead of `sort_by { |a, b| a.foo <=> b.foo }`.'
1599
+ Description: 'Use `sort_by(&:foo)` instead of `sort { |a, b| a.foo <=> b.foo }`.'
1522
1600
  Enabled: true
1523
1601
 
1524
1602
  Performance/StartWith:
@@ -1540,6 +1618,15 @@ Performance/StringReplacement:
1540
1618
 
1541
1619
  Performance/TimesMap:
1542
1620
  Description: 'Checks for .times.map calls.'
1621
+ AutoCorrect: false
1622
+ Enabled: true
1623
+
1624
+ Performance/UnfreezeString:
1625
+ Description: 'Use unary plus to get an unfrozen string literal.'
1626
+ Enabled: true
1627
+
1628
+ Performance/UriDefaultParser:
1629
+ Description: 'Use `URI::DEFAULT_PARSER` instead of `URI::Parser.new`.'
1543
1630
  Enabled: true
1544
1631
 
1545
1632
  #################### Rails #################################
@@ -1622,6 +1709,11 @@ Rails/HasAndBelongsToMany:
1622
1709
  StyleGuide: 'https://github.com/bbatsov/rails-style-guide#has-many-through'
1623
1710
  Enabled: true
1624
1711
 
1712
+ Rails/HasManyOrHasOneDependent:
1713
+ Description: 'Define the dependent option to the has_many and has_one associations.'
1714
+ StyleGuide: 'https://github.com/bbatsov/rails-style-guide#has_many-has_one-dependent-option'
1715
+ Enabled: true
1716
+
1625
1717
  Rails/HttpPositionalArguments:
1626
1718
  Description: 'Use keyword arguments instead of positional arguments in http method calls.'
1627
1719
  Enabled: true
@@ -1744,6 +1836,16 @@ Bundler/DuplicatedGem:
1744
1836
  - '**/Gemfile'
1745
1837
  - '**/gems.rb'
1746
1838
 
1839
+ Bundler/InsecureProtocolSource:
1840
+ Description: >-
1841
+ The source `:gemcutter`, `:rubygems` and `:rubyforge` are deprecated
1842
+ because HTTP requests are insecure. Please change your source to
1843
+ 'https://rubygems.org' if possible, or 'http://rubygems.org' if not.
1844
+ Enabled: true
1845
+ Include:
1846
+ - '**/Gemfile'
1847
+ - '**/gems.rb'
1848
+
1747
1849
  Bundler/OrderedGems:
1748
1850
  Description: >-
1749
1851
  Gems within groups in the Gemfile should be alphabetically sorted.