rubocop 0.52.1 → 0.53.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/LICENSE.txt +1 -1
  3. data/README.md +2 -2
  4. data/config/default.yml +118 -46
  5. data/config/disabled.yml +8 -8
  6. data/config/enabled.yml +84 -28
  7. data/lib/rubocop.rb +28 -8
  8. data/lib/rubocop/ast/builder.rb +35 -37
  9. data/lib/rubocop/ast/node.rb +16 -1
  10. data/lib/rubocop/ast/node/and_node.rb +0 -8
  11. data/lib/rubocop/ast/node/block_node.rb +1 -9
  12. data/lib/rubocop/ast/node/case_node.rb +0 -8
  13. data/lib/rubocop/ast/node/ensure_node.rb +0 -8
  14. data/lib/rubocop/ast/node/for_node.rb +0 -8
  15. data/lib/rubocop/ast/node/or_node.rb +0 -8
  16. data/lib/rubocop/ast/node/pair_node.rb +0 -8
  17. data/lib/rubocop/ast/node/resbody_node.rb +0 -8
  18. data/lib/rubocop/ast/node/send_node.rb +0 -8
  19. data/lib/rubocop/ast/node/symbol_node.rb +0 -8
  20. data/lib/rubocop/ast/node/until_node.rb +0 -8
  21. data/lib/rubocop/ast/node/when_node.rb +0 -8
  22. data/lib/rubocop/ast/node/while_node.rb +0 -8
  23. data/lib/rubocop/cli.rb +17 -7
  24. data/lib/rubocop/comment_config.rb +24 -3
  25. data/lib/rubocop/config.rb +75 -6
  26. data/lib/rubocop/config_loader.rb +18 -28
  27. data/lib/rubocop/config_loader_resolver.rb +61 -9
  28. data/lib/rubocop/cop/bundler/duplicated_gem.rb +3 -1
  29. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +4 -2
  30. data/lib/rubocop/cop/bundler/ordered_gems.rb +1 -1
  31. data/lib/rubocop/cop/commissioner.rb +2 -2
  32. data/lib/rubocop/cop/cop.rb +4 -0
  33. data/lib/rubocop/cop/corrector.rb +11 -1
  34. data/lib/rubocop/cop/correctors/alignment_corrector.rb +3 -6
  35. data/lib/rubocop/cop/correctors/line_break_corrector.rb +59 -0
  36. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -1
  37. data/lib/rubocop/cop/correctors/space_corrector.rb +13 -0
  38. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +1 -1
  39. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +3 -1
  40. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
  41. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +3 -5
  42. data/lib/rubocop/cop/generator.rb +29 -8
  43. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +2 -0
  44. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +2 -0
  45. data/lib/rubocop/cop/layout/align_hash.rb +106 -37
  46. data/lib/rubocop/cop/{lint → layout}/block_alignment.rb +8 -5
  47. data/lib/rubocop/cop/layout/block_end_newline.rb +7 -17
  48. data/lib/rubocop/cop/layout/case_indentation.rb +1 -0
  49. data/lib/rubocop/cop/layout/class_structure.rb +6 -7
  50. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  51. data/lib/rubocop/cop/{lint → layout}/condition_position.rb +3 -3
  52. data/lib/rubocop/cop/{lint → layout}/def_end_alignment.rb +2 -1
  53. data/lib/rubocop/cop/layout/else_alignment.rb +1 -1
  54. data/lib/rubocop/cop/layout/empty_comment.rb +140 -0
  55. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +2 -0
  56. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -0
  57. data/lib/rubocop/cop/layout/empty_lines.rb +3 -1
  58. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +7 -5
  59. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +20 -10
  60. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +20 -0
  61. data/lib/rubocop/cop/{lint → layout}/end_alignment.rb +37 -6
  62. data/lib/rubocop/cop/layout/end_of_line.rb +1 -0
  63. data/lib/rubocop/cop/layout/extra_spacing.rb +30 -37
  64. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +1 -0
  65. data/lib/rubocop/cop/layout/indent_heredoc.rb +38 -2
  66. data/lib/rubocop/cop/layout/indentation_consistency.rb +105 -1
  67. data/lib/rubocop/cop/layout/indentation_width.rb +4 -3
  68. data/lib/rubocop/cop/layout/initial_indentation.rb +15 -1
  69. data/lib/rubocop/cop/layout/leading_comment_space.rb +4 -2
  70. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +1 -0
  71. data/lib/rubocop/cop/layout/multiline_block_layout.rb +2 -0
  72. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +62 -29
  73. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
  74. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +74 -33
  75. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +16 -2
  76. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +3 -1
  77. data/lib/rubocop/cop/layout/space_after_method_name.rb +2 -0
  78. data/lib/rubocop/cop/layout/space_after_not.rb +2 -0
  79. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +1 -0
  80. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +15 -2
  81. data/lib/rubocop/cop/layout/space_around_operators.rb +15 -13
  82. data/lib/rubocop/cop/layout/space_before_block_braces.rb +13 -1
  83. data/lib/rubocop/cop/layout/space_before_comment.rb +6 -4
  84. data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -0
  85. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -0
  86. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +30 -45
  87. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +3 -2
  88. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +48 -18
  89. data/lib/rubocop/cop/layout/space_inside_parens.rb +8 -7
  90. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +57 -11
  91. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +1 -0
  92. data/lib/rubocop/cop/layout/tab.rb +42 -16
  93. data/lib/rubocop/cop/layout/trailing_blank_lines.rb +46 -13
  94. data/lib/rubocop/cop/layout/trailing_whitespace.rb +12 -0
  95. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +5 -3
  96. data/lib/rubocop/cop/lint/big_decimal_new.rb +44 -0
  97. data/lib/rubocop/cop/lint/boolean_symbol.rb +2 -2
  98. data/lib/rubocop/cop/lint/circular_argument_reference.rb +2 -2
  99. data/lib/rubocop/cop/lint/debugger.rb +2 -2
  100. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +5 -4
  101. data/lib/rubocop/cop/lint/duplicate_methods.rb +20 -9
  102. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +4 -3
  103. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +16 -10
  104. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +5 -4
  105. data/lib/rubocop/cop/lint/inherit_exception.rb +2 -2
  106. data/lib/rubocop/cop/lint/interpolation_check.rb +4 -3
  107. data/lib/rubocop/cop/lint/literal_as_condition.rb +2 -2
  108. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +2 -0
  109. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +7 -5
  110. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  111. data/lib/rubocop/cop/lint/number_conversion.rb +59 -0
  112. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +86 -0
  113. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +2 -0
  114. data/lib/rubocop/cop/lint/percent_string_array.rb +0 -2
  115. data/lib/rubocop/cop/lint/rand_one.rb +2 -2
  116. data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -0
  117. data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -0
  118. data/lib/rubocop/cop/lint/require_parentheses.rb +2 -0
  119. data/lib/rubocop/cop/lint/rescue_type.rb +6 -3
  120. data/lib/rubocop/cop/lint/return_in_void_context.rb +2 -2
  121. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +17 -21
  122. data/lib/rubocop/cop/lint/script_permission.rb +30 -10
  123. data/lib/rubocop/cop/lint/shadowed_argument.rb +3 -3
  124. data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -0
  125. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +2 -2
  126. data/lib/rubocop/cop/lint/unified_integer.rb +2 -2
  127. data/lib/rubocop/cop/lint/{unneeded_disable.rb → unneeded_cop_disable_directive.rb} +13 -7
  128. data/lib/rubocop/cop/lint/unneeded_cop_enable_directive.rb +97 -0
  129. data/lib/rubocop/cop/lint/unneeded_require_statement.rb +1 -0
  130. data/lib/rubocop/cop/lint/unreachable_code.rb +3 -3
  131. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +11 -10
  132. data/lib/rubocop/cop/lint/useless_access_modifier.rb +7 -5
  133. data/lib/rubocop/cop/lint/useless_assignment.rb +2 -2
  134. data/lib/rubocop/cop/lint/useless_setter_call.rb +2 -2
  135. data/lib/rubocop/cop/lint/void.rb +49 -10
  136. data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
  137. data/lib/rubocop/cop/metrics/line_length.rb +5 -2
  138. data/lib/rubocop/cop/mixin/alignment.rb +4 -0
  139. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +1 -1
  140. data/lib/rubocop/cop/mixin/def_node.rb +4 -0
  141. data/lib/rubocop/cop/mixin/documentation_comment.rb +11 -3
  142. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +12 -2
  143. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +20 -1
  144. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +4 -0
  145. data/lib/rubocop/cop/mixin/hash_alignment.rb +2 -2
  146. data/lib/rubocop/cop/mixin/match_range.rb +2 -0
  147. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +6 -0
  148. data/lib/rubocop/cop/mixin/nil_methods.rb +19 -0
  149. data/lib/rubocop/cop/mixin/percent_literal.rb +57 -9
  150. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +6 -5
  151. data/lib/rubocop/cop/mixin/range_help.rb +102 -0
  152. data/lib/rubocop/cop/mixin/rescue_node.rb +1 -1
  153. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +8 -7
  154. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +11 -9
  155. data/lib/rubocop/cop/mixin/statement_modifier.rb +3 -10
  156. data/lib/rubocop/cop/mixin/surrounding_space.rb +38 -8
  157. data/lib/rubocop/cop/mixin/trailing_body.rb +26 -0
  158. data/lib/rubocop/cop/mixin/trailing_comma.rb +15 -3
  159. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +104 -0
  160. data/lib/rubocop/cop/naming/ascii_identifiers.rb +3 -1
  161. data/lib/rubocop/cop/naming/file_name.rb +5 -10
  162. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +76 -0
  163. data/lib/rubocop/cop/naming/uncommunicative_block_param_name.rb +48 -0
  164. data/lib/rubocop/cop/naming/uncommunicative_method_param_name.rb +57 -0
  165. data/lib/rubocop/cop/offense.rb +3 -2
  166. data/lib/rubocop/cop/performance/case_when_splat.rb +1 -0
  167. data/lib/rubocop/cop/performance/casecmp.rb +17 -8
  168. data/lib/rubocop/cop/performance/compare_with_block.rb +2 -0
  169. data/lib/rubocop/cop/performance/count.rb +1 -0
  170. data/lib/rubocop/cop/performance/fixed_size.rb +41 -0
  171. data/lib/rubocop/cop/performance/flat_map.rb +2 -0
  172. data/lib/rubocop/cop/performance/lstrip_rstrip.rb +2 -0
  173. data/lib/rubocop/cop/performance/redundant_merge.rb +1 -1
  174. data/lib/rubocop/cop/performance/redundant_sort_by.rb +2 -0
  175. data/lib/rubocop/cop/performance/regexp_match.rb +4 -0
  176. data/lib/rubocop/cop/performance/reverse_each.rb +2 -0
  177. data/lib/rubocop/cop/performance/string_replacement.rb +2 -0
  178. data/lib/rubocop/cop/rails/active_record_aliases.rb +46 -0
  179. data/lib/rubocop/cop/rails/blank.rb +3 -3
  180. data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +6 -0
  181. data/lib/rubocop/cop/rails/delegate.rb +6 -6
  182. data/lib/rubocop/cop/rails/file_path.rb +7 -1
  183. data/lib/rubocop/cop/rails/find_by.rb +2 -0
  184. data/lib/rubocop/cop/rails/http_positional_arguments.rb +17 -5
  185. data/lib/rubocop/cop/rails/inverse_of.rb +21 -2
  186. data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +45 -9
  187. data/lib/rubocop/cop/rails/presence.rb +8 -2
  188. data/lib/rubocop/cop/rails/present.rb +5 -5
  189. data/lib/rubocop/cop/rails/read_write_attribute.rb +4 -3
  190. data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +1 -0
  191. data/lib/rubocop/cop/rails/relative_date_constant.rb +4 -3
  192. data/lib/rubocop/cop/rails/request_referer.rb +3 -2
  193. data/lib/rubocop/cop/rails/reversible_migration.rb +9 -8
  194. data/lib/rubocop/cop/rails/safe_navigation.rb +3 -2
  195. data/lib/rubocop/cop/rails/save_bang.rb +11 -12
  196. data/lib/rubocop/cop/rails/skips_model_validations.rb +2 -2
  197. data/lib/rubocop/cop/rails/time_zone.rb +38 -16
  198. data/lib/rubocop/cop/rails/uniq_before_pluck.rb +26 -16
  199. data/lib/rubocop/cop/rails/validation.rb +30 -2
  200. data/lib/rubocop/cop/security/open.rb +48 -0
  201. data/lib/rubocop/cop/style/and_or.rb +1 -0
  202. data/lib/rubocop/cop/style/ascii_comments.rb +3 -1
  203. data/lib/rubocop/cop/style/attr.rb +2 -0
  204. data/lib/rubocop/cop/style/block_comments.rb +3 -1
  205. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +2 -5
  206. data/lib/rubocop/cop/style/class_and_module_children.rb +1 -0
  207. data/lib/rubocop/cop/style/class_vars.rb +23 -0
  208. data/lib/rubocop/cop/style/colon_method_call.rb +1 -2
  209. data/lib/rubocop/cop/style/comment_annotation.rb +6 -4
  210. data/lib/rubocop/cop/style/commented_keyword.rb +3 -1
  211. data/lib/rubocop/cop/style/conditional_assignment.rb +1 -1
  212. data/lib/rubocop/cop/style/copyright.rb +3 -1
  213. data/lib/rubocop/cop/style/each_with_object.rb +15 -1
  214. data/lib/rubocop/cop/style/empty_block_parameter.rb +1 -0
  215. data/lib/rubocop/cop/style/empty_case_condition.rb +2 -0
  216. data/lib/rubocop/cop/style/empty_else.rb +9 -5
  217. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +1 -0
  218. data/lib/rubocop/cop/style/empty_line_after_guard_clause.rb +80 -0
  219. data/lib/rubocop/cop/style/empty_literal.rb +1 -0
  220. data/lib/rubocop/cop/style/encoding.rb +2 -0
  221. data/lib/rubocop/cop/style/expand_path_arguments.rb +194 -0
  222. data/lib/rubocop/cop/style/for.rb +33 -0
  223. data/lib/rubocop/cop/style/format_string.rb +1 -1
  224. data/lib/rubocop/cop/style/format_string_token.rb +4 -5
  225. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +2 -1
  226. data/lib/rubocop/cop/style/hash_syntax.rb +1 -0
  227. data/lib/rubocop/cop/style/if_unless_modifier.rb +1 -1
  228. data/lib/rubocop/cop/style/inline_comment.rb +1 -1
  229. data/lib/rubocop/cop/style/lambda.rb +1 -1
  230. data/lib/rubocop/cop/style/line_end_concatenation.rb +2 -0
  231. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -0
  232. data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -0
  233. data/lib/rubocop/cop/style/missing_else.rb +72 -7
  234. data/lib/rubocop/cop/style/mixin_usage.rb +3 -5
  235. data/lib/rubocop/cop/style/module_function.rb +10 -0
  236. data/lib/rubocop/cop/style/multiline_block_chain.rb +2 -0
  237. data/lib/rubocop/cop/style/multiline_if_then.rb +1 -0
  238. data/lib/rubocop/cop/style/nested_modifier.rb +2 -0
  239. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +2 -0
  240. data/lib/rubocop/cop/style/next.rb +1 -0
  241. data/lib/rubocop/cop/style/not.rb +2 -0
  242. data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
  243. data/lib/rubocop/cop/style/one_line_conditional.rb +2 -2
  244. data/lib/rubocop/cop/style/redundant_exception.rb +8 -3
  245. data/lib/rubocop/cop/style/redundant_return.rb +37 -3
  246. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  247. data/lib/rubocop/cop/style/rescue_standard_error.rb +1 -0
  248. data/lib/rubocop/cop/style/safe_navigation.rb +74 -32
  249. data/lib/rubocop/cop/style/semicolon.rb +3 -1
  250. data/lib/rubocop/cop/style/single_line_methods.rb +14 -23
  251. data/lib/rubocop/cop/style/stderr_puts.rb +2 -0
  252. data/lib/rubocop/cop/style/string_hash_keys.rb +12 -0
  253. data/lib/rubocop/cop/style/string_literals.rb +1 -1
  254. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +1 -1
  255. data/lib/rubocop/cop/style/symbol_array.rb +29 -0
  256. data/lib/rubocop/cop/style/symbol_proc.rb +2 -0
  257. data/lib/rubocop/cop/style/trailing_body_on_class.rb +43 -0
  258. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +7 -54
  259. data/lib/rubocop/cop/style/trailing_body_on_module.rb +43 -0
  260. data/lib/rubocop/cop/style/{trailing_comma_in_literal.rb → trailing_comma_in_array_literal.rb} +2 -20
  261. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +56 -0
  262. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +17 -20
  263. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +1 -0
  264. data/lib/rubocop/cop/style/unless_else.rb +2 -0
  265. data/lib/rubocop/cop/style/word_array.rb +0 -1
  266. data/lib/rubocop/cop/style/yoda_condition.rb +1 -0
  267. data/lib/rubocop/cop/team.rb +5 -5
  268. data/lib/rubocop/cop/util.rb +23 -188
  269. data/lib/rubocop/cop/variable_force.rb +1 -1
  270. data/lib/rubocop/file_finder.rb +45 -0
  271. data/lib/rubocop/formatter/disabled_config_formatter.rb +23 -14
  272. data/lib/rubocop/formatter/fuubar_style_formatter.rb +1 -1
  273. data/lib/rubocop/formatter/html_formatter.rb +12 -5
  274. data/lib/rubocop/formatter/json_formatter.rb +1 -1
  275. data/lib/rubocop/node_pattern.rb +8 -5
  276. data/lib/rubocop/options.rb +40 -33
  277. data/lib/rubocop/path_util.rb +5 -8
  278. data/lib/rubocop/processed_source.rb +53 -0
  279. data/lib/rubocop/remote_config.rb +1 -1
  280. data/lib/rubocop/result_cache.rb +1 -1
  281. data/lib/rubocop/rspec/cop_helper.rb +0 -4
  282. data/lib/rubocop/rspec/host_environment_simulation_helper.rb +0 -4
  283. data/lib/rubocop/rspec/shared_contexts.rb +3 -1
  284. data/lib/rubocop/rspec/shared_examples.rb +23 -25
  285. data/lib/rubocop/rspec/support.rb +5 -0
  286. data/lib/rubocop/runner.rb +3 -2
  287. data/lib/rubocop/string_util.rb +10 -9
  288. data/lib/rubocop/target_finder.rb +4 -1
  289. data/lib/rubocop/token.rb +26 -16
  290. data/lib/rubocop/version.rb +6 -4
  291. metadata +31 -17
  292. data/lib/rubocop/cop/performance/hash_each_methods.rb +0 -129
@@ -42,11 +42,12 @@ module RuboCop
42
42
  # end
43
43
  # end
44
44
  # end
45
- class IndentationWidth < Cop
45
+ class IndentationWidth < Cop # rubocop:disable Metrics/ClassLength
46
46
  include EndKeywordAlignment
47
47
  include Alignment
48
48
  include CheckAssignment
49
49
  include IgnoredPattern
50
+ include RangeHelp
50
51
 
51
52
  MSG = 'Use %<configured_indentation_width>d (not %<indentation>d) ' \
52
53
  'spaces for%<name>s indentation.'.freeze
@@ -100,7 +101,7 @@ module RuboCop
100
101
 
101
102
  *_, body = *node.first_argument
102
103
 
103
- def_end_config = config.for_cop('Lint/DefEndAlignment')
104
+ def_end_config = config.for_cop('Layout/DefEndAlignment')
104
105
  style = def_end_config['EnforcedStyleAlignWith'] || 'start_of_line'
105
106
  base = style == 'def' ? node.first_argument : node
106
107
 
@@ -186,7 +187,7 @@ module RuboCop
186
187
  rhs = first_part_of_call_chain(rhs)
187
188
  return unless rhs
188
189
 
189
- end_config = config.for_cop('Lint/EndAlignment')
190
+ end_config = config.for_cop('Layout/EndAlignment')
190
191
  style = end_config['EnforcedStyleAlignWith'] || 'keyword'
191
192
  base = variable_alignment?(node.loc, rhs, style.to_sym) ? node : rhs
192
193
 
@@ -5,7 +5,21 @@ module RuboCop
5
5
  module Layout
6
6
  # This cops checks for indentation of the first non-blank non-comment
7
7
  # line in a file.
8
+ #
9
+ # @example
10
+ # # bad
11
+ # class A
12
+ # def foo; end
13
+ # end
14
+ #
15
+ # # good
16
+ # class A
17
+ # def foo; end
18
+ # end
19
+ #
8
20
  class InitialIndentation < Cop
21
+ include RangeHelp
22
+
9
23
  MSG = 'Indentation of first line in file detected.'.freeze
10
24
 
11
25
  def investigate(_processed_source)
@@ -21,7 +35,7 @@ module RuboCop
21
35
  private
22
36
 
23
37
  def first_token
24
- processed_source.tokens.find { |t| !t.text.start_with?('#') }
38
+ processed_source.find_token { |t| !t.text.start_with?('#') }
25
39
  end
26
40
 
27
41
  def space_before(token)
@@ -17,10 +17,12 @@ module RuboCop
17
17
  # # good
18
18
  # # Some comment
19
19
  class LeadingCommentSpace < Cop
20
+ include RangeHelp
21
+
20
22
  MSG = 'Missing space after `#`.'.freeze
21
23
 
22
24
  def investigate(processed_source)
23
- processed_source.comments.each do |comment|
25
+ processed_source.each_comment do |comment|
24
26
  next unless comment.text =~ /\A#+[^#\s=:+-]/
25
27
  next if comment.loc.line == 1 && allowed_on_first_line?(comment)
26
28
 
@@ -50,7 +52,7 @@ module RuboCop
50
52
  end
51
53
 
52
54
  def rackup_config_file?
53
- File.basename(processed_source.buffer.name).eql?('config.ru')
55
+ File.basename(processed_source.file_path).eql?('config.ru')
54
56
  end
55
57
  end
56
58
  end
@@ -34,6 +34,7 @@ module RuboCop
34
34
  class MultilineAssignmentLayout < Cop
35
35
  include CheckAssignment
36
36
  include ConfigurableEnforcedStyle
37
+ include RangeHelp
37
38
 
38
39
  NEW_LINE_OFFENSE = 'Right hand side of multi-line assignment is on ' \
39
40
  'the same line as the assignment operator `=`.'.freeze
@@ -36,6 +36,8 @@ module RuboCop
36
36
  # bar(i)
37
37
  # }
38
38
  class MultilineBlockLayout < Cop
39
+ include RangeHelp
40
+
39
41
  MSG = 'Block body expression is on the same line as ' \
40
42
  'the block start.'.freeze
41
43
  ARG_MSG = 'Block argument expression is not on the same line as the ' \
@@ -26,35 +26,68 @@ module RuboCop
26
26
  # The closing brace of a multi-line method call must be on the same
27
27
  # line as the last argument of the call.
28
28
  #
29
- # @example
30
- #
31
- # # symmetrical: bad
32
- # # new_line: good
33
- # # same_line: bad
34
- # foo(a,
35
- # b
36
- # )
37
- #
38
- # # symmetrical: bad
39
- # # new_line: bad
40
- # # same_line: good
41
- # foo(
42
- # a,
43
- # b)
44
- #
45
- # # symmetrical: good
46
- # # new_line: bad
47
- # # same_line: good
48
- # foo(a,
49
- # b)
50
- #
51
- # # symmetrical: good
52
- # # new_line: good
53
- # # same_line: bad
54
- # foo(
55
- # a,
56
- # b
57
- # )
29
+ # @example EnforcedStyle: symmetrical (default)
30
+ # # bad
31
+ # foo(a,
32
+ # b
33
+ # )
34
+ #
35
+ # # bad
36
+ # foo(
37
+ # a,
38
+ # b)
39
+ #
40
+ # # good
41
+ # foo(a,
42
+ # b)
43
+ #
44
+ # # good
45
+ # foo(
46
+ # a,
47
+ # b
48
+ # )
49
+ #
50
+ # @example EnforcedStyle: new_line
51
+ # # bad
52
+ # foo(
53
+ # a,
54
+ # b)
55
+ #
56
+ # # bad
57
+ # foo(a,
58
+ # b)
59
+ #
60
+ # # good
61
+ # foo(a,
62
+ # b
63
+ # )
64
+ #
65
+ # # good
66
+ # foo(
67
+ # a,
68
+ # b
69
+ # )
70
+ #
71
+ # @example EnforcedStyle: same_line
72
+ # # bad
73
+ # foo(a,
74
+ # b
75
+ # )
76
+ #
77
+ # # bad
78
+ # foo(
79
+ # a,
80
+ # b
81
+ # )
82
+ #
83
+ # # good
84
+ # foo(
85
+ # a,
86
+ # b)
87
+ #
88
+ # # good
89
+ # foo(a,
90
+ # b)
58
91
  class MultilineMethodCallBraceLayout < Cop
59
92
  include MultilineLiteralBraceLayout
60
93
 
@@ -6,7 +6,7 @@ module RuboCop
6
6
  # This cop checks the indentation of the method name part in method calls
7
7
  # that span more than one line.
8
8
  #
9
- # @example EnforcedStyle: aligned
9
+ # @example EnforcedStyle: aligned (default)
10
10
  # # bad
11
11
  # while myvariable
12
12
  # .b
@@ -26,39 +26,80 @@ module RuboCop
26
26
  # The closing brace of a multi-line method definition must be on the same
27
27
  # line as the last parameter of the definition.
28
28
  #
29
- # @example
30
- #
31
- # # symmetrical: bad
32
- # # new_line: good
33
- # # same_line: bad
34
- # def foo(a,
35
- # b
36
- # )
37
- # end
38
- #
39
- # # symmetrical: bad
40
- # # new_line: bad
41
- # # same_line: good
42
- # def foo(
43
- # a,
44
- # b)
45
- # end
46
- #
47
- # # symmetrical: good
48
- # # new_line: bad
49
- # # same_line: good
50
- # def foo(a,
51
- # b)
52
- # end
53
- #
54
- # # symmetrical: good
55
- # # new_line: good
56
- # # same_line: bad
57
- # def foo(
58
- # a,
59
- # b
60
- # )
61
- # end
29
+ # @example EnforcedStyle: symmetrical (default)
30
+ # # bad
31
+ # def foo(a,
32
+ # b
33
+ # )
34
+ # end
35
+ #
36
+ # # bad
37
+ # def foo(
38
+ # a,
39
+ # b)
40
+ # end
41
+ #
42
+ # # good
43
+ # def foo(a,
44
+ # b)
45
+ # end
46
+ #
47
+ # # good
48
+ # def foo(
49
+ # a,
50
+ # b
51
+ # )
52
+ # end
53
+ #
54
+ # @example EnforcedStyle: new_line
55
+ # # bad
56
+ # def foo(
57
+ # a,
58
+ # b)
59
+ # end
60
+ #
61
+ # # bad
62
+ # def foo(a,
63
+ # b)
64
+ # end
65
+ #
66
+ # # good
67
+ # def foo(a,
68
+ # b
69
+ # )
70
+ # end
71
+ #
72
+ # # good
73
+ # def foo(
74
+ # a,
75
+ # b
76
+ # )
77
+ # end
78
+ #
79
+ # @example EnforcedStyle: same_line
80
+ # # bad
81
+ # def foo(a,
82
+ # b
83
+ # )
84
+ # end
85
+ #
86
+ # # bad
87
+ # def foo(
88
+ # a,
89
+ # b
90
+ # )
91
+ # end
92
+ #
93
+ # # good
94
+ # def foo(
95
+ # a,
96
+ # b)
97
+ # end
98
+ #
99
+ # # good
100
+ # def foo(a,
101
+ # b)
102
+ # end
62
103
  class MultilineMethodDefinitionBraceLayout < Cop
63
104
  include MultilineLiteralBraceLayout
64
105
 
@@ -6,10 +6,10 @@ module RuboCop
6
6
  # This cop checks the indentation of the right hand side operand in
7
7
  # binary operations that span more than one line.
8
8
  #
9
- # @example
9
+ # @example EnforcedStyle: aligned (default)
10
10
  # # bad
11
11
  # if a +
12
- # b
12
+ # b
13
13
  # something
14
14
  # end
15
15
  #
@@ -18,6 +18,20 @@ module RuboCop
18
18
  # b
19
19
  # something
20
20
  # end
21
+ #
22
+ # @example EnforcedStyle: indented
23
+ # # bad
24
+ # if a +
25
+ # b
26
+ # something
27
+ # end
28
+ #
29
+ # # good
30
+ # if a +
31
+ # b
32
+ # something
33
+ # end
34
+ #
21
35
  class MultilineOperationIndentation < Cop
22
36
  include ConfigurableEnforcedStyle
23
37
  include Alignment
@@ -22,6 +22,8 @@ module RuboCop
22
22
  # puts 'error'
23
23
  # end
24
24
  class RescueEnsureAlignment < Cop
25
+ include RangeHelp
26
+
25
27
  MSG = '`%<kw_loc>s` at %<kw_loc_line>d, %<kw_loc_column>d is not ' \
26
28
  'aligned with `end` at %<end_loc_line>d, %<end_loc_column>d.'
27
29
  .freeze
@@ -37,7 +39,7 @@ module RuboCop
37
39
  def investigate(processed_source)
38
40
  @modifier_locations =
39
41
  processed_source.tokens.each_with_object([]) do |token, locations|
40
- next unless token.type == :kRESCUE_MOD
42
+ next unless token.rescue_modifier?
41
43
  locations << token.pos
42
44
  end
43
45
  end
@@ -15,6 +15,8 @@ module RuboCop
15
15
  # def func(x) end
16
16
  # def method=(y) end
17
17
  class SpaceAfterMethodName < Cop
18
+ include RangeHelp
19
+
18
20
  MSG = 'Do not put a space between a method name and the opening ' \
19
21
  'parenthesis.'.freeze
20
22
 
@@ -12,6 +12,8 @@ module RuboCop
12
12
  # # good
13
13
  # !something
14
14
  class SpaceAfterNot < Cop
15
+ include RangeHelp
16
+
15
17
  MSG = 'Do not leave space between `!` and its argument.'.freeze
16
18
 
17
19
  def on_send(node)
@@ -24,6 +24,7 @@ module RuboCop
24
24
  # ->( x, y ) { puts x }
25
25
  class SpaceAroundBlockParameters < Cop
26
26
  include ConfigurableEnforcedStyle
27
+ include RangeHelp
27
28
 
28
29
  def on_block(node)
29
30
  return unless node.arguments?
@@ -5,7 +5,8 @@ module RuboCop
5
5
  module Layout
6
6
  # Checks that the equals signs in parameter default assignments
7
7
  # have or don't have surrounding space depending on configuration.
8
- # @example
8
+ #
9
+ # @example EnforcedStyle: space (default)
9
10
  # # bad
10
11
  # def some_method(arg1=:default, arg2=nil, arg3=[])
11
12
  # # do something...
@@ -15,9 +16,21 @@ module RuboCop
15
16
  # def some_method(arg1 = :default, arg2 = nil, arg3 = [])
16
17
  # # do something...
17
18
  # end
19
+ #
20
+ # @example EnforcedStyle: no_space
21
+ # # bad
22
+ # def some_method(arg1 = :default, arg2 = nil, arg3 = [])
23
+ # # do something...
24
+ # end
25
+ #
26
+ # # good
27
+ # def some_method(arg1=:default, arg2=nil, arg3=[])
28
+ # # do something...
29
+ # end
18
30
  class SpaceAroundEqualsInParameterDefault < Cop
19
31
  include SurroundingSpace
20
32
  include ConfigurableEnforcedStyle
33
+ include RangeHelp
21
34
 
22
35
  MSG = 'Surrounding space %<type>s in default value assignment.'.freeze
23
36
 
@@ -70,7 +83,7 @@ module RuboCop
70
83
  !arg.space_after? && !equals.space_after?
71
84
  end
72
85
 
73
- def message(_)
86
+ def message(_node)
74
87
  format(MSG, type: style == :space ? 'missing' : 'detected')
75
88
  end
76
89
  end