rubocop 0.80.1 → 0.85.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -4
  3. data/config/default.yml +202 -49
  4. data/lib/rubocop.rb +20 -61
  5. data/lib/rubocop/ast_aliases.rb +8 -0
  6. data/lib/rubocop/cli.rb +13 -7
  7. data/lib/rubocop/cli/command/auto_genenerate_config.rb +2 -2
  8. data/lib/rubocop/cli/command/show_cops.rb +2 -6
  9. data/lib/rubocop/comment_config.rb +1 -1
  10. data/lib/rubocop/config.rb +14 -2
  11. data/lib/rubocop/config_loader.rb +37 -33
  12. data/lib/rubocop/config_loader_resolver.rb +45 -6
  13. data/lib/rubocop/config_obsoletion.rb +2 -0
  14. data/lib/rubocop/config_store.rb +12 -2
  15. data/lib/rubocop/config_validator.rb +18 -1
  16. data/lib/rubocop/cop/autocorrect_logic.rb +1 -2
  17. data/lib/rubocop/cop/badge.rb +5 -5
  18. data/lib/rubocop/cop/bundler/gem_comment.rb +70 -1
  19. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
  20. data/lib/rubocop/cop/commissioner.rb +0 -21
  21. data/lib/rubocop/cop/cop.rb +14 -6
  22. data/lib/rubocop/cop/corrector.rb +48 -24
  23. data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -8
  24. data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -2
  25. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
  26. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +4 -4
  27. data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
  28. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
  29. data/lib/rubocop/cop/correctors/space_corrector.rb +1 -3
  30. data/lib/rubocop/cop/correctors/string_literal_corrector.rb +2 -2
  31. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -3
  32. data/lib/rubocop/cop/generator.rb +4 -3
  33. data/lib/rubocop/cop/ignored_node.rb +1 -3
  34. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
  35. data/lib/rubocop/cop/layout/array_alignment.rb +53 -10
  36. data/lib/rubocop/cop/layout/block_end_newline.rb +5 -3
  37. data/lib/rubocop/cop/layout/case_indentation.rb +3 -3
  38. data/lib/rubocop/cop/layout/class_structure.rb +19 -16
  39. data/lib/rubocop/cop/layout/condition_position.rb +12 -2
  40. data/lib/rubocop/cop/layout/dot_position.rb +1 -1
  41. data/lib/rubocop/cop/layout/else_alignment.rb +8 -0
  42. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -6
  43. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +126 -0
  44. data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
  45. data/lib/rubocop/cop/layout/first_argument_indentation.rb +1 -3
  46. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +14 -10
  47. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -1
  48. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +1 -1
  49. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -3
  50. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +2 -2
  51. data/lib/rubocop/cop/layout/hash_alignment.rb +6 -6
  52. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +5 -9
  53. data/lib/rubocop/cop/layout/heredoc_indentation.rb +20 -103
  54. data/lib/rubocop/cop/layout/{tab.rb → indentation_style.rb} +48 -6
  55. data/lib/rubocop/cop/layout/indentation_width.rb +1 -3
  56. data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
  57. data/lib/rubocop/cop/layout/line_length.rb +23 -20
  58. data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -1
  59. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -3
  60. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
  61. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +13 -4
  62. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
  63. data/lib/rubocop/cop/layout/space_around_keyword.rb +2 -2
  64. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +131 -0
  65. data/lib/rubocop/cop/layout/space_around_operators.rb +19 -2
  66. data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
  67. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
  68. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +1 -3
  69. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
  70. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +2 -2
  71. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +1 -3
  72. data/lib/rubocop/cop/layout/trailing_whitespace.rb +2 -2
  73. data/lib/rubocop/cop/lint/ambiguous_operator.rb +41 -0
  74. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +14 -0
  75. data/lib/rubocop/cop/lint/boolean_symbol.rb +12 -0
  76. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  77. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +137 -0
  78. data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -5
  79. data/lib/rubocop/cop/lint/empty_when.rb +29 -6
  80. data/lib/rubocop/cop/lint/ensure_return.rb +19 -2
  81. data/lib/rubocop/cop/lint/erb_new_arguments.rb +2 -4
  82. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
  83. data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
  84. data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
  85. data/lib/rubocop/cop/lint/literal_as_condition.rb +10 -13
  86. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  87. data/lib/rubocop/cop/lint/loop.rb +7 -5
  88. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +62 -0
  89. data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -1
  90. data/lib/rubocop/cop/lint/nested_method_definition.rb +2 -2
  91. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  92. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +2 -2
  93. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +7 -7
  94. data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
  95. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +33 -11
  96. data/lib/rubocop/cop/lint/percent_string_array.rb +2 -4
  97. data/lib/rubocop/cop/lint/raise_exception.rb +75 -0
  98. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -6
  99. data/lib/rubocop/cop/lint/redundant_require_statement.rb +3 -3
  100. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
  101. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  102. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
  103. data/lib/rubocop/cop/lint/struct_new_override.rb +58 -0
  104. data/lib/rubocop/cop/lint/suppressed_exception.rb +23 -26
  105. data/lib/rubocop/cop/lint/syntax.rb +1 -3
  106. data/lib/rubocop/cop/lint/unified_integer.rb +0 -2
  107. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  108. data/lib/rubocop/cop/lint/unused_method_argument.rb +32 -6
  109. data/lib/rubocop/cop/lint/uri_regexp.rb +4 -4
  110. data/lib/rubocop/cop/lint/useless_access_modifier.rb +13 -3
  111. data/lib/rubocop/cop/lint/useless_assignment.rb +3 -2
  112. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +6 -1
  113. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
  114. data/lib/rubocop/cop/migration/department_name.rb +22 -9
  115. data/lib/rubocop/cop/mixin/alignment.rb +1 -3
  116. data/lib/rubocop/cop/mixin/array_min_size.rb +1 -3
  117. data/lib/rubocop/cop/mixin/check_line_breakable.rb +3 -9
  118. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +1 -3
  119. data/lib/rubocop/cop/mixin/configurable_formatting.rb +2 -4
  120. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +6 -1
  121. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +10 -1
  122. data/lib/rubocop/cop/mixin/hash_transform_method.rb +9 -2
  123. data/lib/rubocop/cop/mixin/ignored_pattern.rb +1 -1
  124. data/lib/rubocop/cop/mixin/line_length_help.rb +3 -2
  125. data/lib/rubocop/cop/mixin/method_complexity.rb +5 -0
  126. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +1 -1
  127. data/lib/rubocop/cop/mixin/regexp_literal_help.rb +16 -0
  128. data/lib/rubocop/cop/mixin/statement_modifier.rb +7 -22
  129. data/lib/rubocop/cop/mixin/target_ruby_version.rb +5 -1
  130. data/lib/rubocop/cop/mixin/trailing_comma.rb +2 -4
  131. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +1 -1
  132. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +11 -1
  133. data/lib/rubocop/cop/naming/constant_name.rb +2 -1
  134. data/lib/rubocop/cop/naming/file_name.rb +27 -14
  135. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
  136. data/lib/rubocop/cop/naming/method_name.rb +26 -0
  137. data/lib/rubocop/cop/naming/predicate_name.rb +1 -1
  138. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  139. data/lib/rubocop/cop/registry.rb +12 -7
  140. data/lib/rubocop/cop/severity.rb +1 -3
  141. data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -6
  142. data/lib/rubocop/cop/style/alias.rb +4 -4
  143. data/lib/rubocop/cop/style/and_or.rb +7 -8
  144. data/lib/rubocop/cop/style/array_join.rb +2 -2
  145. data/lib/rubocop/cop/style/attr.rb +1 -3
  146. data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
  147. data/lib/rubocop/cop/style/block_delimiters.rb +2 -8
  148. data/lib/rubocop/cop/style/case_equality.rb +24 -1
  149. data/lib/rubocop/cop/style/character_literal.rb +2 -2
  150. data/lib/rubocop/cop/style/collection_methods.rb +2 -0
  151. data/lib/rubocop/cop/style/conditional_assignment.rb +9 -11
  152. data/lib/rubocop/cop/style/copyright.rb +3 -3
  153. data/lib/rubocop/cop/style/dir.rb +1 -1
  154. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
  155. data/lib/rubocop/cop/style/documentation.rb +43 -5
  156. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +1 -1
  157. data/lib/rubocop/cop/style/double_negation.rb +41 -4
  158. data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
  159. data/lib/rubocop/cop/style/each_with_object.rb +3 -3
  160. data/lib/rubocop/cop/style/empty_literal.rb +1 -3
  161. data/lib/rubocop/cop/style/empty_method.rb +2 -6
  162. data/lib/rubocop/cop/style/end_block.rb +6 -0
  163. data/lib/rubocop/cop/style/even_odd.rb +1 -1
  164. data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
  165. data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
  166. data/lib/rubocop/cop/style/format_string.rb +2 -2
  167. data/lib/rubocop/cop/style/format_string_token.rb +2 -3
  168. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -6
  169. data/lib/rubocop/cop/style/guard_clause.rb +25 -2
  170. data/lib/rubocop/cop/style/hash_each_methods.rb +6 -4
  171. data/lib/rubocop/cop/style/hash_syntax.rb +19 -12
  172. data/lib/rubocop/cop/style/hash_transform_keys.rb +6 -2
  173. data/lib/rubocop/cop/style/hash_transform_values.rb +6 -5
  174. data/lib/rubocop/cop/style/if_unless_modifier.rb +23 -3
  175. data/lib/rubocop/cop/style/if_with_semicolon.rb +16 -0
  176. data/lib/rubocop/cop/style/inline_comment.rb +1 -1
  177. data/lib/rubocop/cop/style/inverse_methods.rb +1 -1
  178. data/lib/rubocop/cop/style/lambda.rb +3 -2
  179. data/lib/rubocop/cop/style/lambda_call.rb +1 -21
  180. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +1 -3
  181. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -3
  182. data/lib/rubocop/cop/style/mixin_grouping.rb +1 -1
  183. data/lib/rubocop/cop/style/module_function.rb +58 -12
  184. data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
  185. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  186. data/lib/rubocop/cop/style/multiline_when_then.rb +16 -1
  187. data/lib/rubocop/cop/style/mutable_constant.rb +2 -4
  188. data/lib/rubocop/cop/style/negated_if.rb +3 -3
  189. data/lib/rubocop/cop/style/negated_unless.rb +3 -3
  190. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +2 -2
  191. data/lib/rubocop/cop/style/next.rb +2 -2
  192. data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
  193. data/lib/rubocop/cop/style/non_nil_check.rb +5 -5
  194. data/lib/rubocop/cop/style/not.rb +1 -1
  195. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  196. data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
  197. data/lib/rubocop/cop/style/numeric_predicate.rb +1 -1
  198. data/lib/rubocop/cop/style/one_line_conditional.rb +6 -9
  199. data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
  200. data/lib/rubocop/cop/style/or_assignment.rb +1 -1
  201. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  202. data/lib/rubocop/cop/style/perl_backrefs.rb +2 -2
  203. data/lib/rubocop/cop/style/proc.rb +1 -1
  204. data/lib/rubocop/cop/style/raise_args.rb +1 -1
  205. data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
  206. data/lib/rubocop/cop/style/redundant_condition.rb +3 -4
  207. data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
  208. data/lib/rubocop/cop/style/redundant_exception.rb +3 -3
  209. data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
  210. data/lib/rubocop/cop/style/redundant_parentheses.rb +2 -6
  211. data/lib/rubocop/cop/style/redundant_percent_q.rb +3 -3
  212. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +89 -0
  213. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +130 -0
  214. data/lib/rubocop/cop/style/redundant_return.rb +5 -7
  215. data/lib/rubocop/cop/style/redundant_self.rb +1 -1
  216. data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
  217. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  218. data/lib/rubocop/cop/style/return_nil.rb +1 -1
  219. data/lib/rubocop/cop/style/safe_navigation.rb +3 -7
  220. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  221. data/lib/rubocop/cop/style/slicing_with_range.rb +39 -0
  222. data/lib/rubocop/cop/style/special_global_vars.rb +3 -7
  223. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -4
  224. data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
  225. data/lib/rubocop/cop/style/symbol_array.rb +2 -2
  226. data/lib/rubocop/cop/style/symbol_literal.rb +2 -2
  227. data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -5
  228. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +35 -0
  229. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +41 -0
  230. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +88 -0
  231. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +44 -0
  232. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +1 -3
  233. data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
  234. data/lib/rubocop/cop/style/unless_else.rb +1 -1
  235. data/lib/rubocop/cop/style/unpack_first.rb +0 -4
  236. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  237. data/lib/rubocop/cop/style/when_then.rb +1 -1
  238. data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
  239. data/lib/rubocop/cop/style/word_array.rb +1 -1
  240. data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
  241. data/lib/rubocop/cop/team.rb +61 -25
  242. data/lib/rubocop/cop/util.rb +25 -1
  243. data/lib/rubocop/cop/variable_force.rb +3 -9
  244. data/lib/rubocop/cop/variable_force/assignment.rb +1 -0
  245. data/lib/rubocop/cop/variable_force/branch.rb +1 -3
  246. data/lib/rubocop/cop/variable_force/scope.rb +1 -0
  247. data/lib/rubocop/cop/variable_force/variable.rb +3 -6
  248. data/lib/rubocop/ext/processed_source.rb +18 -0
  249. data/lib/rubocop/formatter/base_formatter.rb +0 -4
  250. data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
  251. data/lib/rubocop/formatter/disabled_config_formatter.rb +4 -12
  252. data/lib/rubocop/formatter/formatter_set.rb +1 -4
  253. data/lib/rubocop/formatter/junit_formatter.rb +27 -6
  254. data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
  255. data/lib/rubocop/formatter/tap_formatter.rb +1 -1
  256. data/lib/rubocop/magic_comment.rb +1 -1
  257. data/lib/rubocop/name_similarity.rb +12 -9
  258. data/lib/rubocop/options.rb +33 -12
  259. data/lib/rubocop/remote_config.rb +1 -3
  260. data/lib/rubocop/result_cache.rb +5 -7
  261. data/lib/rubocop/rspec/cop_helper.rb +3 -26
  262. data/lib/rubocop/rspec/expect_offense.rb +46 -16
  263. data/lib/rubocop/rspec/shared_contexts.rb +54 -20
  264. data/lib/rubocop/runner.rb +21 -14
  265. data/lib/rubocop/target_finder.rb +7 -7
  266. data/lib/rubocop/target_ruby.rb +5 -2
  267. data/lib/rubocop/version.rb +5 -3
  268. metadata +50 -77
  269. data/lib/rubocop/ast/builder.rb +0 -83
  270. data/lib/rubocop/ast/node.rb +0 -632
  271. data/lib/rubocop/ast/node/alias_node.rb +0 -24
  272. data/lib/rubocop/ast/node/and_node.rb +0 -29
  273. data/lib/rubocop/ast/node/args_node.rb +0 -29
  274. data/lib/rubocop/ast/node/array_node.rb +0 -57
  275. data/lib/rubocop/ast/node/block_node.rb +0 -117
  276. data/lib/rubocop/ast/node/break_node.rb +0 -17
  277. data/lib/rubocop/ast/node/case_node.rb +0 -56
  278. data/lib/rubocop/ast/node/class_node.rb +0 -31
  279. data/lib/rubocop/ast/node/def_node.rb +0 -82
  280. data/lib/rubocop/ast/node/defined_node.rb +0 -17
  281. data/lib/rubocop/ast/node/ensure_node.rb +0 -17
  282. data/lib/rubocop/ast/node/float_node.rb +0 -12
  283. data/lib/rubocop/ast/node/for_node.rb +0 -53
  284. data/lib/rubocop/ast/node/forward_args_node.rb +0 -18
  285. data/lib/rubocop/ast/node/hash_node.rb +0 -109
  286. data/lib/rubocop/ast/node/if_node.rb +0 -175
  287. data/lib/rubocop/ast/node/int_node.rb +0 -12
  288. data/lib/rubocop/ast/node/keyword_splat_node.rb +0 -45
  289. data/lib/rubocop/ast/node/mixin/basic_literal_node.rb +0 -16
  290. data/lib/rubocop/ast/node/mixin/binary_operator_node.rb +0 -43
  291. data/lib/rubocop/ast/node/mixin/collection_node.rb +0 -15
  292. data/lib/rubocop/ast/node/mixin/conditional_node.rb +0 -45
  293. data/lib/rubocop/ast/node/mixin/hash_element_node.rb +0 -125
  294. data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +0 -261
  295. data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +0 -114
  296. data/lib/rubocop/ast/node/mixin/modifier_node.rb +0 -17
  297. data/lib/rubocop/ast/node/mixin/numeric_node.rb +0 -21
  298. data/lib/rubocop/ast/node/mixin/parameterized_node.rb +0 -61
  299. data/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +0 -35
  300. data/lib/rubocop/ast/node/module_node.rb +0 -24
  301. data/lib/rubocop/ast/node/or_node.rb +0 -29
  302. data/lib/rubocop/ast/node/pair_node.rb +0 -63
  303. data/lib/rubocop/ast/node/range_node.rb +0 -18
  304. data/lib/rubocop/ast/node/regexp_node.rb +0 -33
  305. data/lib/rubocop/ast/node/resbody_node.rb +0 -24
  306. data/lib/rubocop/ast/node/retry_node.rb +0 -17
  307. data/lib/rubocop/ast/node/return_node.rb +0 -24
  308. data/lib/rubocop/ast/node/self_class_node.rb +0 -24
  309. data/lib/rubocop/ast/node/send_node.rb +0 -13
  310. data/lib/rubocop/ast/node/str_node.rb +0 -16
  311. data/lib/rubocop/ast/node/super_node.rb +0 -21
  312. data/lib/rubocop/ast/node/symbol_node.rb +0 -12
  313. data/lib/rubocop/ast/node/until_node.rb +0 -35
  314. data/lib/rubocop/ast/node/when_node.rb +0 -53
  315. data/lib/rubocop/ast/node/while_node.rb +0 -35
  316. data/lib/rubocop/ast/node/yield_node.rb +0 -21
  317. data/lib/rubocop/ast/sexp.rb +0 -16
  318. data/lib/rubocop/ast/traversal.rb +0 -200
  319. data/lib/rubocop/cop/lint/end_in_method.rb +0 -40
  320. data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
  321. data/lib/rubocop/node_pattern.rb +0 -887
  322. data/lib/rubocop/processed_source.rb +0 -216
  323. data/lib/rubocop/string_util.rb +0 -14
  324. data/lib/rubocop/token.rb +0 -114
@@ -1,114 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # Common predicates for nodes that reference method identifiers:
6
- # `send`, `csend`, `def`, `defs`, `super`, `zsuper`
7
- #
8
- # @note this mixin expects `#method_name` and `#receiver` to be implemented
9
- module MethodIdentifierPredicates
10
- ENUMERATOR_METHODS = %i[collect collect_concat detect downto each
11
- find find_all find_index inject loop map!
12
- map reduce reject reject! reverse_each select
13
- select! times upto].freeze
14
-
15
- # http://phrogz.net/programmingruby/language.html#table_18.4
16
- OPERATOR_METHODS = %i[| ^ & <=> == === =~ > >= < <= << >> + - * /
17
- % ** ~ +@ -@ !@ ~@ [] []= ! != !~ `].freeze
18
-
19
- # Checks whether the method name matches the argument.
20
- #
21
- # @param [Symbol, String] name the method name to check for
22
- # @return [Boolean] whether the method name matches the argument
23
- def method?(name)
24
- method_name == name.to_sym
25
- end
26
-
27
- # Checks whether the method is an operator method.
28
- #
29
- # @return [Boolean] whether the method is an operator
30
- def operator_method?
31
- OPERATOR_METHODS.include?(method_name)
32
- end
33
-
34
- # Checks whether the method is a comparison method.
35
- #
36
- # @return [Boolean] whether the method is a comparison
37
- def comparison_method?
38
- Node::COMPARISON_OPERATORS.include?(method_name)
39
- end
40
-
41
- # Checks whether the method is an assignment method.
42
- #
43
- # @return [Boolean] whether the method is an assignment
44
- def assignment_method?
45
- !comparison_method? && method_name.to_s.end_with?('=')
46
- end
47
-
48
- # Checks whether the method is an enumerator method.
49
- #
50
- # @return [Boolean] whether the method is an enumerator
51
- def enumerator_method?
52
- ENUMERATOR_METHODS.include?(method_name) ||
53
- method_name.to_s.start_with?('each_')
54
- end
55
-
56
- # Checks whether the method is a predicate method.
57
- #
58
- # @return [Boolean] whether the method is a predicate method
59
- def predicate_method?
60
- method_name.to_s.end_with?('?')
61
- end
62
-
63
- # Checks whether the method is a bang method.
64
- #
65
- # @return [Boolean] whether the method is a bang method
66
- def bang_method?
67
- method_name.to_s.end_with?('!')
68
- end
69
-
70
- # Checks whether the method is a camel case method,
71
- # e.g. `Integer()`.
72
- #
73
- # @return [Boolean] whether the method is a camel case method
74
- def camel_case_method?
75
- method_name.to_s =~ /\A[A-Z]/
76
- end
77
-
78
- # Checks whether the *explicit* receiver of this node is `self`.
79
- #
80
- # @return [Boolean] whether the receiver of this node is `self`
81
- def self_receiver?
82
- receiver&.self_type?
83
- end
84
-
85
- # Checks whether the *explicit* receiver of node is a `const` node.
86
- #
87
- # @return [Boolean] whether the receiver of this node is a `const` node
88
- def const_receiver?
89
- receiver&.const_type?
90
- end
91
-
92
- # Checks whether this is a negation method, i.e. `!` or keyword `not`.
93
- #
94
- # @return [Boolean] whether this method is a negation method
95
- def negation_method?
96
- receiver && method_name == :!
97
- end
98
-
99
- # Checks whether this is a prefix not method, e.g. `not foo`.
100
- #
101
- # @return [Boolean] whether this method is a prefix not
102
- def prefix_not?
103
- negation_method? && loc.selector.is?('not')
104
- end
105
-
106
- # Checks whether this is a prefix bang method, e.g. `!foo`.
107
- #
108
- # @return [Boolean] whether this method is a prefix bang
109
- def prefix_bang?
110
- negation_method? && loc.selector.is?('!')
111
- end
112
- end
113
- end
114
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # Common functionality for nodes that can be used as modifiers:
6
- # `if`, `while`, `until`
7
- module ModifierNode
8
- # Checks whether the node is in a modifier form, i.e. a condition
9
- # trailing behind an expression.
10
- #
11
- # @return [Boolean] whether the node is a modifier
12
- def modifier_form?
13
- loc.end.nil?
14
- end
15
- end
16
- end
17
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # Common functionality for primitive numeric nodes: `int`, `float`, ...
6
- module NumericNode
7
- SIGN_REGEX = /\A[+-]/.freeze
8
-
9
- # Checks whether this is literal has a sign.
10
- #
11
- # @example
12
- #
13
- # +42
14
- #
15
- # @return [Boolean] whether this literal has a sign.
16
- def sign?
17
- source.match(SIGN_REGEX)
18
- end
19
- end
20
- end
21
- end
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # Common functionality for nodes that are parameterized:
6
- # `send`, `super`, `zsuper`, `def`, `defs`
7
- module ParameterizedNode
8
- # Checks whether this node's arguments are wrapped in parentheses.
9
- #
10
- # @return [Boolean] whether this node's arguments are
11
- # wrapped in parentheses
12
- def parenthesized?
13
- loc.end&.is?(')')
14
- end
15
-
16
- # A shorthand for getting the first argument of the node.
17
- # Equivalent to `arguments.first`.
18
- #
19
- # @return [Node, nil] the first argument of the node,
20
- # or `nil` if there are no arguments
21
- def first_argument
22
- arguments[0]
23
- end
24
-
25
- # A shorthand for getting the last argument of the node.
26
- # Equivalent to `arguments.last`.
27
- #
28
- # @return [Node, nil] the last argument of the node,
29
- # or `nil` if there are no arguments
30
- def last_argument
31
- arguments[-1]
32
- end
33
-
34
- # Checks whether this node has any arguments.
35
- #
36
- # @return [Boolean] whether this node has any arguments
37
- def arguments?
38
- !arguments.empty?
39
- end
40
-
41
- # Checks whether any argument of the node is a splat
42
- # argument, i.e. `*splat`.
43
- #
44
- # @return [Boolean] whether the node is a splat argument
45
- def splat_argument?
46
- arguments? &&
47
- (arguments.any?(&:splat_type?) || arguments.any?(&:restarg_type?))
48
- end
49
- alias rest_argument? splat_argument?
50
-
51
- # Whether the last argument of the node is a block pass,
52
- # i.e. `&block`.
53
- #
54
- # @return [Boolean] whether the last argument of the node is a block pass
55
- def block_argument?
56
- arguments? &&
57
- (last_argument.block_pass_type? || last_argument.blockarg_type?)
58
- end
59
- end
60
- end
61
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # Common functionality for nodes that are predicates:
6
- # `or`, `and` ...
7
- module PredicateOperatorNode
8
- LOGICAL_AND = '&&'
9
- SEMANTIC_AND = 'and'
10
- LOGICAL_OR = '||'
11
- SEMANTIC_OR = 'or'
12
-
13
- # Returns the operator as a string.
14
- #
15
- # @return [String] the operator
16
- def operator
17
- loc.operator.source
18
- end
19
-
20
- # Checks whether this is a logical operator.
21
- #
22
- # @return [Boolean] whether this is a logical operator
23
- def logical_operator?
24
- operator == LOGICAL_AND || operator == LOGICAL_OR
25
- end
26
-
27
- # Checks whether this is a semantic operator.
28
- #
29
- # @return [Boolean] whether this is a semantic operator
30
- def semantic_operator?
31
- operator == SEMANTIC_AND || operator == SEMANTIC_OR
32
- end
33
- end
34
- end
35
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # A node extension for `module` nodes. This will be used in place of a
6
- # plain node when the builder constructs the AST, making its methods
7
- # available to all `module` nodes within RuboCop.
8
- class ModuleNode < Node
9
- # The identifer for this `module` node.
10
- #
11
- # @return [Node] the identifer of the module
12
- def identifier
13
- node_parts[0]
14
- end
15
-
16
- # The body of this `module` node.
17
- #
18
- # @return [Node, nil] the body of the module
19
- def body
20
- node_parts[1]
21
- end
22
- end
23
- end
24
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # A node extension for `or` nodes. This will be used in place of a plain
6
- # node when the builder constructs the AST, making its methods available
7
- # to all `or` nodes within RuboCop.
8
- class OrNode < Node
9
- include BinaryOperatorNode
10
- include PredicateOperatorNode
11
-
12
- # Returns the alternate operator of the `or` as a string.
13
- # Returns `or` for `||` and vice versa.
14
- #
15
- # @return [String] the alternate of the `or` operator
16
- def alternate_operator
17
- logical_operator? ? SEMANTIC_OR : LOGICAL_OR
18
- end
19
-
20
- # Returns the inverse keyword of the `or` node as a string.
21
- # Returns `and` for `or` and `&&` for `||`.
22
- #
23
- # @return [String] the inverse of the `or` operator
24
- def inverse_operator
25
- logical_operator? ? LOGICAL_AND : SEMANTIC_AND
26
- end
27
- end
28
- end
29
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # A node extension for `pair` nodes. This will be used in place of a plain
6
- # node when the builder constructs the AST, making its methods available
7
- # to all `pair` nodes within RuboCop.
8
- class PairNode < Node
9
- include HashElementNode
10
-
11
- HASH_ROCKET = '=>'
12
- SPACED_HASH_ROCKET = ' => '
13
- COLON = ':'
14
- SPACED_COLON = ': '
15
-
16
- # Checks whether the `pair` uses a hash rocket delimiter.
17
- #
18
- # @return [Boolean] whether this `pair` uses a hash rocket delimiter
19
- def hash_rocket?
20
- loc.operator.is?(HASH_ROCKET)
21
- end
22
-
23
- # Checks whether the `pair` uses a colon delimiter.
24
- #
25
- # @return [Boolean] whether this `pair` uses a colon delimiter
26
- def colon?
27
- loc.operator.is?(COLON)
28
- end
29
-
30
- # Returns the delimiter of the `pair` as a string. Returns `=>` for a
31
- # colon delimited `pair` and `:` for a hash rocket delimited `pair`.
32
- #
33
- # @param [Boolean] with_spacing whether to include spacing
34
- # @return [String] the delimiter of the `pair`
35
- def delimiter(with_spacing = false)
36
- if with_spacing
37
- hash_rocket? ? SPACED_HASH_ROCKET : SPACED_COLON
38
- else
39
- hash_rocket? ? HASH_ROCKET : COLON
40
- end
41
- end
42
-
43
- # Returns the inverse delimiter of the `pair` as a string.
44
- #
45
- # @param [Boolean] with_spacing whether to include spacing
46
- # @return [String] the inverse delimiter of the `pair`
47
- def inverse_delimiter(with_spacing = false)
48
- if with_spacing
49
- hash_rocket? ? SPACED_COLON : SPACED_HASH_ROCKET
50
- else
51
- hash_rocket? ? COLON : HASH_ROCKET
52
- end
53
- end
54
-
55
- # Checks whether the value starts on its own line.
56
- #
57
- # @return [Boolean] whether the value in the `pair` starts its own line
58
- def value_on_new_line?
59
- key.loc.line != value.loc.line
60
- end
61
- end
62
- end
63
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # A node extension for `irange` and `erange` nodes. This will be used in
6
- # place of a plain node when the builder constructs the AST, making its
7
- # methods available to all `irange` and `erange` nodes within RuboCop.
8
- class RangeNode < Node
9
- def begin
10
- node_parts[0]
11
- end
12
-
13
- def end
14
- node_parts[1]
15
- end
16
- end
17
- end
18
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # A node extension for `regexp` nodes. This will be used in place of a plain
6
- # node when the builder constructs the AST, making its methods available
7
- # to all `regexp` nodes within RuboCop.
8
- class RegexpNode < Node
9
- OPTIONS = {
10
- x: Regexp::EXTENDED,
11
- i: Regexp::IGNORECASE,
12
- m: Regexp::MULTILINE,
13
- n: Regexp::NOENCODING
14
- }.freeze
15
-
16
- # @return [Regexp] a regexp of this node
17
- def to_regexp
18
- option = regopt.children.map { |opt| OPTIONS[opt] }.inject(:|)
19
- Regexp.new(content, option)
20
- end
21
-
22
- # @return [RuboCop::AST::Node] a regopt node
23
- def regopt
24
- children.last
25
- end
26
-
27
- # @return [String] a string of regexp content
28
- def content
29
- children.select(&:str_type?).map(&:str_content).join
30
- end
31
- end
32
- end
33
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module AST
5
- # A node extension for `resbody` nodes. This will be used in place of a
6
- # plain node when the builder constructs the AST, making its methods
7
- # available to all `resbody` nodes within RuboCop.
8
- class ResbodyNode < Node
9
- # Returns the body of the `rescue` clause.
10
- #
11
- # @return [Node, nil] The body of the `resbody`.
12
- def body
13
- node_parts[2]
14
- end
15
-
16
- # Returns the exception variable of the `rescue` clause.
17
- #
18
- # @return [Node, nil] The exception variable of the `resbody`.
19
- def exception_variable
20
- node_parts[1]
21
- end
22
- end
23
- end
24
- end