rubocop-grantbirki 1.75.2

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 (891) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.md +251 -0
  4. data/assets/logo.png +0 -0
  5. data/assets/output.css.erb +159 -0
  6. data/assets/output.html.erb +102 -0
  7. data/config/default.yml +5988 -0
  8. data/config/internal_affairs.yml +31 -0
  9. data/config/obsoletion.yml +240 -0
  10. data/exe/rubocop +24 -0
  11. data/lib/rubocop/arguments_env.rb +17 -0
  12. data/lib/rubocop/arguments_file.rb +17 -0
  13. data/lib/rubocop/ast_aliases.rb +8 -0
  14. data/lib/rubocop/cache_config.rb +29 -0
  15. data/lib/rubocop/cached_data.rb +74 -0
  16. data/lib/rubocop/cli/command/auto_generate_config.rb +167 -0
  17. data/lib/rubocop/cli/command/base.rb +35 -0
  18. data/lib/rubocop/cli/command/execute_runner.rb +105 -0
  19. data/lib/rubocop/cli/command/init_dotfile.rb +44 -0
  20. data/lib/rubocop/cli/command/lsp.rb +19 -0
  21. data/lib/rubocop/cli/command/show_cops.rb +96 -0
  22. data/lib/rubocop/cli/command/show_docs_url.rb +48 -0
  23. data/lib/rubocop/cli/command/suggest_extensions.rb +132 -0
  24. data/lib/rubocop/cli/command/version.rb +18 -0
  25. data/lib/rubocop/cli/command.rb +22 -0
  26. data/lib/rubocop/cli/environment.rb +22 -0
  27. data/lib/rubocop/cli.rb +212 -0
  28. data/lib/rubocop/comment_config.rb +216 -0
  29. data/lib/rubocop/config.rb +400 -0
  30. data/lib/rubocop/config_finder.rb +78 -0
  31. data/lib/rubocop/config_loader.rb +307 -0
  32. data/lib/rubocop/config_loader_resolver.rb +312 -0
  33. data/lib/rubocop/config_obsoletion/changed_enforced_styles.rb +33 -0
  34. data/lib/rubocop/config_obsoletion/changed_parameter.rb +26 -0
  35. data/lib/rubocop/config_obsoletion/cop_rule.rb +33 -0
  36. data/lib/rubocop/config_obsoletion/extracted_cop.rb +47 -0
  37. data/lib/rubocop/config_obsoletion/parameter_rule.rb +56 -0
  38. data/lib/rubocop/config_obsoletion/removed_cop.rb +41 -0
  39. data/lib/rubocop/config_obsoletion/renamed_cop.rb +49 -0
  40. data/lib/rubocop/config_obsoletion/rule.rb +41 -0
  41. data/lib/rubocop/config_obsoletion/split_cop.rb +27 -0
  42. data/lib/rubocop/config_obsoletion.rb +155 -0
  43. data/lib/rubocop/config_regeneration.rb +33 -0
  44. data/lib/rubocop/config_store.rb +72 -0
  45. data/lib/rubocop/config_validator.rb +291 -0
  46. data/lib/rubocop/cop/autocorrect_logic.rb +151 -0
  47. data/lib/rubocop/cop/badge.rb +68 -0
  48. data/lib/rubocop/cop/base.rb +547 -0
  49. data/lib/rubocop/cop/bundler/duplicated_gem.rb +94 -0
  50. data/lib/rubocop/cop/bundler/duplicated_group.rb +127 -0
  51. data/lib/rubocop/cop/bundler/gem_comment.rb +171 -0
  52. data/lib/rubocop/cop/bundler/gem_filename.rb +102 -0
  53. data/lib/rubocop/cop/bundler/gem_version.rb +132 -0
  54. data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +85 -0
  55. data/lib/rubocop/cop/bundler/ordered_gems.rb +70 -0
  56. data/lib/rubocop/cop/commissioner.rb +182 -0
  57. data/lib/rubocop/cop/cop.rb +192 -0
  58. data/lib/rubocop/cop/corrector.rb +138 -0
  59. data/lib/rubocop/cop/correctors/alignment_corrector.rb +125 -0
  60. data/lib/rubocop/cop/correctors/condition_corrector.rb +25 -0
  61. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +47 -0
  62. data/lib/rubocop/cop/correctors/empty_line_corrector.rb +25 -0
  63. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +66 -0
  64. data/lib/rubocop/cop/correctors/if_then_corrector.rb +55 -0
  65. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +139 -0
  66. data/lib/rubocop/cop/correctors/line_break_corrector.rb +66 -0
  67. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +113 -0
  68. data/lib/rubocop/cop/correctors/ordered_gem_corrector.rb +38 -0
  69. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +86 -0
  70. data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +116 -0
  71. data/lib/rubocop/cop/correctors/punctuation_corrector.rb +27 -0
  72. data/lib/rubocop/cop/correctors/require_library_corrector.rb +23 -0
  73. data/lib/rubocop/cop/correctors/space_corrector.rb +46 -0
  74. data/lib/rubocop/cop/correctors/string_literal_corrector.rb +23 -0
  75. data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +40 -0
  76. data/lib/rubocop/cop/documentation.rb +66 -0
  77. data/lib/rubocop/cop/exclude_limit.rb +26 -0
  78. data/lib/rubocop/cop/force.rb +55 -0
  79. data/lib/rubocop/cop/gemspec/add_runtime_dependency.rb +38 -0
  80. data/lib/rubocop/cop/gemspec/dependency_version.rb +152 -0
  81. data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +91 -0
  82. data/lib/rubocop/cop/gemspec/development_dependencies.rb +107 -0
  83. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +89 -0
  84. data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +101 -0
  85. data/lib/rubocop/cop/gemspec/require_mfa.rb +145 -0
  86. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +129 -0
  87. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +50 -0
  88. data/lib/rubocop/cop/generator/configuration_injector.rb +65 -0
  89. data/lib/rubocop/cop/generator/require_file_injector.rb +75 -0
  90. data/lib/rubocop/cop/generator.rb +223 -0
  91. data/lib/rubocop/cop/ignored_node.rb +36 -0
  92. data/lib/rubocop/cop/internal_affairs/cop_description.rb +118 -0
  93. data/lib/rubocop/cop/internal_affairs/cop_enabled.rb +85 -0
  94. data/lib/rubocop/cop/internal_affairs/create_empty_file.rb +37 -0
  95. data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +69 -0
  96. data/lib/rubocop/cop/internal_affairs/example_description.rb +118 -0
  97. data/lib/rubocop/cop/internal_affairs/example_heredoc_delimiter.rb +111 -0
  98. data/lib/rubocop/cop/internal_affairs/inherit_deprecated_cop_class.rb +34 -0
  99. data/lib/rubocop/cop/internal_affairs/lambda_or_proc.rb +46 -0
  100. data/lib/rubocop/cop/internal_affairs/location_exists.rb +116 -0
  101. data/lib/rubocop/cop/internal_affairs/location_expression.rb +38 -0
  102. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +61 -0
  103. data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +82 -0
  104. data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +49 -0
  105. data/lib/rubocop/cop/internal_affairs/node_destructuring.rb +44 -0
  106. data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +54 -0
  107. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +241 -0
  108. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb +63 -0
  109. data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +131 -0
  110. data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +230 -0
  111. data/lib/rubocop/cop/internal_affairs/node_type_group.rb +91 -0
  112. data/lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb +126 -0
  113. data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +42 -0
  114. data/lib/rubocop/cop/internal_affairs/numblock_handler.rb +69 -0
  115. data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +56 -0
  116. data/lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb +90 -0
  117. data/lib/rubocop/cop/internal_affairs/operator_keyword.rb +48 -0
  118. data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
  119. data/lib/rubocop/cop/internal_affairs/processed_source_buffer_name.rb +42 -0
  120. data/lib/rubocop/cop/internal_affairs/redundant_context_config_parameter.rb +46 -0
  121. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +63 -0
  122. data/lib/rubocop/cop/internal_affairs/redundant_expect_offense_arguments.rb +34 -0
  123. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +73 -0
  124. data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +53 -0
  125. data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +61 -0
  126. data/lib/rubocop/cop/internal_affairs/redundant_method_dispatch_node.rb +56 -0
  127. data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +75 -0
  128. data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +63 -0
  129. data/lib/rubocop/cop/internal_affairs/style_detected_api_use.rb +146 -0
  130. data/lib/rubocop/cop/internal_affairs/undefined_config.rb +94 -0
  131. data/lib/rubocop/cop/internal_affairs/useless_message_assertion.rb +49 -0
  132. data/lib/rubocop/cop/internal_affairs/useless_restrict_on_send.rb +60 -0
  133. data/lib/rubocop/cop/internal_affairs.rb +40 -0
  134. data/lib/rubocop/cop/layout/access_modifier_indentation.rb +104 -0
  135. data/lib/rubocop/cop/layout/argument_alignment.rb +151 -0
  136. data/lib/rubocop/cop/layout/array_alignment.rb +84 -0
  137. data/lib/rubocop/cop/layout/assignment_indentation.rb +57 -0
  138. data/lib/rubocop/cop/layout/begin_end_alignment.rb +73 -0
  139. data/lib/rubocop/cop/layout/block_alignment.rb +259 -0
  140. data/lib/rubocop/cop/layout/block_end_newline.rb +83 -0
  141. data/lib/rubocop/cop/layout/case_indentation.rb +219 -0
  142. data/lib/rubocop/cop/layout/class_structure.rb +346 -0
  143. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +123 -0
  144. data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +193 -0
  145. data/lib/rubocop/cop/layout/comment_indentation.rb +168 -0
  146. data/lib/rubocop/cop/layout/condition_position.rb +60 -0
  147. data/lib/rubocop/cop/layout/def_end_alignment.rb +73 -0
  148. data/lib/rubocop/cop/layout/dot_position.rb +139 -0
  149. data/lib/rubocop/cop/layout/else_alignment.rb +156 -0
  150. data/lib/rubocop/cop/layout/empty_comment.rb +153 -0
  151. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +214 -0
  152. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +71 -0
  153. data/lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb +136 -0
  154. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +293 -0
  155. data/lib/rubocop/cop/layout/empty_lines.rb +73 -0
  156. data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +237 -0
  157. data/lib/rubocop/cop/layout/empty_lines_around_arguments.rb +103 -0
  158. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +139 -0
  159. data/lib/rubocop/cop/layout/empty_lines_around_begin_body.rb +41 -0
  160. data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +41 -0
  161. data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +85 -0
  162. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +139 -0
  163. data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +64 -0
  164. data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +59 -0
  165. data/lib/rubocop/cop/layout/end_alignment.rb +210 -0
  166. data/lib/rubocop/cop/layout/end_of_line.rb +92 -0
  167. data/lib/rubocop/cop/layout/extra_spacing.rb +185 -0
  168. data/lib/rubocop/cop/layout/first_argument_indentation.rb +282 -0
  169. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +189 -0
  170. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +68 -0
  171. data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +234 -0
  172. data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +68 -0
  173. data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +105 -0
  174. data/lib/rubocop/cop/layout/first_method_parameter_line_break.rb +75 -0
  175. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +101 -0
  176. data/lib/rubocop/cop/layout/hash_alignment.rb +398 -0
  177. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +312 -0
  178. data/lib/rubocop/cop/layout/heredoc_indentation.rb +165 -0
  179. data/lib/rubocop/cop/layout/indentation_consistency.rb +205 -0
  180. data/lib/rubocop/cop/layout/indentation_style.rb +115 -0
  181. data/lib/rubocop/cop/layout/indentation_width.rb +389 -0
  182. data/lib/rubocop/cop/layout/initial_indentation.rb +55 -0
  183. data/lib/rubocop/cop/layout/leading_comment_space.rb +191 -0
  184. data/lib/rubocop/cop/layout/leading_empty_lines.rb +48 -0
  185. data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +153 -0
  186. data/lib/rubocop/cop/layout/line_continuation_spacing.rb +146 -0
  187. data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +143 -0
  188. data/lib/rubocop/cop/layout/line_length.rb +395 -0
  189. data/lib/rubocop/cop/layout/multiline_array_brace_layout.rb +115 -0
  190. data/lib/rubocop/cop/layout/multiline_array_line_breaks.rb +65 -0
  191. data/lib/rubocop/cop/layout/multiline_assignment_layout.rb +117 -0
  192. data/lib/rubocop/cop/layout/multiline_block_layout.rb +162 -0
  193. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +115 -0
  194. data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +74 -0
  195. data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +112 -0
  196. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +132 -0
  197. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +263 -0
  198. data/lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb +128 -0
  199. data/lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb +78 -0
  200. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +126 -0
  201. data/lib/rubocop/cop/layout/parameter_alignment.rb +118 -0
  202. data/lib/rubocop/cop/layout/redundant_line_break.rb +134 -0
  203. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +210 -0
  204. data/lib/rubocop/cop/layout/single_line_block_chain.rb +69 -0
  205. data/lib/rubocop/cop/layout/space_after_colon.rb +49 -0
  206. data/lib/rubocop/cop/layout/space_after_comma.rb +40 -0
  207. data/lib/rubocop/cop/layout/space_after_method_name.rb +39 -0
  208. data/lib/rubocop/cop/layout/space_after_not.rb +39 -0
  209. data/lib/rubocop/cop/layout/space_after_semicolon.rb +29 -0
  210. data/lib/rubocop/cop/layout/space_around_block_parameters.rb +162 -0
  211. data/lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb +89 -0
  212. data/lib/rubocop/cop/layout/space_around_keyword.rb +269 -0
  213. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +98 -0
  214. data/lib/rubocop/cop/layout/space_around_operators.rb +295 -0
  215. data/lib/rubocop/cop/layout/space_before_block_braces.rb +164 -0
  216. data/lib/rubocop/cop/layout/space_before_brackets.rb +73 -0
  217. data/lib/rubocop/cop/layout/space_before_comma.rb +29 -0
  218. data/lib/rubocop/cop/layout/space_before_comment.rb +34 -0
  219. data/lib/rubocop/cop/layout/space_before_first_arg.rb +73 -0
  220. data/lib/rubocop/cop/layout/space_before_semicolon.rb +24 -0
  221. data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +78 -0
  222. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +230 -0
  223. data/lib/rubocop/cop/layout/space_inside_array_percent_literal.rb +46 -0
  224. data/lib/rubocop/cop/layout/space_inside_block_braces.rb +268 -0
  225. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +212 -0
  226. data/lib/rubocop/cop/layout/space_inside_parens.rb +176 -0
  227. data/lib/rubocop/cop/layout/space_inside_percent_literal_delimiters.rb +94 -0
  228. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +54 -0
  229. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +143 -0
  230. data/lib/rubocop/cop/layout/space_inside_string_interpolation.rb +63 -0
  231. data/lib/rubocop/cop/layout/trailing_empty_lines.rb +113 -0
  232. data/lib/rubocop/cop/layout/trailing_whitespace.rb +133 -0
  233. data/lib/rubocop/cop/legacy/corrections_proxy.rb +43 -0
  234. data/lib/rubocop/cop/legacy/corrector.rb +37 -0
  235. data/lib/rubocop/cop/lint/ambiguous_assignment.rb +54 -0
  236. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +105 -0
  237. data/lib/rubocop/cop/lint/ambiguous_operator.rb +105 -0
  238. data/lib/rubocop/cop/lint/ambiguous_operator_precedence.rb +111 -0
  239. data/lib/rubocop/cop/lint/ambiguous_range.rb +108 -0
  240. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +78 -0
  241. data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +119 -0
  242. data/lib/rubocop/cop/lint/assignment_in_condition.rb +107 -0
  243. data/lib/rubocop/cop/lint/big_decimal_new.rb +41 -0
  244. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +66 -0
  245. data/lib/rubocop/cop/lint/boolean_symbol.rb +61 -0
  246. data/lib/rubocop/cop/lint/circular_argument_reference.rb +65 -0
  247. data/lib/rubocop/cop/lint/constant_definition_in_block.rb +100 -0
  248. data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +51 -0
  249. data/lib/rubocop/cop/lint/constant_reassignment.rb +148 -0
  250. data/lib/rubocop/cop/lint/constant_resolution.rb +93 -0
  251. data/lib/rubocop/cop/lint/cop_directive_syntax.rb +84 -0
  252. data/lib/rubocop/cop/lint/debugger.rb +146 -0
  253. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +118 -0
  254. data/lib/rubocop/cop/lint/deprecated_constants.rb +88 -0
  255. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +145 -0
  256. data/lib/rubocop/cop/lint/disjunctive_assignment_in_constructor.rb +110 -0
  257. data/lib/rubocop/cop/lint/duplicate_branch.rb +188 -0
  258. data/lib/rubocop/cop/lint/duplicate_case_condition.rb +39 -0
  259. data/lib/rubocop/cop/lint/duplicate_elsif_condition.rb +39 -0
  260. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +33 -0
  261. data/lib/rubocop/cop/lint/duplicate_magic_comment.rb +73 -0
  262. data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +122 -0
  263. data/lib/rubocop/cop/lint/duplicate_methods.rb +243 -0
  264. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +121 -0
  265. data/lib/rubocop/cop/lint/duplicate_require.rb +56 -0
  266. data/lib/rubocop/cop/lint/duplicate_rescue_exception.rb +47 -0
  267. data/lib/rubocop/cop/lint/duplicate_set_element.rb +87 -0
  268. data/lib/rubocop/cop/lint/each_with_object_argument.rb +40 -0
  269. data/lib/rubocop/cop/lint/else_layout.rb +88 -0
  270. data/lib/rubocop/cop/lint/empty_block.rb +94 -0
  271. data/lib/rubocop/cop/lint/empty_class.rb +95 -0
  272. data/lib/rubocop/cop/lint/empty_conditional_body.rb +148 -0
  273. data/lib/rubocop/cop/lint/empty_ensure.rb +48 -0
  274. data/lib/rubocop/cop/lint/empty_expression.rb +40 -0
  275. data/lib/rubocop/cop/lint/empty_file.rb +46 -0
  276. data/lib/rubocop/cop/lint/empty_in_pattern.rb +64 -0
  277. data/lib/rubocop/cop/lint/empty_interpolation.rb +29 -0
  278. data/lib/rubocop/cop/lint/empty_when.rb +61 -0
  279. data/lib/rubocop/cop/lint/ensure_return.rb +51 -0
  280. data/lib/rubocop/cop/lint/erb_new_arguments.rb +162 -0
  281. data/lib/rubocop/cop/lint/flip_flop.rb +38 -0
  282. data/lib/rubocop/cop/lint/float_comparison.rb +109 -0
  283. data/lib/rubocop/cop/lint/float_out_of_range.rb +28 -0
  284. data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +191 -0
  285. data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +48 -0
  286. data/lib/rubocop/cop/lint/hash_new_with_keyword_arguments_as_default.rb +55 -0
  287. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +152 -0
  288. data/lib/rubocop/cop/lint/identity_comparison.rb +50 -0
  289. data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +112 -0
  290. data/lib/rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler.rb +81 -0
  291. data/lib/rubocop/cop/lint/ineffective_access_modifier.rb +114 -0
  292. data/lib/rubocop/cop/lint/inherit_exception.rb +105 -0
  293. data/lib/rubocop/cop/lint/interpolation_check.rb +64 -0
  294. data/lib/rubocop/cop/lint/it_without_arguments_in_block.rb +50 -0
  295. data/lib/rubocop/cop/lint/lambda_without_literal_block.rb +51 -0
  296. data/lib/rubocop/cop/lint/literal_as_condition.rb +259 -0
  297. data/lib/rubocop/cop/lint/literal_assignment_in_condition.rb +85 -0
  298. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +210 -0
  299. data/lib/rubocop/cop/lint/loop.rb +80 -0
  300. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +111 -0
  301. data/lib/rubocop/cop/lint/missing_super.rb +159 -0
  302. data/lib/rubocop/cop/lint/mixed_case_range.rb +113 -0
  303. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +37 -0
  304. data/lib/rubocop/cop/lint/multiple_comparison.rb +48 -0
  305. data/lib/rubocop/cop/lint/nested_method_definition.rb +142 -0
  306. data/lib/rubocop/cop/lint/nested_percent_literal.rb +63 -0
  307. data/lib/rubocop/cop/lint/next_without_accumulator.rb +51 -0
  308. data/lib/rubocop/cop/lint/no_return_in_begin_end_blocks.rb +53 -0
  309. data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +174 -0
  310. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +183 -0
  311. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +86 -0
  312. data/lib/rubocop/cop/lint/number_conversion.rb +200 -0
  313. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +46 -0
  314. data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +93 -0
  315. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +41 -0
  316. data/lib/rubocop/cop/lint/ordered_magic_comments.rb +81 -0
  317. data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +129 -0
  318. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +87 -0
  319. data/lib/rubocop/cop/lint/percent_string_array.rb +74 -0
  320. data/lib/rubocop/cop/lint/percent_symbol_array.rb +64 -0
  321. data/lib/rubocop/cop/lint/raise_exception.rb +110 -0
  322. data/lib/rubocop/cop/lint/rand_one.rb +42 -0
  323. data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +330 -0
  324. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +135 -0
  325. data/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb +62 -0
  326. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +130 -0
  327. data/lib/rubocop/cop/lint/redundant_require_statement.rb +78 -0
  328. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +160 -0
  329. data/lib/rubocop/cop/lint/redundant_splat_expansion.rb +210 -0
  330. data/lib/rubocop/cop/lint/redundant_string_coercion.rb +68 -0
  331. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +261 -0
  332. data/lib/rubocop/cop/lint/redundant_with_index.rb +87 -0
  333. data/lib/rubocop/cop/lint/redundant_with_object.rb +82 -0
  334. data/lib/rubocop/cop/lint/refinement_import_methods.rb +52 -0
  335. data/lib/rubocop/cop/lint/regexp_as_condition.rb +36 -0
  336. data/lib/rubocop/cop/lint/require_parentheses.rb +62 -0
  337. data/lib/rubocop/cop/lint/require_range_parentheses.rb +57 -0
  338. data/lib/rubocop/cop/lint/require_relative_self_path.rb +50 -0
  339. data/lib/rubocop/cop/lint/rescue_exception.rb +41 -0
  340. data/lib/rubocop/cop/lint/rescue_type.rb +82 -0
  341. data/lib/rubocop/cop/lint/return_in_void_context.rb +55 -0
  342. data/lib/rubocop/cop/lint/safe_navigation_chain.rb +116 -0
  343. data/lib/rubocop/cop/lint/safe_navigation_consistency.rb +160 -0
  344. data/lib/rubocop/cop/lint/safe_navigation_with_empty.rb +46 -0
  345. data/lib/rubocop/cop/lint/script_permission.rb +73 -0
  346. data/lib/rubocop/cop/lint/self_assignment.rb +114 -0
  347. data/lib/rubocop/cop/lint/send_with_mixin_argument.rb +83 -0
  348. data/lib/rubocop/cop/lint/shadowed_argument.rb +177 -0
  349. data/lib/rubocop/cop/lint/shadowed_exception.rb +165 -0
  350. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +111 -0
  351. data/lib/rubocop/cop/lint/shared_mutable_default.rb +76 -0
  352. data/lib/rubocop/cop/lint/struct_new_override.rb +59 -0
  353. data/lib/rubocop/cop/lint/suppressed_exception.rb +132 -0
  354. data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +111 -0
  355. data/lib/rubocop/cop/lint/symbol_conversion.rb +184 -0
  356. data/lib/rubocop/cop/lint/syntax.rb +49 -0
  357. data/lib/rubocop/cop/lint/to_enum_arguments.rb +99 -0
  358. data/lib/rubocop/cop/lint/to_json.rb +49 -0
  359. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +48 -0
  360. data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +55 -0
  361. data/lib/rubocop/cop/lint/triple_quotes.rb +71 -0
  362. data/lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb +80 -0
  363. data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +88 -0
  364. data/lib/rubocop/cop/lint/unexpected_block_arity.rb +92 -0
  365. data/lib/rubocop/cop/lint/unified_integer.rb +40 -0
  366. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +205 -0
  367. data/lib/rubocop/cop/lint/unreachable_code.rb +144 -0
  368. data/lib/rubocop/cop/lint/unreachable_loop.rb +208 -0
  369. data/lib/rubocop/cop/lint/unused_block_argument.rb +172 -0
  370. data/lib/rubocop/cop/lint/unused_method_argument.rb +137 -0
  371. data/lib/rubocop/cop/lint/uri_escape_unescape.rb +79 -0
  372. data/lib/rubocop/cop/lint/uri_regexp.rb +56 -0
  373. data/lib/rubocop/cop/lint/useless_access_modifier.rb +296 -0
  374. data/lib/rubocop/cop/lint/useless_assignment.rb +212 -0
  375. data/lib/rubocop/cop/lint/useless_constant_scoping.rb +71 -0
  376. data/lib/rubocop/cop/lint/useless_defined.rb +55 -0
  377. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +44 -0
  378. data/lib/rubocop/cop/lint/useless_method_definition.rb +77 -0
  379. data/lib/rubocop/cop/lint/useless_numeric_operation.rb +78 -0
  380. data/lib/rubocop/cop/lint/useless_rescue.rb +89 -0
  381. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +127 -0
  382. data/lib/rubocop/cop/lint/useless_setter_call.rb +158 -0
  383. data/lib/rubocop/cop/lint/useless_times.rb +114 -0
  384. data/lib/rubocop/cop/lint/void.rb +272 -0
  385. data/lib/rubocop/cop/message_annotator.rb +134 -0
  386. data/lib/rubocop/cop/metrics/abc_size.rb +56 -0
  387. data/lib/rubocop/cop/metrics/block_length.rb +88 -0
  388. data/lib/rubocop/cop/metrics/block_nesting.rb +72 -0
  389. data/lib/rubocop/cop/metrics/class_length.rb +77 -0
  390. data/lib/rubocop/cop/metrics/collection_literal_length.rb +83 -0
  391. data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +58 -0
  392. data/lib/rubocop/cop/metrics/method_length.rb +80 -0
  393. data/lib/rubocop/cop/metrics/module_length.rb +62 -0
  394. data/lib/rubocop/cop/metrics/parameter_lists.rb +147 -0
  395. data/lib/rubocop/cop/metrics/perceived_complexity.rb +59 -0
  396. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +140 -0
  397. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +209 -0
  398. data/lib/rubocop/cop/metrics/utils/iterating_block.rb +61 -0
  399. data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +143 -0
  400. data/lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb +42 -0
  401. data/lib/rubocop/cop/migration/department_name.rb +81 -0
  402. data/lib/rubocop/cop/mixin/alignment.rb +85 -0
  403. data/lib/rubocop/cop/mixin/allowed_identifiers.rb +18 -0
  404. data/lib/rubocop/cop/mixin/allowed_methods.rb +48 -0
  405. data/lib/rubocop/cop/mixin/allowed_pattern.rb +68 -0
  406. data/lib/rubocop/cop/mixin/allowed_receivers.rb +34 -0
  407. data/lib/rubocop/cop/mixin/annotation_comment.rb +70 -0
  408. data/lib/rubocop/cop/mixin/array_min_size.rb +57 -0
  409. data/lib/rubocop/cop/mixin/array_syntax.rb +17 -0
  410. data/lib/rubocop/cop/mixin/auto_corrector.rb +12 -0
  411. data/lib/rubocop/cop/mixin/check_assignment.rb +36 -0
  412. data/lib/rubocop/cop/mixin/check_line_breakable.rb +237 -0
  413. data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +49 -0
  414. data/lib/rubocop/cop/mixin/code_length.rb +70 -0
  415. data/lib/rubocop/cop/mixin/comments_help.rb +95 -0
  416. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +112 -0
  417. data/lib/rubocop/cop/mixin/configurable_formatting.rb +41 -0
  418. data/lib/rubocop/cop/mixin/configurable_max.rb +28 -0
  419. data/lib/rubocop/cop/mixin/configurable_naming.rb +16 -0
  420. data/lib/rubocop/cop/mixin/configurable_numbering.rb +18 -0
  421. data/lib/rubocop/cop/mixin/def_node.rb +26 -0
  422. data/lib/rubocop/cop/mixin/dig_help.rb +27 -0
  423. data/lib/rubocop/cop/mixin/documentation_comment.rb +52 -0
  424. data/lib/rubocop/cop/mixin/duplication.rb +46 -0
  425. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +172 -0
  426. data/lib/rubocop/cop/mixin/empty_parameter.rb +25 -0
  427. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +80 -0
  428. data/lib/rubocop/cop/mixin/endless_method_rewriter.rb +24 -0
  429. data/lib/rubocop/cop/mixin/enforce_superclass.rb +44 -0
  430. data/lib/rubocop/cop/mixin/first_element_line_break.rb +50 -0
  431. data/lib/rubocop/cop/mixin/forbidden_identifiers.rb +20 -0
  432. data/lib/rubocop/cop/mixin/forbidden_pattern.rb +16 -0
  433. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +99 -0
  434. data/lib/rubocop/cop/mixin/gem_declaration.rb +13 -0
  435. data/lib/rubocop/cop/mixin/gemspec_help.rb +30 -0
  436. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +156 -0
  437. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +236 -0
  438. data/lib/rubocop/cop/mixin/hash_subset.rb +203 -0
  439. data/lib/rubocop/cop/mixin/hash_transform_method.rb +192 -0
  440. data/lib/rubocop/cop/mixin/heredoc.rb +41 -0
  441. data/lib/rubocop/cop/mixin/integer_node.rb +14 -0
  442. data/lib/rubocop/cop/mixin/interpolation.rb +25 -0
  443. data/lib/rubocop/cop/mixin/line_length_help.rb +116 -0
  444. data/lib/rubocop/cop/mixin/match_range.rb +23 -0
  445. data/lib/rubocop/cop/mixin/method_complexity.rb +84 -0
  446. data/lib/rubocop/cop/mixin/method_preference.rb +30 -0
  447. data/lib/rubocop/cop/mixin/min_body_length.rb +21 -0
  448. data/lib/rubocop/cop/mixin/min_branches_count.rb +40 -0
  449. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +109 -0
  450. data/lib/rubocop/cop/mixin/multiline_element_line_breaks.rb +32 -0
  451. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +226 -0
  452. data/lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb +141 -0
  453. data/lib/rubocop/cop/mixin/negative_conditional.rb +34 -0
  454. data/lib/rubocop/cop/mixin/nil_methods.rb +23 -0
  455. data/lib/rubocop/cop/mixin/on_normal_if_unless.rb +14 -0
  456. data/lib/rubocop/cop/mixin/ordered_gem_node.rb +66 -0
  457. data/lib/rubocop/cop/mixin/parentheses.rb +16 -0
  458. data/lib/rubocop/cop/mixin/percent_array.rb +125 -0
  459. data/lib/rubocop/cop/mixin/percent_literal.rb +32 -0
  460. data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +219 -0
  461. data/lib/rubocop/cop/mixin/preferred_delimiters.rb +50 -0
  462. data/lib/rubocop/cop/mixin/range_help.rb +160 -0
  463. data/lib/rubocop/cop/mixin/rational_literal.rb +19 -0
  464. data/lib/rubocop/cop/mixin/require_library.rb +61 -0
  465. data/lib/rubocop/cop/mixin/rescue_node.rb +34 -0
  466. data/lib/rubocop/cop/mixin/safe_assignment.rb +27 -0
  467. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +54 -0
  468. data/lib/rubocop/cop/mixin/space_before_punctuation.rb +49 -0
  469. data/lib/rubocop/cop/mixin/statement_modifier.rb +115 -0
  470. data/lib/rubocop/cop/mixin/string_help.rb +40 -0
  471. data/lib/rubocop/cop/mixin/string_literals_help.rb +33 -0
  472. data/lib/rubocop/cop/mixin/surrounding_space.rb +134 -0
  473. data/lib/rubocop/cop/mixin/symbol_help.rb +13 -0
  474. data/lib/rubocop/cop/mixin/target_ruby_version.rb +36 -0
  475. data/lib/rubocop/cop/mixin/trailing_body.rb +25 -0
  476. data/lib/rubocop/cop/mixin/trailing_comma.rb +221 -0
  477. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +104 -0
  478. data/lib/rubocop/cop/mixin/unused_argument.rb +29 -0
  479. data/lib/rubocop/cop/mixin/visibility_help.rb +72 -0
  480. data/lib/rubocop/cop/naming/accessor_method_name.rb +78 -0
  481. data/lib/rubocop/cop/naming/ascii_identifiers.rb +90 -0
  482. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +53 -0
  483. data/lib/rubocop/cop/naming/block_forwarding.rb +156 -0
  484. data/lib/rubocop/cop/naming/block_parameter_name.rb +49 -0
  485. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +45 -0
  486. data/lib/rubocop/cop/naming/constant_name.rb +82 -0
  487. data/lib/rubocop/cop/naming/file_name.rb +245 -0
  488. data/lib/rubocop/cop/naming/heredoc_delimiter_case.rb +68 -0
  489. data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +57 -0
  490. data/lib/rubocop/cop/naming/inclusive_language.rb +297 -0
  491. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +294 -0
  492. data/lib/rubocop/cop/naming/method_name.rb +137 -0
  493. data/lib/rubocop/cop/naming/method_parameter_name.rb +58 -0
  494. data/lib/rubocop/cop/naming/predicate_name.rb +204 -0
  495. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +172 -0
  496. data/lib/rubocop/cop/naming/variable_name.rb +112 -0
  497. data/lib/rubocop/cop/naming/variable_number.rb +155 -0
  498. data/lib/rubocop/cop/offense.rb +238 -0
  499. data/lib/rubocop/cop/registry.rb +318 -0
  500. data/lib/rubocop/cop/security/compound_hash.rb +108 -0
  501. data/lib/rubocop/cop/security/eval.rb +33 -0
  502. data/lib/rubocop/cop/security/io_methods.rb +49 -0
  503. data/lib/rubocop/cop/security/json_load.rb +47 -0
  504. data/lib/rubocop/cop/security/marshal_load.rb +39 -0
  505. data/lib/rubocop/cop/security/open.rb +89 -0
  506. data/lib/rubocop/cop/security/yaml_load.rb +50 -0
  507. data/lib/rubocop/cop/severity.rb +67 -0
  508. data/lib/rubocop/cop/style/access_modifier_declarations.rb +343 -0
  509. data/lib/rubocop/cop/style/accessor_grouping.rb +202 -0
  510. data/lib/rubocop/cop/style/alias.rb +158 -0
  511. data/lib/rubocop/cop/style/ambiguous_endless_method_definition.rb +79 -0
  512. data/lib/rubocop/cop/style/and_or.rb +158 -0
  513. data/lib/rubocop/cop/style/arguments_forwarding.rb +567 -0
  514. data/lib/rubocop/cop/style/array_coercion.rb +87 -0
  515. data/lib/rubocop/cop/style/array_first_last.rb +80 -0
  516. data/lib/rubocop/cop/style/array_intersect.rb +131 -0
  517. data/lib/rubocop/cop/style/array_join.rb +39 -0
  518. data/lib/rubocop/cop/style/ascii_comments.rb +57 -0
  519. data/lib/rubocop/cop/style/attr.rb +80 -0
  520. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +55 -0
  521. data/lib/rubocop/cop/style/bare_percent_literals.rb +76 -0
  522. data/lib/rubocop/cop/style/begin_block.rb +21 -0
  523. data/lib/rubocop/cop/style/bisected_attr_accessor/macro.rb +60 -0
  524. data/lib/rubocop/cop/style/bisected_attr_accessor.rb +125 -0
  525. data/lib/rubocop/cop/style/bitwise_predicate.rb +100 -0
  526. data/lib/rubocop/cop/style/block_comments.rb +66 -0
  527. data/lib/rubocop/cop/style/block_delimiters.rb +503 -0
  528. data/lib/rubocop/cop/style/case_equality.rb +108 -0
  529. data/lib/rubocop/cop/style/case_like_if.rb +277 -0
  530. data/lib/rubocop/cop/style/character_literal.rb +57 -0
  531. data/lib/rubocop/cop/style/class_and_module_children.rb +217 -0
  532. data/lib/rubocop/cop/style/class_check.rb +55 -0
  533. data/lib/rubocop/cop/style/class_equality_comparison.rb +134 -0
  534. data/lib/rubocop/cop/style/class_methods.rb +54 -0
  535. data/lib/rubocop/cop/style/class_methods_definitions.rb +158 -0
  536. data/lib/rubocop/cop/style/class_vars.rb +64 -0
  537. data/lib/rubocop/cop/style/collection_compact.rb +143 -0
  538. data/lib/rubocop/cop/style/collection_methods.rb +93 -0
  539. data/lib/rubocop/cop/style/colon_method_call.rb +46 -0
  540. data/lib/rubocop/cop/style/colon_method_definition.rb +37 -0
  541. data/lib/rubocop/cop/style/combinable_defined.rb +115 -0
  542. data/lib/rubocop/cop/style/combinable_loops.rb +131 -0
  543. data/lib/rubocop/cop/style/command_literal.rb +181 -0
  544. data/lib/rubocop/cop/style/comment_annotation.rb +130 -0
  545. data/lib/rubocop/cop/style/commented_keyword.rb +118 -0
  546. data/lib/rubocop/cop/style/comparable_between.rb +75 -0
  547. data/lib/rubocop/cop/style/comparable_clamp.rb +125 -0
  548. data/lib/rubocop/cop/style/concat_array_literals.rb +95 -0
  549. data/lib/rubocop/cop/style/conditional_assignment.rb +674 -0
  550. data/lib/rubocop/cop/style/constant_visibility.rb +97 -0
  551. data/lib/rubocop/cop/style/copyright.rb +109 -0
  552. data/lib/rubocop/cop/style/data_inheritance.rb +75 -0
  553. data/lib/rubocop/cop/style/date_time.rb +94 -0
  554. data/lib/rubocop/cop/style/def_with_parentheses.rb +57 -0
  555. data/lib/rubocop/cop/style/dig_chain.rb +89 -0
  556. data/lib/rubocop/cop/style/dir.rb +50 -0
  557. data/lib/rubocop/cop/style/dir_empty.rb +54 -0
  558. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +87 -0
  559. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +169 -0
  560. data/lib/rubocop/cop/style/documentation.rb +198 -0
  561. data/lib/rubocop/cop/style/documentation_method.rb +152 -0
  562. data/lib/rubocop/cop/style/double_cop_disable_directive.rb +46 -0
  563. data/lib/rubocop/cop/style/double_negation.rb +159 -0
  564. data/lib/rubocop/cop/style/each_for_simple_loop.rb +86 -0
  565. data/lib/rubocop/cop/style/each_with_object.rb +138 -0
  566. data/lib/rubocop/cop/style/empty_block_parameter.rb +47 -0
  567. data/lib/rubocop/cop/style/empty_case_condition.rb +117 -0
  568. data/lib/rubocop/cop/style/empty_else.rb +207 -0
  569. data/lib/rubocop/cop/style/empty_heredoc.rb +60 -0
  570. data/lib/rubocop/cop/style/empty_lambda_parameter.rb +44 -0
  571. data/lib/rubocop/cop/style/empty_literal.rb +151 -0
  572. data/lib/rubocop/cop/style/empty_method.rb +119 -0
  573. data/lib/rubocop/cop/style/encoding.rb +63 -0
  574. data/lib/rubocop/cop/style/end_block.rb +28 -0
  575. data/lib/rubocop/cop/style/endless_method.rb +233 -0
  576. data/lib/rubocop/cop/style/env_home.rb +56 -0
  577. data/lib/rubocop/cop/style/eval_with_location.rb +229 -0
  578. data/lib/rubocop/cop/style/even_odd.rb +56 -0
  579. data/lib/rubocop/cop/style/exact_regexp_match.rb +69 -0
  580. data/lib/rubocop/cop/style/expand_path_arguments.rb +191 -0
  581. data/lib/rubocop/cop/style/explicit_block_argument.rb +166 -0
  582. data/lib/rubocop/cop/style/exponential_notation.rb +116 -0
  583. data/lib/rubocop/cop/style/fetch_env_var.rb +133 -0
  584. data/lib/rubocop/cop/style/file_empty.rb +71 -0
  585. data/lib/rubocop/cop/style/file_null.rb +89 -0
  586. data/lib/rubocop/cop/style/file_read.rb +109 -0
  587. data/lib/rubocop/cop/style/file_touch.rb +75 -0
  588. data/lib/rubocop/cop/style/file_write.rb +133 -0
  589. data/lib/rubocop/cop/style/float_division.rb +155 -0
  590. data/lib/rubocop/cop/style/for.rb +90 -0
  591. data/lib/rubocop/cop/style/format_string.rb +154 -0
  592. data/lib/rubocop/cop/style/format_string_token.rb +255 -0
  593. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +221 -0
  594. data/lib/rubocop/cop/style/global_std_stream.rb +79 -0
  595. data/lib/rubocop/cop/style/global_vars.rb +78 -0
  596. data/lib/rubocop/cop/style/guard_clause.rb +319 -0
  597. data/lib/rubocop/cop/style/hash_as_last_array_item.rb +100 -0
  598. data/lib/rubocop/cop/style/hash_conversion.rb +143 -0
  599. data/lib/rubocop/cop/style/hash_each_methods.rb +221 -0
  600. data/lib/rubocop/cop/style/hash_except.rb +80 -0
  601. data/lib/rubocop/cop/style/hash_fetch_chain.rb +104 -0
  602. data/lib/rubocop/cop/style/hash_like_case.rb +71 -0
  603. data/lib/rubocop/cop/style/hash_slice.rb +80 -0
  604. data/lib/rubocop/cop/style/hash_syntax.rb +307 -0
  605. data/lib/rubocop/cop/style/hash_transform_keys.rb +95 -0
  606. data/lib/rubocop/cop/style/hash_transform_values.rb +93 -0
  607. data/lib/rubocop/cop/style/identical_conditional_branches.rb +273 -0
  608. data/lib/rubocop/cop/style/if_inside_else.rb +152 -0
  609. data/lib/rubocop/cop/style/if_unless_modifier.rb +295 -0
  610. data/lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb +47 -0
  611. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +163 -0
  612. data/lib/rubocop/cop/style/if_with_semicolon.rb +132 -0
  613. data/lib/rubocop/cop/style/implicit_runtime_error.rb +34 -0
  614. data/lib/rubocop/cop/style/in_pattern_then.rb +60 -0
  615. data/lib/rubocop/cop/style/infinite_loop.rb +127 -0
  616. data/lib/rubocop/cop/style/inline_comment.rb +34 -0
  617. data/lib/rubocop/cop/style/inverse_methods.rb +200 -0
  618. data/lib/rubocop/cop/style/invertible_unless_condition.rb +160 -0
  619. data/lib/rubocop/cop/style/ip_addresses.rb +75 -0
  620. data/lib/rubocop/cop/style/it_assignment.rb +36 -0
  621. data/lib/rubocop/cop/style/it_block_parameter.rb +100 -0
  622. data/lib/rubocop/cop/style/keyword_arguments_merging.rb +67 -0
  623. data/lib/rubocop/cop/style/keyword_parameters_order.rb +81 -0
  624. data/lib/rubocop/cop/style/lambda.rb +126 -0
  625. data/lib/rubocop/cop/style/lambda_call.rb +79 -0
  626. data/lib/rubocop/cop/style/line_end_concatenation.rb +143 -0
  627. data/lib/rubocop/cop/style/magic_comment_format.rb +307 -0
  628. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +168 -0
  629. data/lib/rubocop/cop/style/map_into_array.rb +236 -0
  630. data/lib/rubocop/cop/style/map_to_hash.rb +81 -0
  631. data/lib/rubocop/cop/style/map_to_set.rb +65 -0
  632. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +258 -0
  633. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +48 -0
  634. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +248 -0
  635. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +120 -0
  636. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +55 -0
  637. data/lib/rubocop/cop/style/method_def_parentheses.rb +180 -0
  638. data/lib/rubocop/cop/style/min_max.rb +64 -0
  639. data/lib/rubocop/cop/style/min_max_comparison.rb +83 -0
  640. data/lib/rubocop/cop/style/missing_else.rb +185 -0
  641. data/lib/rubocop/cop/style/missing_respond_to_missing.rb +82 -0
  642. data/lib/rubocop/cop/style/mixin_grouping.rb +135 -0
  643. data/lib/rubocop/cop/style/mixin_usage.rb +72 -0
  644. data/lib/rubocop/cop/style/module_function.rb +170 -0
  645. data/lib/rubocop/cop/style/multiline_block_chain.rb +51 -0
  646. data/lib/rubocop/cop/style/multiline_if_modifier.rb +56 -0
  647. data/lib/rubocop/cop/style/multiline_if_then.rb +44 -0
  648. data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +60 -0
  649. data/lib/rubocop/cop/style/multiline_memoization.rb +96 -0
  650. data/lib/rubocop/cop/style/multiline_method_signature.rb +95 -0
  651. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +102 -0
  652. data/lib/rubocop/cop/style/multiline_when_then.rb +60 -0
  653. data/lib/rubocop/cop/style/multiple_comparison.rb +164 -0
  654. data/lib/rubocop/cop/style/mutable_constant.rb +246 -0
  655. data/lib/rubocop/cop/style/negated_if.rb +98 -0
  656. data/lib/rubocop/cop/style/negated_if_else_condition.rb +137 -0
  657. data/lib/rubocop/cop/style/negated_unless.rb +88 -0
  658. data/lib/rubocop/cop/style/negated_while.rb +40 -0
  659. data/lib/rubocop/cop/style/nested_file_dirname.rb +66 -0
  660. data/lib/rubocop/cop/style/nested_modifier.rb +100 -0
  661. data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +79 -0
  662. data/lib/rubocop/cop/style/nested_ternary_operator.rb +63 -0
  663. data/lib/rubocop/cop/style/next.rb +277 -0
  664. data/lib/rubocop/cop/style/nil_comparison.rb +85 -0
  665. data/lib/rubocop/cop/style/nil_lambda.rb +70 -0
  666. data/lib/rubocop/cop/style/non_nil_check.rb +158 -0
  667. data/lib/rubocop/cop/style/not.rb +76 -0
  668. data/lib/rubocop/cop/style/numbered_parameters.rb +46 -0
  669. data/lib/rubocop/cop/style/numbered_parameters_limit.rb +58 -0
  670. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +119 -0
  671. data/lib/rubocop/cop/style/numeric_literals.rb +129 -0
  672. data/lib/rubocop/cop/style/numeric_predicate.rb +185 -0
  673. data/lib/rubocop/cop/style/object_then.rb +76 -0
  674. data/lib/rubocop/cop/style/one_line_conditional.rb +148 -0
  675. data/lib/rubocop/cop/style/open_struct_use.rb +69 -0
  676. data/lib/rubocop/cop/style/operator_method_call.rb +91 -0
  677. data/lib/rubocop/cop/style/option_hash.rb +54 -0
  678. data/lib/rubocop/cop/style/optional_arguments.rb +59 -0
  679. data/lib/rubocop/cop/style/optional_boolean_parameter.rb +64 -0
  680. data/lib/rubocop/cop/style/or_assignment.rb +94 -0
  681. data/lib/rubocop/cop/style/parallel_assignment.rb +290 -0
  682. data/lib/rubocop/cop/style/parentheses_around_condition.rb +136 -0
  683. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +118 -0
  684. data/lib/rubocop/cop/style/percent_q_literals.rb +70 -0
  685. data/lib/rubocop/cop/style/perl_backrefs.rb +127 -0
  686. data/lib/rubocop/cop/style/preferred_hash_methods.rb +74 -0
  687. data/lib/rubocop/cop/style/proc.rb +37 -0
  688. data/lib/rubocop/cop/style/quoted_symbols.rb +122 -0
  689. data/lib/rubocop/cop/style/raise_args.rb +160 -0
  690. data/lib/rubocop/cop/style/random_with_offset.rb +153 -0
  691. data/lib/rubocop/cop/style/redundant_argument.rb +129 -0
  692. data/lib/rubocop/cop/style/redundant_array_constructor.rb +77 -0
  693. data/lib/rubocop/cop/style/redundant_assignment.rb +114 -0
  694. data/lib/rubocop/cop/style/redundant_begin.rb +205 -0
  695. data/lib/rubocop/cop/style/redundant_capital_w.rb +46 -0
  696. data/lib/rubocop/cop/style/redundant_condition.rb +342 -0
  697. data/lib/rubocop/cop/style/redundant_conditional.rb +84 -0
  698. data/lib/rubocop/cop/style/redundant_constant_base.rb +85 -0
  699. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +50 -0
  700. data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +129 -0
  701. data/lib/rubocop/cop/style/redundant_each.rb +119 -0
  702. data/lib/rubocop/cop/style/redundant_exception.rb +85 -0
  703. data/lib/rubocop/cop/style/redundant_fetch_block.rb +121 -0
  704. data/lib/rubocop/cop/style/redundant_file_extension_in_require.rb +61 -0
  705. data/lib/rubocop/cop/style/redundant_filter_chain.rb +118 -0
  706. data/lib/rubocop/cop/style/redundant_format.rb +257 -0
  707. data/lib/rubocop/cop/style/redundant_freeze.rb +69 -0
  708. data/lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +58 -0
  709. data/lib/rubocop/cop/style/redundant_initialize.rb +165 -0
  710. data/lib/rubocop/cop/style/redundant_interpolation.rb +138 -0
  711. data/lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb +46 -0
  712. data/lib/rubocop/cop/style/redundant_line_continuation.rb +236 -0
  713. data/lib/rubocop/cop/style/redundant_parentheses.rb +313 -0
  714. data/lib/rubocop/cop/style/redundant_percent_q.rb +108 -0
  715. data/lib/rubocop/cop/style/redundant_regexp_argument.rb +107 -0
  716. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +119 -0
  717. data/lib/rubocop/cop/style/redundant_regexp_constructor.rb +46 -0
  718. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +120 -0
  719. data/lib/rubocop/cop/style/redundant_return.rb +189 -0
  720. data/lib/rubocop/cop/style/redundant_self.rb +212 -0
  721. data/lib/rubocop/cop/style/redundant_self_assignment.rb +106 -0
  722. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +90 -0
  723. data/lib/rubocop/cop/style/redundant_sort.rb +209 -0
  724. data/lib/rubocop/cop/style/redundant_sort_by.rb +79 -0
  725. data/lib/rubocop/cop/style/redundant_string_escape.rb +185 -0
  726. data/lib/rubocop/cop/style/regexp_literal.rb +231 -0
  727. data/lib/rubocop/cop/style/require_order.rb +139 -0
  728. data/lib/rubocop/cop/style/rescue_modifier.rb +112 -0
  729. data/lib/rubocop/cop/style/rescue_standard_error.rb +126 -0
  730. data/lib/rubocop/cop/style/return_nil.rb +99 -0
  731. data/lib/rubocop/cop/style/return_nil_in_predicate_method_definition.rb +137 -0
  732. data/lib/rubocop/cop/style/safe_navigation.rb +395 -0
  733. data/lib/rubocop/cop/style/safe_navigation_chain_length.rb +52 -0
  734. data/lib/rubocop/cop/style/sample.rb +144 -0
  735. data/lib/rubocop/cop/style/select_by_regexp.rb +169 -0
  736. data/lib/rubocop/cop/style/self_assignment.rb +95 -0
  737. data/lib/rubocop/cop/style/semicolon.rb +172 -0
  738. data/lib/rubocop/cop/style/send.rb +29 -0
  739. data/lib/rubocop/cop/style/send_with_literal_method_name.rb +105 -0
  740. data/lib/rubocop/cop/style/signal_exception.rb +217 -0
  741. data/lib/rubocop/cop/style/single_argument_dig.rb +73 -0
  742. data/lib/rubocop/cop/style/single_line_block_params.rb +119 -0
  743. data/lib/rubocop/cop/style/single_line_do_end_block.rb +78 -0
  744. data/lib/rubocop/cop/style/single_line_methods.rb +144 -0
  745. data/lib/rubocop/cop/style/slicing_with_range.rb +146 -0
  746. data/lib/rubocop/cop/style/sole_nested_conditional.rb +205 -0
  747. data/lib/rubocop/cop/style/special_global_vars.rb +259 -0
  748. data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +79 -0
  749. data/lib/rubocop/cop/style/static_class.rb +128 -0
  750. data/lib/rubocop/cop/style/stderr_puts.rb +57 -0
  751. data/lib/rubocop/cop/style/string_chars.rb +42 -0
  752. data/lib/rubocop/cop/style/string_concatenation.rb +179 -0
  753. data/lib/rubocop/cop/style/string_hash_keys.rb +58 -0
  754. data/lib/rubocop/cop/style/string_literals.rb +129 -0
  755. data/lib/rubocop/cop/style/string_literals_in_interpolation.rb +76 -0
  756. data/lib/rubocop/cop/style/string_methods.rb +36 -0
  757. data/lib/rubocop/cop/style/strip.rb +45 -0
  758. data/lib/rubocop/cop/style/struct_inheritance.rb +72 -0
  759. data/lib/rubocop/cop/style/super_arguments.rb +221 -0
  760. data/lib/rubocop/cop/style/super_with_args_parentheses.rb +35 -0
  761. data/lib/rubocop/cop/style/swap_values.rb +101 -0
  762. data/lib/rubocop/cop/style/symbol_array.rb +133 -0
  763. data/lib/rubocop/cop/style/symbol_literal.rb +28 -0
  764. data/lib/rubocop/cop/style/symbol_proc.rb +282 -0
  765. data/lib/rubocop/cop/style/ternary_parentheses.rb +240 -0
  766. data/lib/rubocop/cop/style/top_level_method_definition.rb +86 -0
  767. data/lib/rubocop/cop/style/trailing_body_on_class.rb +41 -0
  768. data/lib/rubocop/cop/style/trailing_body_on_method_definition.rb +55 -0
  769. data/lib/rubocop/cop/style/trailing_body_on_module.rb +40 -0
  770. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +109 -0
  771. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +137 -0
  772. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +105 -0
  773. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +139 -0
  774. data/lib/rubocop/cop/style/trailing_method_end_statement.rb +62 -0
  775. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +152 -0
  776. data/lib/rubocop/cop/style/trivial_accessors.rb +254 -0
  777. data/lib/rubocop/cop/style/unless_else.rb +55 -0
  778. data/lib/rubocop/cop/style/unless_logical_operators.rb +106 -0
  779. data/lib/rubocop/cop/style/unpack_first.rb +59 -0
  780. data/lib/rubocop/cop/style/variable_interpolation.rb +44 -0
  781. data/lib/rubocop/cop/style/when_then.rb +37 -0
  782. data/lib/rubocop/cop/style/while_until_do.rb +47 -0
  783. data/lib/rubocop/cop/style/while_until_modifier.rb +51 -0
  784. data/lib/rubocop/cop/style/word_array.rb +155 -0
  785. data/lib/rubocop/cop/style/yaml_file_read.rb +66 -0
  786. data/lib/rubocop/cop/style/yoda_condition.rb +185 -0
  787. data/lib/rubocop/cop/style/yoda_expression.rb +92 -0
  788. data/lib/rubocop/cop/style/zero_length_predicate.rb +154 -0
  789. data/lib/rubocop/cop/team.rb +290 -0
  790. data/lib/rubocop/cop/util.rb +216 -0
  791. data/lib/rubocop/cop/utils/format_string.rb +138 -0
  792. data/lib/rubocop/cop/variable_force/assignment.rb +152 -0
  793. data/lib/rubocop/cop/variable_force/branch.rb +331 -0
  794. data/lib/rubocop/cop/variable_force/branchable.rb +23 -0
  795. data/lib/rubocop/cop/variable_force/reference.rb +47 -0
  796. data/lib/rubocop/cop/variable_force/scope.rb +106 -0
  797. data/lib/rubocop/cop/variable_force/variable.rb +127 -0
  798. data/lib/rubocop/cop/variable_force/variable_table.rb +131 -0
  799. data/lib/rubocop/cop/variable_force.rb +445 -0
  800. data/lib/rubocop/cops_documentation_generator.rb +405 -0
  801. data/lib/rubocop/core_ext/string.rb +19 -0
  802. data/lib/rubocop/directive_comment.rb +180 -0
  803. data/lib/rubocop/error.rb +35 -0
  804. data/lib/rubocop/ext/comment.rb +18 -0
  805. data/lib/rubocop/ext/processed_source.rb +20 -0
  806. data/lib/rubocop/ext/range.rb +15 -0
  807. data/lib/rubocop/ext/regexp_node.rb +69 -0
  808. data/lib/rubocop/ext/regexp_parser.rb +78 -0
  809. data/lib/rubocop/feature_loader.rb +94 -0
  810. data/lib/rubocop/file_finder.rb +43 -0
  811. data/lib/rubocop/file_patterns.rb +43 -0
  812. data/lib/rubocop/formatter/auto_gen_config_formatter.rb +17 -0
  813. data/lib/rubocop/formatter/base_formatter.rb +119 -0
  814. data/lib/rubocop/formatter/clang_style_formatter.rb +55 -0
  815. data/lib/rubocop/formatter/colorizable.rb +41 -0
  816. data/lib/rubocop/formatter/disabled_config_formatter.rb +282 -0
  817. data/lib/rubocop/formatter/emacs_style_formatter.rb +39 -0
  818. data/lib/rubocop/formatter/file_list_formatter.rb +20 -0
  819. data/lib/rubocop/formatter/formatter_set.rb +114 -0
  820. data/lib/rubocop/formatter/fuubar_style_formatter.rb +80 -0
  821. data/lib/rubocop/formatter/github_actions_formatter.rb +57 -0
  822. data/lib/rubocop/formatter/html_formatter.rb +155 -0
  823. data/lib/rubocop/formatter/json_formatter.rb +79 -0
  824. data/lib/rubocop/formatter/junit_formatter.rb +143 -0
  825. data/lib/rubocop/formatter/markdown_formatter.rb +78 -0
  826. data/lib/rubocop/formatter/offense_count_formatter.rb +93 -0
  827. data/lib/rubocop/formatter/pacman_formatter.rb +80 -0
  828. data/lib/rubocop/formatter/progress_formatter.rb +62 -0
  829. data/lib/rubocop/formatter/quiet_formatter.rb +13 -0
  830. data/lib/rubocop/formatter/simple_text_formatter.rb +172 -0
  831. data/lib/rubocop/formatter/tap_formatter.rb +82 -0
  832. data/lib/rubocop/formatter/text_util.rb +20 -0
  833. data/lib/rubocop/formatter/worst_offenders_formatter.rb +64 -0
  834. data/lib/rubocop/formatter.rb +34 -0
  835. data/lib/rubocop/lockfile.rb +91 -0
  836. data/lib/rubocop/lsp/diagnostic.rb +189 -0
  837. data/lib/rubocop/lsp/logger.rb +22 -0
  838. data/lib/rubocop/lsp/routes.rb +227 -0
  839. data/lib/rubocop/lsp/runtime.rb +69 -0
  840. data/lib/rubocop/lsp/server.rb +70 -0
  841. data/lib/rubocop/lsp/severity.rb +27 -0
  842. data/lib/rubocop/lsp/stdin_runner.rb +85 -0
  843. data/lib/rubocop/lsp.rb +36 -0
  844. data/lib/rubocop/magic_comment.rb +308 -0
  845. data/lib/rubocop/name_similarity.rb +29 -0
  846. data/lib/rubocop/options.rb +662 -0
  847. data/lib/rubocop/path_util.rb +122 -0
  848. data/lib/rubocop/platform.rb +11 -0
  849. data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
  850. data/lib/rubocop/plugin/load_error.rb +26 -0
  851. data/lib/rubocop/plugin/loader.rb +100 -0
  852. data/lib/rubocop/plugin/not_supported_error.rb +29 -0
  853. data/lib/rubocop/plugin.rb +46 -0
  854. data/lib/rubocop/rake_task.rb +109 -0
  855. data/lib/rubocop/remote_config.rb +112 -0
  856. data/lib/rubocop/result_cache.rb +234 -0
  857. data/lib/rubocop/rspec/cop_helper.rb +111 -0
  858. data/lib/rubocop/rspec/expect_offense.rb +348 -0
  859. data/lib/rubocop/rspec/parallel_formatter.rb +90 -0
  860. data/lib/rubocop/rspec/shared_contexts.rb +272 -0
  861. data/lib/rubocop/rspec/support.rb +34 -0
  862. data/lib/rubocop/runner.rb +523 -0
  863. data/lib/rubocop/server/cache.rb +206 -0
  864. data/lib/rubocop/server/cli.rb +147 -0
  865. data/lib/rubocop/server/client_command/base.rb +44 -0
  866. data/lib/rubocop/server/client_command/exec.rb +64 -0
  867. data/lib/rubocop/server/client_command/restart.rb +25 -0
  868. data/lib/rubocop/server/client_command/start.rb +48 -0
  869. data/lib/rubocop/server/client_command/status.rb +28 -0
  870. data/lib/rubocop/server/client_command/stop.rb +31 -0
  871. data/lib/rubocop/server/client_command.rb +26 -0
  872. data/lib/rubocop/server/core.rb +116 -0
  873. data/lib/rubocop/server/errors.rb +23 -0
  874. data/lib/rubocop/server/helper.rb +34 -0
  875. data/lib/rubocop/server/server_command/base.rb +50 -0
  876. data/lib/rubocop/server/server_command/exec.rb +33 -0
  877. data/lib/rubocop/server/server_command/stop.rb +24 -0
  878. data/lib/rubocop/server/server_command.rb +21 -0
  879. data/lib/rubocop/server/socket_reader.rb +69 -0
  880. data/lib/rubocop/server.rb +53 -0
  881. data/lib/rubocop/string_interpreter.rb +60 -0
  882. data/lib/rubocop/target_finder.rb +221 -0
  883. data/lib/rubocop/target_ruby.rb +297 -0
  884. data/lib/rubocop/util.rb +16 -0
  885. data/lib/rubocop/version.rb +160 -0
  886. data/lib/rubocop/warning.rb +11 -0
  887. data/lib/rubocop/yaml_duplication_checker.rb +34 -0
  888. data/lib/rubocop.rb +814 -0
  889. data/lib/ruby_lsp/rubocop/addon.rb +75 -0
  890. data/lib/ruby_lsp/rubocop/runtime_adapter.rb +65 -0
  891. metadata +1105 -0
@@ -0,0 +1,137 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Naming
6
+ # Makes sure that all methods use the configured style,
7
+ # snake_case or camelCase, for their names.
8
+ #
9
+ # Method names matching patterns are always allowed.
10
+ #
11
+ # The cop can be configured with `AllowedPatterns` to allow certain regexp patterns:
12
+ #
13
+ # [source,yaml]
14
+ # ----
15
+ # Naming/MethodName:
16
+ # AllowedPatterns:
17
+ # - '\AonSelectionBulkChange\z'
18
+ # - '\AonSelectionCleared\z'
19
+ # ----
20
+ #
21
+ # As well, you can also forbid specific method names or regexp patterns
22
+ # using `ForbiddenIdentifiers` or `ForbiddenPatterns`:
23
+ #
24
+ # [source,yaml]
25
+ # ----
26
+ # Naming/MethodName:
27
+ # ForbiddenIdentifiers:
28
+ # - 'def'
29
+ # - 'super'
30
+ # ForbiddenPatterns:
31
+ # - '_v1\z'
32
+ # - '_gen1\z'
33
+ # ----
34
+ #
35
+ # @example EnforcedStyle: snake_case (default)
36
+ # # bad
37
+ # def fooBar; end
38
+ #
39
+ # # good
40
+ # def foo_bar; end
41
+ #
42
+ # @example EnforcedStyle: camelCase
43
+ # # bad
44
+ # def foo_bar; end
45
+ #
46
+ # # good
47
+ # def fooBar; end
48
+ #
49
+ # @example ForbiddenIdentifiers: ['def', 'super']
50
+ # # bad
51
+ # def def; end
52
+ # def super; end
53
+ #
54
+ # @example ForbiddenPatterns: ['_v1\z', '_gen1\z']
55
+ # # bad
56
+ # def release_v1; end
57
+ # def api_gen1; end
58
+ #
59
+ class MethodName < Base
60
+ include ConfigurableNaming
61
+ include AllowedPattern
62
+ include RangeHelp
63
+ include ForbiddenIdentifiers
64
+ include ForbiddenPattern
65
+
66
+ MSG = 'Use %<style>s for method names.'
67
+ MSG_FORBIDDEN = '`%<identifier>s` is forbidden, use another method name instead.'
68
+
69
+ # @!method sym_name(node)
70
+ def_node_matcher :sym_name, '(sym $_name)'
71
+
72
+ # @!method str_name(node)
73
+ def_node_matcher :str_name, '(str $_name)'
74
+
75
+ def on_send(node)
76
+ return unless (attrs = node.attribute_accessor?)
77
+
78
+ attrs.last.each do |name_item|
79
+ name = attr_name(name_item)
80
+ next if !name || matches_allowed_pattern?(name)
81
+
82
+ if forbidden_name?(name.to_s)
83
+ register_forbidden_name(node)
84
+ else
85
+ check_name(node, name, range_position(node))
86
+ end
87
+ end
88
+ end
89
+
90
+ def on_def(node)
91
+ return if node.operator_method? || matches_allowed_pattern?(node.method_name)
92
+
93
+ if forbidden_name?(node.method_name.to_s)
94
+ register_forbidden_name(node)
95
+ else
96
+ check_name(node, node.method_name, node.loc.name)
97
+ end
98
+ end
99
+ alias on_defs on_def
100
+
101
+ private
102
+
103
+ def forbidden_name?(name)
104
+ forbidden_identifier?(name) || forbidden_pattern?(name)
105
+ end
106
+
107
+ def register_forbidden_name(node)
108
+ if node.any_def_type?
109
+ name_node = node.loc.name
110
+ method_name = node.method_name
111
+ else
112
+ attrs = node.attribute_accessor?
113
+ name_node = attrs.last.last
114
+ method_name = attr_name(name_node)
115
+ end
116
+ message = format(MSG_FORBIDDEN, identifier: method_name)
117
+ add_offense(name_node, message: message)
118
+ end
119
+
120
+ def attr_name(name_item)
121
+ sym_name(name_item) || str_name(name_item)
122
+ end
123
+
124
+ def range_position(node)
125
+ selector_end_pos = node.loc.selector.end_pos + 1
126
+ expr_end_pos = node.source_range.end_pos
127
+
128
+ range_between(selector_end_pos, expr_end_pos)
129
+ end
130
+
131
+ def message(style)
132
+ format(MSG, style: style)
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Naming
6
+ # Checks method parameter names for how descriptive they
7
+ # are. It is highly configurable.
8
+ #
9
+ # The `MinNameLength` config option takes an integer. It represents
10
+ # the minimum amount of characters the name must be. Its default is 3.
11
+ # The `AllowNamesEndingInNumbers` config option takes a boolean. When
12
+ # set to false, this cop will register offenses for names ending with
13
+ # numbers. Its default is false. The `AllowedNames` config option
14
+ # takes an array of permitted names that will never register an
15
+ # offense. The `ForbiddenNames` config option takes an array of
16
+ # restricted names that will always register an offense.
17
+ #
18
+ # @example
19
+ # # bad
20
+ # def bar(varOne, varTwo)
21
+ # varOne + varTwo
22
+ # end
23
+ #
24
+ # # With `AllowNamesEndingInNumbers` set to false
25
+ # def foo(num1, num2)
26
+ # num1 * num2
27
+ # end
28
+ #
29
+ # # With `MinNameLength` set to number greater than 1
30
+ # def baz(a, b, c)
31
+ # do_stuff(a, b, c)
32
+ # end
33
+ #
34
+ # # good
35
+ # def bar(thud, fred)
36
+ # thud + fred
37
+ # end
38
+ #
39
+ # def foo(speed, distance)
40
+ # speed * distance
41
+ # end
42
+ #
43
+ # def baz(age_a, height_b, gender_c)
44
+ # do_stuff(age_a, height_b, gender_c)
45
+ # end
46
+ class MethodParameterName < Base
47
+ include UncommunicativeName
48
+
49
+ def on_def(node)
50
+ return unless node.arguments?
51
+
52
+ check(node, node.arguments)
53
+ end
54
+ alias on_defs on_def
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,204 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Naming
6
+ # Checks that predicate method names end with a question mark and
7
+ # do not start with a forbidden prefix.
8
+ #
9
+ # A method is determined to be a predicate method if its name starts with
10
+ # one of the prefixes listed in the `NamePrefix` configuration. The list
11
+ # defaults to `is_`, `has_`, and `have_` but may be overridden.
12
+ #
13
+ # Predicate methods must end with a question mark.
14
+ #
15
+ # When `ForbiddenPrefixes` is also set (as it is by default), predicate
16
+ # methods which begin with a forbidden prefix are not allowed, even if
17
+ # they end with a `?`. These methods should be changed to remove the
18
+ # prefix.
19
+ #
20
+ # When `UseSorbetSigs` set to true (optional), the cop will only report
21
+ # offenses if the method has a Sorbet `sig` with a return type of
22
+ # `T::Boolean`. Dynamic methods are not supported with this configuration.
23
+ #
24
+ # @example NamePrefix: ['is_', 'has_', 'have_'] (default)
25
+ # # bad
26
+ # def is_even(value)
27
+ # end
28
+ #
29
+ # # When ForbiddenPrefixes: ['is_', 'has_', 'have_'] (default)
30
+ # # good
31
+ # def even?(value)
32
+ # end
33
+ #
34
+ # # When ForbiddenPrefixes: []
35
+ # # good
36
+ # def is_even?(value)
37
+ # end
38
+ #
39
+ # @example NamePrefix: ['seems_to_be_']
40
+ # # bad
41
+ # def seems_to_be_even(value)
42
+ # end
43
+ #
44
+ # # When ForbiddenPrefixes: ['seems_to_be_']
45
+ # # good
46
+ # def even?(value)
47
+ # end
48
+ #
49
+ # # When ForbiddenPrefixes: []
50
+ # # good
51
+ # def seems_to_be_even?(value)
52
+ # end
53
+ #
54
+ # @example AllowedMethods: ['is_a?'] (default)
55
+ # # Despite starting with the `is_` prefix, this method is allowed
56
+ # # good
57
+ # def is_a?(value)
58
+ # end
59
+ #
60
+ # @example AllowedMethods: ['is_even?']
61
+ # # good
62
+ # def is_even?(value)
63
+ # end
64
+ #
65
+ # @example UseSorbetSigs: false (default)
66
+ # # bad
67
+ # sig { returns(String) }
68
+ # def is_this_thing_on
69
+ # "yes"
70
+ # end
71
+ #
72
+ # # good - Sorbet signature is not evaluated
73
+ # sig { returns(String) }
74
+ # def is_this_thing_on?
75
+ # "yes"
76
+ # end
77
+ #
78
+ # @example UseSorbetSigs: true
79
+ # # bad
80
+ # sig { returns(T::Boolean) }
81
+ # def odd(value)
82
+ # end
83
+ #
84
+ # # good
85
+ # sig { returns(T::Boolean) }
86
+ # def odd?(value)
87
+ # end
88
+ #
89
+ # @example MethodDefinitionMacros: ['define_method', 'define_singleton_method'] (default)
90
+ # # bad
91
+ # define_method(:is_even) { |value| }
92
+ #
93
+ # # good
94
+ # define_method(:even?) { |value| }
95
+ #
96
+ # @example MethodDefinitionMacros: ['def_node_matcher']
97
+ # # bad
98
+ # def_node_matcher(:is_even) { |value| }
99
+ #
100
+ # # good
101
+ # def_node_matcher(:even?) { |value| }
102
+ #
103
+ class PredicateName < Base
104
+ include AllowedMethods
105
+
106
+ # @!method dynamic_method_define(node)
107
+ def_node_matcher :dynamic_method_define, <<~PATTERN
108
+ (send nil? #method_definition_macros
109
+ (sym $_)
110
+ ...)
111
+ PATTERN
112
+
113
+ def on_send(node)
114
+ dynamic_method_define(node) do |method_name|
115
+ predicate_prefixes.each do |prefix|
116
+ next if allowed_method_name?(method_name.to_s, prefix)
117
+
118
+ add_offense(
119
+ node.first_argument,
120
+ message: message(method_name, expected_name(method_name.to_s, prefix))
121
+ )
122
+ end
123
+ end
124
+ end
125
+
126
+ def on_def(node)
127
+ predicate_prefixes.each do |prefix|
128
+ method_name = node.method_name.to_s
129
+
130
+ next if allowed_method_name?(method_name, prefix)
131
+ next if use_sorbet_sigs? && !sorbet_sig?(node, return_type: 'T::Boolean')
132
+
133
+ add_offense(
134
+ node.loc.name,
135
+ message: message(method_name, expected_name(method_name, prefix))
136
+ )
137
+ end
138
+ end
139
+ alias on_defs on_def
140
+
141
+ def validate_config
142
+ forbidden_prefixes.each do |forbidden_prefix|
143
+ next if predicate_prefixes.include?(forbidden_prefix)
144
+
145
+ raise ValidationError, <<~MSG.chomp
146
+ The `Naming/PredicateName` cop is misconfigured. Prefix #{forbidden_prefix} must be included in NamePrefix because it is included in ForbiddenPrefixes.
147
+ MSG
148
+ end
149
+ end
150
+
151
+ private
152
+
153
+ # @!method sorbet_return_type(node)
154
+ def_node_matcher :sorbet_return_type, <<~PATTERN
155
+ (block (send nil? :sig) args (send _ :returns $_type))
156
+ PATTERN
157
+
158
+ def sorbet_sig?(node, return_type: nil)
159
+ return false unless (type = sorbet_return_type(node.left_sibling))
160
+
161
+ type.source == return_type
162
+ end
163
+
164
+ def allowed_method_name?(method_name, prefix)
165
+ !(method_name.start_with?(prefix) && # cheap check to avoid allocating Regexp
166
+ method_name.match?(/^#{prefix}[^0-9]/)) ||
167
+ method_name == expected_name(method_name, prefix) ||
168
+ method_name.end_with?('=') ||
169
+ allowed_method?(method_name)
170
+ end
171
+
172
+ def expected_name(method_name, prefix)
173
+ new_name = if forbidden_prefixes.include?(prefix)
174
+ method_name.sub(prefix, '')
175
+ else
176
+ method_name.dup
177
+ end
178
+ new_name << '?' unless method_name.end_with?('?')
179
+ new_name
180
+ end
181
+
182
+ def message(method_name, new_name)
183
+ "Rename `#{method_name}` to `#{new_name}`."
184
+ end
185
+
186
+ def forbidden_prefixes
187
+ cop_config['ForbiddenPrefixes']
188
+ end
189
+
190
+ def predicate_prefixes
191
+ cop_config['NamePrefix']
192
+ end
193
+
194
+ def use_sorbet_sigs?
195
+ cop_config['UseSorbetSigs']
196
+ end
197
+
198
+ def method_definition_macros(macro_name)
199
+ cop_config['MethodDefinitionMacros'].include?(macro_name.to_s)
200
+ end
201
+ end
202
+ end
203
+ end
204
+ end
@@ -0,0 +1,172 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Naming
6
+ # Makes sure that rescued exceptions variables are named as
7
+ # expected.
8
+ #
9
+ # The `PreferredName` config option takes a `String`. It represents
10
+ # the required name of the variable. Its default is `e`.
11
+ #
12
+ # NOTE: This cop does not consider nested rescues because it cannot
13
+ # guarantee that the variable from the outer rescue is not used within
14
+ # the inner rescue (in which case, changing the inner variable would
15
+ # shadow the outer variable).
16
+ #
17
+ # @example PreferredName: e (default)
18
+ # # bad
19
+ # begin
20
+ # # do something
21
+ # rescue MyException => exception
22
+ # # do something
23
+ # end
24
+ #
25
+ # # good
26
+ # begin
27
+ # # do something
28
+ # rescue MyException => e
29
+ # # do something
30
+ # end
31
+ #
32
+ # # good
33
+ # begin
34
+ # # do something
35
+ # rescue MyException => _e
36
+ # # do something
37
+ # end
38
+ #
39
+ # @example PreferredName: exception
40
+ # # bad
41
+ # begin
42
+ # # do something
43
+ # rescue MyException => e
44
+ # # do something
45
+ # end
46
+ #
47
+ # # good
48
+ # begin
49
+ # # do something
50
+ # rescue MyException => exception
51
+ # # do something
52
+ # end
53
+ #
54
+ # # good
55
+ # begin
56
+ # # do something
57
+ # rescue MyException => _exception
58
+ # # do something
59
+ # end
60
+ #
61
+ class RescuedExceptionsVariableName < Base
62
+ extend AutoCorrector
63
+
64
+ MSG = 'Use `%<preferred>s` instead of `%<bad>s`.'
65
+
66
+ def on_resbody(node)
67
+ offending_name = variable_name(node)
68
+ return unless offending_name
69
+
70
+ # Handle nested rescues by only requiring the outer one to use the
71
+ # configured variable name, so that nested rescues don't use the same
72
+ # variable.
73
+ return if node.each_ancestor(:resbody).any?
74
+
75
+ preferred_name = preferred_name(offending_name)
76
+ return if preferred_name.to_sym == offending_name
77
+
78
+ # check variable shadowing for exception variable
79
+ return if shadowed_variable_name?(node)
80
+
81
+ range = offense_range(node)
82
+ message = message(node)
83
+
84
+ add_offense(range, message: message) do |corrector|
85
+ autocorrect(corrector, node, range, offending_name, preferred_name)
86
+ end
87
+ end
88
+
89
+ private
90
+
91
+ def offense_range(resbody)
92
+ variable = resbody.exception_variable
93
+ variable.source_range
94
+ end
95
+
96
+ def autocorrect(corrector, node, range, offending_name, preferred_name)
97
+ corrector.replace(range, preferred_name)
98
+ correct_node(corrector, node.body, offending_name, preferred_name)
99
+ return unless (kwbegin_node = node.parent.each_ancestor(:kwbegin).first)
100
+
101
+ kwbegin_node.right_siblings.each do |child_node|
102
+ correct_node(corrector, child_node, offending_name, preferred_name)
103
+ end
104
+ end
105
+
106
+ def variable_name_matches?(node, name)
107
+ if node.masgn_type?
108
+ node.each_descendant(:lvasgn).any? do |lvasgn_node|
109
+ variable_name_matches?(lvasgn_node, name)
110
+ end
111
+ else
112
+ node.name == name
113
+ end
114
+ end
115
+
116
+ # rubocop:disable Metrics/MethodLength
117
+ def correct_node(corrector, node, offending_name, preferred_name)
118
+ return unless node
119
+
120
+ node.each_node(:lvar, :lvasgn, :masgn) do |child_node|
121
+ next unless variable_name_matches?(child_node, offending_name)
122
+
123
+ if child_node.lvar_type?
124
+ parent_node = child_node.parent
125
+ if parent_node.respond_to?(:value_omission?) && parent_node.value_omission?
126
+ corrector.insert_after(parent_node.loc.operator, " #{preferred_name}")
127
+ else
128
+ corrector.replace(child_node, preferred_name)
129
+ end
130
+ end
131
+
132
+ if child_node.type?(:masgn, :lvasgn)
133
+ correct_reassignment(corrector, child_node, offending_name, preferred_name)
134
+ break
135
+ end
136
+ end
137
+ end
138
+ # rubocop:enable Metrics/MethodLength
139
+
140
+ # If the exception variable is reassigned, that assignment needs to be corrected.
141
+ # Further `lvar` nodes will not be corrected though since they now refer to a
142
+ # different variable.
143
+ def correct_reassignment(corrector, node, offending_name, preferred_name)
144
+ correct_node(corrector, node.rhs, offending_name, preferred_name)
145
+ end
146
+
147
+ def preferred_name(variable_name)
148
+ preferred_name = cop_config.fetch('PreferredName', 'e')
149
+ if variable_name.to_s.start_with?('_')
150
+ "_#{preferred_name}"
151
+ else
152
+ preferred_name
153
+ end
154
+ end
155
+
156
+ def variable_name(node)
157
+ node.exception_variable.name if node.exception_variable.respond_to?(:name)
158
+ end
159
+
160
+ def message(node)
161
+ offending_name = variable_name(node)
162
+ preferred_name = preferred_name(offending_name)
163
+ format(MSG, preferred: preferred_name, bad: offending_name)
164
+ end
165
+
166
+ def shadowed_variable_name?(node)
167
+ node.each_descendant(:lvar).any? { |n| n.children.first.to_s == preferred_name(n) }
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Naming
6
+ # Checks that the configured style (snake_case or camelCase) is used for all variable names.
7
+ # This includes local variables, instance variables, class variables, method arguments
8
+ # (positional, keyword, rest or block), and block arguments.
9
+ #
10
+ # The cop can also be configured to forbid using specific names for variables, using
11
+ # `ForbiddenIdentifiers` or `ForbiddenPatterns`. In addition to the above, this applies
12
+ # to global variables as well.
13
+ #
14
+ # Method definitions and method calls are not affected by this cop.
15
+ #
16
+ # @example EnforcedStyle: snake_case (default)
17
+ # # bad
18
+ # fooBar = 1
19
+ #
20
+ # # good
21
+ # foo_bar = 1
22
+ #
23
+ # @example EnforcedStyle: camelCase
24
+ # # bad
25
+ # foo_bar = 1
26
+ #
27
+ # # good
28
+ # fooBar = 1
29
+ #
30
+ # @example AllowedIdentifiers: ['fooBar']
31
+ # # good (with EnforcedStyle: snake_case)
32
+ # fooBar = 1
33
+ #
34
+ # @example AllowedPatterns: ['_v\d+\z']
35
+ # # good (with EnforcedStyle: camelCase)
36
+ # release_v1 = true
37
+ #
38
+ # @example ForbiddenIdentifiers: ['fooBar']
39
+ # # bad (in all cases)
40
+ # fooBar = 1
41
+ # @fooBar = 1
42
+ # @@fooBar = 1
43
+ # $fooBar = 1
44
+ #
45
+ # @example ForbiddenPatterns: ['_v\d+\z']
46
+ # # bad (in all cases)
47
+ # release_v1 = true
48
+ # @release_v1 = true
49
+ # @@release_v1 = true
50
+ # $release_v1 = true
51
+ #
52
+ class VariableName < Base
53
+ include AllowedIdentifiers
54
+ include ConfigurableNaming
55
+ include AllowedPattern
56
+ include ForbiddenIdentifiers
57
+ include ForbiddenPattern
58
+
59
+ MSG = 'Use %<style>s for variable names.'
60
+ MSG_FORBIDDEN = '`%<identifier>s` is forbidden, use another name instead.'
61
+
62
+ def valid_name?(node, name, given_style = style)
63
+ super || matches_allowed_pattern?(name)
64
+ end
65
+
66
+ def on_lvasgn(node)
67
+ return unless (name = node.name)
68
+ return if allowed_identifier?(name)
69
+
70
+ if forbidden_name?(name)
71
+ register_forbidden_name(node)
72
+ else
73
+ check_name(node, name, node.loc.name)
74
+ end
75
+ end
76
+ alias on_ivasgn on_lvasgn
77
+ alias on_cvasgn on_lvasgn
78
+ alias on_arg on_lvasgn
79
+ alias on_optarg on_lvasgn
80
+ alias on_restarg on_lvasgn
81
+ alias on_kwoptarg on_lvasgn
82
+ alias on_kwarg on_lvasgn
83
+ alias on_kwrestarg on_lvasgn
84
+ alias on_blockarg on_lvasgn
85
+ alias on_lvar on_lvasgn
86
+
87
+ # Only forbidden names are checked for global variable assignment
88
+ def on_gvasgn(node)
89
+ return unless (name = node.name)
90
+ return unless forbidden_name?(name)
91
+
92
+ register_forbidden_name(node)
93
+ end
94
+
95
+ private
96
+
97
+ def forbidden_name?(name)
98
+ forbidden_identifier?(name) || forbidden_pattern?(name)
99
+ end
100
+
101
+ def message(style)
102
+ format(MSG, style: style)
103
+ end
104
+
105
+ def register_forbidden_name(node)
106
+ message = format(MSG_FORBIDDEN, identifier: node.name)
107
+ add_offense(node.loc.name, message: message)
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end