rubocop 0.29.1 → 0.30.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubocop might be problematic. Click here for more details.

Files changed (341) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +73 -1
  3. data/README.md +11 -2
  4. data/config/default.yml +194 -6
  5. data/config/disabled.yml +25 -1
  6. data/config/enabled.yml +74 -12
  7. data/lib/rubocop.rb +19 -2
  8. data/lib/rubocop/config.rb +23 -3
  9. data/lib/rubocop/config_loader.rb +9 -1
  10. data/lib/rubocop/cop/autocorrect_logic.rb +26 -0
  11. data/lib/rubocop/cop/cop.rb +33 -17
  12. data/lib/rubocop/cop/lint/assignment_in_condition.rb +16 -4
  13. data/lib/rubocop/cop/lint/block_alignment.rb +5 -14
  14. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  15. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +61 -0
  16. data/lib/rubocop/cop/lint/void.rb +11 -3
  17. data/lib/rubocop/cop/mixin/on_normal_if_unless.rb +17 -0
  18. data/lib/rubocop/cop/performance/detect.rb +72 -0
  19. data/lib/rubocop/cop/performance/flat_map.rb +64 -0
  20. data/lib/rubocop/cop/performance/reverse_each.rb +43 -0
  21. data/lib/rubocop/cop/performance/sample.rb +58 -0
  22. data/lib/rubocop/cop/performance/size.rb +64 -0
  23. data/lib/rubocop/cop/rails/date.rb +121 -0
  24. data/lib/rubocop/cop/rails/find_by.rb +52 -0
  25. data/lib/rubocop/cop/rails/find_each.rb +41 -0
  26. data/lib/rubocop/cop/rails/time_zone.rb +93 -0
  27. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +45 -0
  28. data/lib/rubocop/cop/style/block_delimiters.rb +186 -0
  29. data/lib/rubocop/cop/style/closing_parenthesis_indentation.rb +76 -0
  30. data/lib/rubocop/cop/style/command_literal.rb +120 -0
  31. data/lib/rubocop/cop/style/copyright.rb +87 -0
  32. data/lib/rubocop/cop/style/documentation.rb +32 -0
  33. data/lib/rubocop/cop/style/empty_else.rb +85 -16
  34. data/lib/rubocop/cop/style/encoding.rb +14 -2
  35. data/lib/rubocop/cop/style/end_of_line.rb +5 -0
  36. data/lib/rubocop/cop/style/hash_syntax.rb +86 -23
  37. data/lib/rubocop/cop/style/if_unless_modifier.rb +15 -0
  38. data/lib/rubocop/cop/style/indentation_consistency.rb +13 -6
  39. data/lib/rubocop/cop/style/indentation_width.rb +34 -10
  40. data/lib/rubocop/cop/style/lambda.rb +32 -17
  41. data/lib/rubocop/cop/style/line_end_concatenation.rb +4 -0
  42. data/lib/rubocop/cop/style/missing_else.rb +72 -0
  43. data/lib/rubocop/cop/style/regexp_literal.rb +89 -58
  44. data/lib/rubocop/cop/style/space_around_operators.rb +13 -2
  45. data/lib/rubocop/cop/style/space_before_block_braces.rb +3 -3
  46. data/lib/rubocop/cop/style/space_inside_block_braces.rb +9 -5
  47. data/lib/rubocop/cop/style/symbol_literal.rb +36 -0
  48. data/lib/rubocop/cop/style/trailing_blank_lines.rb +7 -0
  49. data/lib/rubocop/cop/style/trailing_comma.rb +21 -7
  50. data/lib/rubocop/cop/style/trivial_accessors.rb +17 -3
  51. data/lib/rubocop/cop/style/unneeded_capital_w.rb +4 -6
  52. data/lib/rubocop/cop/style/while_until_modifier.rb +10 -0
  53. data/lib/rubocop/cop/util.rb +24 -19
  54. data/lib/rubocop/cop/variable_force.rb +14 -0
  55. data/lib/rubocop/cop/variable_force/reference.rb +10 -4
  56. data/lib/rubocop/formatter/html_formatter.rb +10 -4
  57. data/lib/rubocop/formatter/text_util.rb +5 -7
  58. data/lib/rubocop/options.rb +47 -45
  59. data/lib/rubocop/path_util.rb +12 -8
  60. data/lib/rubocop/processed_source.rb +12 -1
  61. data/lib/rubocop/rake_task.rb +2 -2
  62. data/lib/rubocop/version.rb +1 -1
  63. data/relnotes/v0.30.0.md +145 -0
  64. data/rubocop.gemspec +15 -3
  65. metadata +22 -545
  66. data/.gitignore +0 -54
  67. data/.rspec +0 -1
  68. data/.rubocop.yml +0 -11
  69. data/.rubocop_todo.yml +0 -28
  70. data/.travis.yml +0 -22
  71. data/Gemfile +0 -15
  72. data/Rakefile +0 -41
  73. data/lib/rubocop/cop/style/blocks.rb +0 -80
  74. data/lib/rubocop/cop/style/unneeded_percent_x.rb +0 -25
  75. data/logo/rubocop-final-logo.eps +0 -0
  76. data/spec/.rubocop.yml +0 -5
  77. data/spec/fixtures/html_formatter/expected.html +0 -495
  78. data/spec/fixtures/html_formatter/project/app/controllers/application_controller.rb +0 -5
  79. data/spec/fixtures/html_formatter/project/app/controllers/books_controller.rb +0 -74
  80. data/spec/fixtures/html_formatter/project/app/models/book.rb +0 -5
  81. data/spec/isolated_environment_spec.rb +0 -24
  82. data/spec/project_spec.rb +0 -119
  83. data/spec/rubocop/cli_spec.rb +0 -2740
  84. data/spec/rubocop/comment_config_spec.rb +0 -105
  85. data/spec/rubocop/config_loader_spec.rb +0 -377
  86. data/spec/rubocop/config_spec.rb +0 -235
  87. data/spec/rubocop/config_store_spec.rb +0 -53
  88. data/spec/rubocop/cop/commissioner_spec.rb +0 -85
  89. data/spec/rubocop/cop/cop_spec.rb +0 -135
  90. data/spec/rubocop/cop/corrector_spec.rb +0 -59
  91. data/spec/rubocop/cop/force_spec.rb +0 -29
  92. data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +0 -113
  93. data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +0 -35
  94. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +0 -130
  95. data/spec/rubocop/cop/lint/block_alignment_spec.rb +0 -533
  96. data/spec/rubocop/cop/lint/condition_position_spec.rb +0 -51
  97. data/spec/rubocop/cop/lint/debugger_spec.rb +0 -73
  98. data/spec/rubocop/cop/lint/def_end_alignment_spec.rb +0 -108
  99. data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +0 -38
  100. data/spec/rubocop/cop/lint/duplicate_methods_spec.rb +0 -189
  101. data/spec/rubocop/cop/lint/else_layout_spec.rb +0 -65
  102. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +0 -27
  103. data/spec/rubocop/cop/lint/empty_interpolation_spec.rb +0 -18
  104. data/spec/rubocop/cop/lint/end_alignment_spec.rb +0 -91
  105. data/spec/rubocop/cop/lint/end_in_method_spec.rb +0 -29
  106. data/spec/rubocop/cop/lint/ensure_return_spec.rb +0 -39
  107. data/spec/rubocop/cop/lint/eval_spec.rb +0 -33
  108. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +0 -30
  109. data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +0 -33
  110. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +0 -172
  111. data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +0 -31
  112. data/spec/rubocop/cop/lint/loop_spec.rb +0 -27
  113. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +0 -57
  114. data/spec/rubocop/cop/lint/require_parentheses_spec.rb +0 -82
  115. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +0 -123
  116. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +0 -237
  117. data/spec/rubocop/cop/lint/space_before_first_arg_spec.rb +0 -66
  118. data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +0 -51
  119. data/spec/rubocop/cop/lint/syntax_spec.rb +0 -34
  120. data/spec/rubocop/cop/lint/underscore_prefixed_variable_name_spec.rb +0 -179
  121. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +0 -63
  122. data/spec/rubocop/cop/lint/unused_block_argument_spec.rb +0 -231
  123. data/spec/rubocop/cop/lint/unused_method_argument_spec.rb +0 -278
  124. data/spec/rubocop/cop/lint/useless_access_modifier_spec.rb +0 -192
  125. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +0 -1778
  126. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +0 -30
  127. data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +0 -48
  128. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +0 -211
  129. data/spec/rubocop/cop/lint/void_spec.rb +0 -64
  130. data/spec/rubocop/cop/metrics/abc_size_spec.rb +0 -109
  131. data/spec/rubocop/cop/metrics/block_nesting_spec.rb +0 -156
  132. data/spec/rubocop/cop/metrics/class_length_spec.rb +0 -131
  133. data/spec/rubocop/cop/metrics/cyclomatic_complexity_spec.rb +0 -204
  134. data/spec/rubocop/cop/metrics/line_length_spec.rb +0 -136
  135. data/spec/rubocop/cop/metrics/method_length_spec.rb +0 -147
  136. data/spec/rubocop/cop/metrics/parameter_lists_spec.rb +0 -44
  137. data/spec/rubocop/cop/metrics/perceived_complexity_spec.rb +0 -222
  138. data/spec/rubocop/cop/offense_spec.rb +0 -133
  139. data/spec/rubocop/cop/rails/action_filter_spec.rb +0 -64
  140. data/spec/rubocop/cop/rails/default_scope_spec.rb +0 -37
  141. data/spec/rubocop/cop/rails/delegate_spec.rb +0 -177
  142. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +0 -13
  143. data/spec/rubocop/cop/rails/output_spec.rb +0 -37
  144. data/spec/rubocop/cop/rails/read_write_attribute_spec.rb +0 -130
  145. data/spec/rubocop/cop/rails/scope_args_spec.rb +0 -25
  146. data/spec/rubocop/cop/rails/validation_spec.rb +0 -28
  147. data/spec/rubocop/cop/severity_spec.rb +0 -113
  148. data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +0 -421
  149. data/spec/rubocop/cop/style/accessor_method_name_spec.rb +0 -81
  150. data/spec/rubocop/cop/style/alias_spec.rb +0 -59
  151. data/spec/rubocop/cop/style/align_array_spec.rb +0 -123
  152. data/spec/rubocop/cop/style/align_hash_spec.rb +0 -411
  153. data/spec/rubocop/cop/style/align_parameters_spec.rb +0 -431
  154. data/spec/rubocop/cop/style/and_or_spec.rb +0 -235
  155. data/spec/rubocop/cop/style/array_join_spec.rb +0 -29
  156. data/spec/rubocop/cop/style/ascii_comments_spec.rb +0 -21
  157. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +0 -36
  158. data/spec/rubocop/cop/style/attr_spec.rb +0 -29
  159. data/spec/rubocop/cop/style/bare_percent_literals_spec.rb +0 -132
  160. data/spec/rubocop/cop/style/begin_block_spec.rb +0 -13
  161. data/spec/rubocop/cop/style/block_comments_spec.rb +0 -45
  162. data/spec/rubocop/cop/style/block_end_newline_spec.rb +0 -61
  163. data/spec/rubocop/cop/style/blocks_spec.rb +0 -121
  164. data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +0 -288
  165. data/spec/rubocop/cop/style/case_equality_spec.rb +0 -13
  166. data/spec/rubocop/cop/style/case_indentation_spec.rb +0 -293
  167. data/spec/rubocop/cop/style/character_literal_spec.rb +0 -37
  168. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +0 -40
  169. data/spec/rubocop/cop/style/class_and_module_children_spec.rb +0 -133
  170. data/spec/rubocop/cop/style/class_check_spec.rb +0 -41
  171. data/spec/rubocop/cop/style/class_methods_spec.rb +0 -80
  172. data/spec/rubocop/cop/style/class_vars_spec.rb +0 -19
  173. data/spec/rubocop/cop/style/collection_methods_spec.rb +0 -48
  174. data/spec/rubocop/cop/style/colon_method_call_spec.rb +0 -65
  175. data/spec/rubocop/cop/style/comment_annotation_spec.rb +0 -86
  176. data/spec/rubocop/cop/style/comment_indentation_spec.rb +0 -179
  177. data/spec/rubocop/cop/style/constant_name_spec.rb +0 -65
  178. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +0 -43
  179. data/spec/rubocop/cop/style/deprecated_hash_methods_spec.rb +0 -45
  180. data/spec/rubocop/cop/style/documentation_spec.rb +0 -146
  181. data/spec/rubocop/cop/style/dot_position_spec.rb +0 -132
  182. data/spec/rubocop/cop/style/double_negation_spec.rb +0 -22
  183. data/spec/rubocop/cop/style/each_with_object_spec.rb +0 -73
  184. data/spec/rubocop/cop/style/else_alignment_spec.rb +0 -506
  185. data/spec/rubocop/cop/style/empty_else_spec.rb +0 -100
  186. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +0 -135
  187. data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +0 -178
  188. data/spec/rubocop/cop/style/empty_lines_around_block_body_spec.rb +0 -103
  189. data/spec/rubocop/cop/style/empty_lines_around_class_body_spec.rb +0 -135
  190. data/spec/rubocop/cop/style/empty_lines_around_method_body_spec.rb +0 -90
  191. data/spec/rubocop/cop/style/empty_lines_around_module_body_spec.rb +0 -79
  192. data/spec/rubocop/cop/style/empty_lines_spec.rb +0 -51
  193. data/spec/rubocop/cop/style/empty_literal_spec.rb +0 -117
  194. data/spec/rubocop/cop/style/encoding_spec.rb +0 -139
  195. data/spec/rubocop/cop/style/end_block_spec.rb +0 -13
  196. data/spec/rubocop/cop/style/end_of_line_spec.rb +0 -65
  197. data/spec/rubocop/cop/style/even_odd_spec.rb +0 -164
  198. data/spec/rubocop/cop/style/extra_spacing_spec.rb +0 -68
  199. data/spec/rubocop/cop/style/file_name_spec.rb +0 -84
  200. data/spec/rubocop/cop/style/first_parameter_indentation_spec.rb +0 -304
  201. data/spec/rubocop/cop/style/flip_flop_spec.rb +0 -23
  202. data/spec/rubocop/cop/style/for_spec.rb +0 -105
  203. data/spec/rubocop/cop/style/format_string_spec.rb +0 -184
  204. data/spec/rubocop/cop/style/global_vars_spec.rb +0 -34
  205. data/spec/rubocop/cop/style/guard_clause_spec.rb +0 -172
  206. data/spec/rubocop/cop/style/hash_syntax_spec.rb +0 -137
  207. data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +0 -146
  208. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +0 -24
  209. data/spec/rubocop/cop/style/indent_array_spec.rb +0 -173
  210. data/spec/rubocop/cop/style/indent_hash_spec.rb +0 -367
  211. data/spec/rubocop/cop/style/indentation_consistency_spec.rb +0 -509
  212. data/spec/rubocop/cop/style/indentation_width_spec.rb +0 -885
  213. data/spec/rubocop/cop/style/infinite_loop_spec.rb +0 -48
  214. data/spec/rubocop/cop/style/inline_comment_spec.rb +0 -13
  215. data/spec/rubocop/cop/style/lambda_call_spec.rb +0 -65
  216. data/spec/rubocop/cop/style/lambda_spec.rb +0 -76
  217. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +0 -64
  218. data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +0 -184
  219. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +0 -59
  220. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +0 -60
  221. data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +0 -108
  222. data/spec/rubocop/cop/style/method_name_spec.rb +0 -125
  223. data/spec/rubocop/cop/style/module_function_spec.rb +0 -24
  224. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +0 -78
  225. data/spec/rubocop/cop/style/multiline_block_layout_spec.rb +0 -199
  226. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +0 -134
  227. data/spec/rubocop/cop/style/multiline_operation_indentation_spec.rb +0 -464
  228. data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +0 -18
  229. data/spec/rubocop/cop/style/negated_if_spec.rb +0 -102
  230. data/spec/rubocop/cop/style/negated_while_spec.rb +0 -64
  231. data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +0 -21
  232. data/spec/rubocop/cop/style/next_spec.rb +0 -301
  233. data/spec/rubocop/cop/style/nil_comparison_spec.rb +0 -29
  234. data/spec/rubocop/cop/style/non_nil_check_spec.rb +0 -132
  235. data/spec/rubocop/cop/style/not_spec.rb +0 -28
  236. data/spec/rubocop/cop/style/numeric_literals_spec.rb +0 -80
  237. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +0 -13
  238. data/spec/rubocop/cop/style/op_method_spec.rb +0 -85
  239. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +0 -161
  240. data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +0 -316
  241. data/spec/rubocop/cop/style/percent_q_literals_spec.rb +0 -122
  242. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +0 -22
  243. data/spec/rubocop/cop/style/predicate_name_spec.rb +0 -57
  244. data/spec/rubocop/cop/style/proc_spec.rb +0 -27
  245. data/spec/rubocop/cop/style/raise_args_spec.rb +0 -87
  246. data/spec/rubocop/cop/style/redundant_begin_spec.rb +0 -121
  247. data/spec/rubocop/cop/style/redundant_exception_spec.rb +0 -59
  248. data/spec/rubocop/cop/style/redundant_return_spec.rb +0 -171
  249. data/spec/rubocop/cop/style/redundant_self_spec.rb +0 -186
  250. data/spec/rubocop/cop/style/regexp_literal_spec.rb +0 -188
  251. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +0 -116
  252. data/spec/rubocop/cop/style/self_assignment_spec.rb +0 -49
  253. data/spec/rubocop/cop/style/semicolon_spec.rb +0 -114
  254. data/spec/rubocop/cop/style/signal_exception_spec.rb +0 -289
  255. data/spec/rubocop/cop/style/single_line_block_params_spec.rb +0 -82
  256. data/spec/rubocop/cop/style/single_line_methods_spec.rb +0 -94
  257. data/spec/rubocop/cop/style/single_space_before_first_arg_spec.rb +0 -63
  258. data/spec/rubocop/cop/style/space_after_colon_spec.rb +0 -55
  259. data/spec/rubocop/cop/style/space_after_comma_spec.rb +0 -30
  260. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +0 -84
  261. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +0 -70
  262. data/spec/rubocop/cop/style/space_after_not_spec.rb +0 -22
  263. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +0 -23
  264. data/spec/rubocop/cop/style/space_around_block_parameters_spec.rb +0 -155
  265. data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +0 -95
  266. data/spec/rubocop/cop/style/space_around_operators_spec.rb +0 -330
  267. data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +0 -73
  268. data/spec/rubocop/cop/style/space_before_comma_spec.rb +0 -42
  269. data/spec/rubocop/cop/style/space_before_comment_spec.rb +0 -34
  270. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +0 -70
  271. data/spec/rubocop/cop/style/space_before_semicolon_spec.rb +0 -28
  272. data/spec/rubocop/cop/style/space_inside_block_braces_spec.rb +0 -317
  273. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +0 -83
  274. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +0 -147
  275. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +0 -44
  276. data/spec/rubocop/cop/style/space_inside_range_literal_spec.rb +0 -64
  277. data/spec/rubocop/cop/style/special_global_vars_spec.rb +0 -62
  278. data/spec/rubocop/cop/style/string_literals_in_interpolation_spec.rb +0 -99
  279. data/spec/rubocop/cop/style/string_literals_spec.rb +0 -228
  280. data/spec/rubocop/cop/style/struct_inheritance_spec.rb +0 -44
  281. data/spec/rubocop/cop/style/symbol_array_spec.rb +0 -37
  282. data/spec/rubocop/cop/style/symbol_proc_spec.rb +0 -100
  283. data/spec/rubocop/cop/style/tab_spec.rb +0 -47
  284. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +0 -83
  285. data/spec/rubocop/cop/style/trailing_comma_spec.rb +0 -390
  286. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +0 -31
  287. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +0 -558
  288. data/spec/rubocop/cop/style/unless_else_spec.rb +0 -23
  289. data/spec/rubocop/cop/style/unneeded_capital_w_spec.rb +0 -90
  290. data/spec/rubocop/cop/style/unneeded_percent_q_spec.rb +0 -127
  291. data/spec/rubocop/cop/style/unneeded_percent_x_spec.rb +0 -34
  292. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +0 -76
  293. data/spec/rubocop/cop/style/variable_name_spec.rb +0 -107
  294. data/spec/rubocop/cop/style/when_then_spec.rb +0 -42
  295. data/spec/rubocop/cop/style/while_until_do_spec.rb +0 -55
  296. data/spec/rubocop/cop/style/while_until_modifier_spec.rb +0 -93
  297. data/spec/rubocop/cop/style/word_array_spec.rb +0 -117
  298. data/spec/rubocop/cop/team_spec.rb +0 -190
  299. data/spec/rubocop/cop/util_spec.rb +0 -102
  300. data/spec/rubocop/cop/variable_force/assignment_spec.rb +0 -200
  301. data/spec/rubocop/cop/variable_force/locatable_spec.rb +0 -699
  302. data/spec/rubocop/cop/variable_force/reference_spec.rb +0 -19
  303. data/spec/rubocop/cop/variable_force/scope_spec.rb +0 -319
  304. data/spec/rubocop/cop/variable_force/variable_spec.rb +0 -59
  305. data/spec/rubocop/cop/variable_force/variable_table_spec.rb +0 -276
  306. data/spec/rubocop/cop/variable_force_spec.rb +0 -26
  307. data/spec/rubocop/formatter/base_formatter_spec.rb +0 -191
  308. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +0 -114
  309. data/spec/rubocop/formatter/colorizable_spec.rb +0 -107
  310. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +0 -50
  311. data/spec/rubocop/formatter/disabled_lines_formatter_spec.rb +0 -67
  312. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +0 -63
  313. data/spec/rubocop/formatter/file_list_formatter_spec.rb +0 -33
  314. data/spec/rubocop/formatter/formatter_set_spec.rb +0 -141
  315. data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +0 -129
  316. data/spec/rubocop/formatter/html_formatter_spec.rb +0 -48
  317. data/spec/rubocop/formatter/json_formatter_spec.rb +0 -152
  318. data/spec/rubocop/formatter/offense_count_formatter_spec.rb +0 -75
  319. data/spec/rubocop/formatter/progress_formatter_spec.rb +0 -182
  320. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +0 -135
  321. data/spec/rubocop/formatter/text_util_spec.rb +0 -55
  322. data/spec/rubocop/options_spec.rb +0 -181
  323. data/spec/rubocop/path_util_spec.rb +0 -77
  324. data/spec/rubocop/processed_source_spec.rb +0 -184
  325. data/spec/rubocop/rake_task_spec.rb +0 -122
  326. data/spec/rubocop/runner_spec.rb +0 -99
  327. data/spec/rubocop/string_util_spec.rb +0 -46
  328. data/spec/rubocop/target_finder_spec.rb +0 -245
  329. data/spec/rubocop/token_spec.rb +0 -29
  330. data/spec/spec_helper.rb +0 -39
  331. data/spec/support/cop_helper.rb +0 -75
  332. data/spec/support/cops/class_must_be_a_module_cop.rb +0 -19
  333. data/spec/support/cops/module_must_be_a_class_cop.rb +0 -19
  334. data/spec/support/coverage.rb +0 -15
  335. data/spec/support/custom_matchers.rb +0 -58
  336. data/spec/support/file_helper.rb +0 -23
  337. data/spec/support/jruby_workaround.rb +0 -15
  338. data/spec/support/mri_syntax_checker.rb +0 -73
  339. data/spec/support/shared_contexts.rb +0 -53
  340. data/spec/support/shared_examples.rb +0 -55
  341. data/spec/support/statement_modifier_helper.rb +0 -41
@@ -1,30 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::UselessComparison do
6
- subject(:cop) { described_class.new }
7
-
8
- described_class::OPS.each do |op|
9
- it "registers an offense for a simple comparison with #{op}" do
10
- inspect_source(cop,
11
- ["5 #{op} 5",
12
- "a #{op} a"
13
- ])
14
- expect(cop.offenses.size).to eq(2)
15
- end
16
-
17
- it "registers an offense for a complex comparison with #{op}" do
18
- inspect_source(cop,
19
- ["5 + 10 * 30 #{op} 5 + 10 * 30",
20
- "a.top(x) #{op} a.top(x)"
21
- ])
22
- expect(cop.offenses.size).to eq(2)
23
- end
24
- end
25
-
26
- it 'works with lambda.()' do
27
- inspect_source(cop, 'a.(x) > a.(x)')
28
- expect(cop.offenses.size).to eq(1)
29
- end
30
- end
@@ -1,48 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::UselessElseWithoutRescue do
6
- subject(:cop) { described_class.new }
7
-
8
- before do
9
- inspect_source(cop, source)
10
- end
11
-
12
- context 'with `else` without `rescue`' do
13
- let(:source) do
14
- [
15
- 'begin',
16
- ' do_something',
17
- 'else',
18
- ' handle_unknown_errors',
19
- 'end'
20
- ]
21
- end
22
-
23
- it 'registers an offense' do
24
- expect(cop.offenses.size).to eq(1)
25
- expect(cop.offenses.first.message)
26
- .to eq('`else` without `rescue` is useless.')
27
- expect(cop.highlights).to eq(['else'])
28
- end
29
- end
30
-
31
- context 'with `else` with `rescue`' do
32
- let(:source) do
33
- [
34
- 'begin',
35
- ' do_something',
36
- 'rescue ArgumentError',
37
- ' handle_argument_error',
38
- 'else',
39
- ' handle_unknown_errors',
40
- 'end'
41
- ]
42
- end
43
-
44
- it 'accepts' do
45
- expect(cop.offenses).to be_empty
46
- end
47
- end
48
- end
@@ -1,211 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::UselessSetterCall do
6
- subject(:cop) { described_class.new }
7
-
8
- context 'with method ending with setter call on local object' do
9
- it 'registers an offense' do
10
- inspect_source(cop,
11
- ['def test',
12
- ' top = Top.new',
13
- ' top.attr = 5',
14
- 'end'
15
- ])
16
- expect(cop.offenses.size).to eq(1)
17
- expect(cop.messages)
18
- .to eq(['Useless setter call to local variable `top`.'])
19
- end
20
- end
21
-
22
- context 'with singleton method ending with setter call on local object' do
23
- it 'registers an offense' do
24
- inspect_source(cop,
25
- ['def Top.test',
26
- ' top = Top.new',
27
- ' top.attr = 5',
28
- 'end'
29
- ])
30
- expect(cop.offenses.size).to eq(1)
31
- end
32
- end
33
-
34
- context 'with method ending with square bracket setter on local object' do
35
- it 'registers an offense' do
36
- inspect_source(cop,
37
- ['def test',
38
- ' top = Top.new',
39
- ' top[:attr] = 5',
40
- 'end'
41
- ])
42
- expect(cop.offenses.size).to eq(1)
43
- expect(cop.messages)
44
- .to eq(['Useless setter call to local variable `top`.'])
45
- end
46
- end
47
-
48
- context 'with method ending with ivar assignment' do
49
- it 'accepts' do
50
- inspect_source(cop,
51
- ['def test',
52
- ' something',
53
- ' @top = 5',
54
- 'end'
55
- ])
56
- expect(cop.offenses).to be_empty
57
- end
58
- end
59
-
60
- context 'with method ending with setter call on ivar' do
61
- it 'accepts' do
62
- inspect_source(cop,
63
- ['def test',
64
- ' something',
65
- ' @top.attr = 5',
66
- 'end'
67
- ])
68
- expect(cop.offenses).to be_empty
69
- end
70
- end
71
-
72
- context 'with method ending with setter call on argument' do
73
- it 'accepts' do
74
- inspect_source(cop,
75
- ['def test(some_arg)',
76
- ' unrelated_local_variable = Top.new',
77
- ' some_arg.attr = 5',
78
- 'end'
79
- ])
80
- expect(cop.offenses).to be_empty
81
- end
82
- end
83
-
84
- context 'when a lvar contains an object passed as argument ' \
85
- 'at the end of the method' do
86
- it 'accepts the setter call on the lvar' do
87
- inspect_source(cop,
88
- ['def test(some_arg)',
89
- ' @some_ivar = some_arg',
90
- ' @some_ivar.do_something',
91
- ' some_lvar = @some_ivar',
92
- ' some_lvar.do_something',
93
- ' some_lvar.attr = 5',
94
- 'end'
95
- ])
96
- expect(cop.offenses).to be_empty
97
- end
98
- end
99
-
100
- context 'when a lvar contains an object passed as argument ' \
101
- 'by multiple-assignment at the end of the method' do
102
- it 'accepts the setter call on the lvar' do
103
- inspect_source(cop,
104
- ['def test(some_arg)',
105
- ' _first, some_lvar, _third = 1, some_arg, 3',
106
- ' some_lvar.attr = 5',
107
- 'end'
108
- ])
109
- expect(cop.offenses).to be_empty
110
- end
111
- end
112
-
113
- context 'when a lvar does not contain any object passed as argument ' \
114
- 'with multiple-assignment at the end of the method' do
115
- it 'registers an offense' do
116
- inspect_source(cop,
117
- ['def test(some_arg)',
118
- ' _first, some_lvar, _third = do_something',
119
- ' some_lvar.attr = 5',
120
- 'end'
121
- ])
122
- expect(cop.offenses.size).to eq(1)
123
- end
124
- end
125
-
126
- context 'when a lvar possibly contains an object passed as argument ' \
127
- 'by logical-operator-assignment at the end of the method' do
128
- it 'accepts the setter call on the lvar' do
129
- inspect_source(cop,
130
- ['def test(some_arg)',
131
- ' some_lvar = nil',
132
- ' some_lvar ||= some_arg',
133
- ' some_lvar.attr = 5',
134
- 'end'
135
- ])
136
- expect(cop.offenses).to be_empty
137
- end
138
- end
139
-
140
- context 'when a lvar does not contain any object passed as argument ' \
141
- 'by binary-operator-assignment at the end of the method' do
142
- it 'registers an offense' do
143
- inspect_source(cop,
144
- ['def test(some_arg)',
145
- ' some_lvar = some_arg',
146
- ' some_lvar += some_arg',
147
- ' some_lvar.attr = 5',
148
- 'end'
149
- ])
150
- expect(cop.offenses.size).to eq(1)
151
- end
152
- end
153
-
154
- context 'when a lvar declared as an argument ' \
155
- 'is no longer the passed object at the end of the method' do
156
- it 'registers an offense for the setter call on the lvar' do
157
- inspect_source(cop,
158
- ['def test(some_arg)',
159
- ' some_arg = Top.new',
160
- ' some_arg.attr = 5',
161
- 'end'
162
- ])
163
- expect(cop.offenses.size).to eq(1)
164
- end
165
- end
166
-
167
- context 'when a lvar contains a local object instantiated with literal' do
168
- it 'registers an offense for the setter call on the lvar' do
169
- inspect_source(cop,
170
- ['def test',
171
- ' some_arg = {}',
172
- ' some_arg[:attr] = 1',
173
- 'end'
174
- ])
175
- expect(cop.offenses.size).to eq(1)
176
- end
177
- end
178
-
179
- context 'when a lvar contains a non-local object returned by a method' do
180
- it 'accepts' do
181
- inspect_source(cop,
182
- ['def test',
183
- ' some_lvar = Foo.shared_object',
184
- ' some_lvar[:attr] = 1',
185
- 'end'
186
- ])
187
- expect(cop.offenses).to be_empty
188
- end
189
- end
190
-
191
- it 'is not confused by operators ending with =' do
192
- inspect_source(cop,
193
- ['def test',
194
- ' top.attr == 5',
195
- 'end'
196
- ])
197
- expect(cop.offenses).to be_empty
198
- end
199
-
200
- it 'handles exception assignments without exploding' do
201
- inspect_source(cop,
202
- ['def foo(bar)',
203
- ' begin',
204
- ' rescue StandardError => _',
205
- ' end',
206
- ' bar[:baz] = true',
207
- 'end'
208
- ])
209
- expect(cop.offenses).to be_empty
210
- end
211
- end
@@ -1,64 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Lint::Void do
6
- subject(:cop) { described_class.new }
7
-
8
- described_class::OPS.each do |op|
9
- it "registers an offense for void op #{op} if not on last line" do
10
- inspect_source(cop,
11
- ["a #{op} b",
12
- "a #{op} b",
13
- "a #{op} b"
14
- ])
15
- expect(cop.offenses.size).to eq(2)
16
- end
17
- end
18
-
19
- described_class::OPS.each do |op|
20
- it "accepts void op #{op} if on last line" do
21
- inspect_source(cop,
22
- ['something',
23
- "a #{op} b"
24
- ])
25
- expect(cop.offenses).to be_empty
26
- end
27
- end
28
-
29
- described_class::OPS.each do |op|
30
- it "accepts void op #{op} by itself without a begin block" do
31
- inspect_source(cop, "a #{op} b")
32
- expect(cop.offenses).to be_empty
33
- end
34
- end
35
-
36
- %w(var @var @@var VAR).each do |var|
37
- it "registers an offense for void var #{var} if not on last line" do
38
- inspect_source(cop,
39
- ["#{var} = 5",
40
- "#{var}",
41
- 'top'
42
- ])
43
- expect(cop.offenses.size).to eq(1)
44
- end
45
- end
46
-
47
- %w(1 2.0 /test/ [1] {}).each do |lit|
48
- it "registers an offense for void lit #{lit} if not on last line" do
49
- inspect_source(cop,
50
- ["#{lit}",
51
- 'top'
52
- ])
53
- expect(cop.offenses.size).to eq(1)
54
- end
55
- end
56
-
57
- it 'accepts short call syntax' do
58
- inspect_source(cop,
59
- ['lambda.(a)',
60
- 'top'
61
- ])
62
- expect(cop.offenses).to be_empty
63
- end
64
- end
@@ -1,109 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Metrics::AbcSize, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- context 'when Max is 0' do
9
- let(:cop_config) { { 'Max' => 0 } }
10
-
11
- it 'accepts an empty method' do
12
- inspect_source(cop, ['def method_name',
13
- 'end'])
14
- expect(cop.offenses).to be_empty
15
- end
16
-
17
- it 'registers an offense for an if modifier' do
18
- inspect_source(cop, ['def method_name',
19
- ' call_foo if some_condition', # 0 + 2*2 + 1*1
20
- 'end'])
21
- expect(cop.messages)
22
- .to eq(['Assignment Branch Condition size for method_name is too ' \
23
- 'high. [2.24/0]'])
24
- expect(cop.highlights).to eq(['def'])
25
- expect(cop.config_to_allow_offenses).to eq('Max' => 3)
26
- end
27
-
28
- it 'registers an offense for an assignment of a local variable' do
29
- inspect_source(cop, ['def method_name',
30
- ' x = 1',
31
- 'end'])
32
- expect(cop.messages)
33
- .to eq(['Assignment Branch Condition size for method_name is too ' \
34
- 'high. [1/0]'])
35
- expect(cop.config_to_allow_offenses).to eq('Max' => 1)
36
- end
37
-
38
- it 'registers an offense for an assignment of an element' do
39
- inspect_source(cop, ['def method_name',
40
- ' x[0] = 1',
41
- 'end'])
42
- expect(cop.messages)
43
- .to eq(['Assignment Branch Condition size for method_name is too ' \
44
- 'high. [2/0]'])
45
- expect(cop.config_to_allow_offenses).to eq('Max' => 2)
46
- end
47
-
48
- it 'registers an offense for complex content including A, B, and C ' \
49
- 'scores' do
50
- inspect_source(cop,
51
- ['def method_name',
52
- ' my_options = Hash.new if 1 == 1 || 2 == 2', # 1, 3, 2
53
- ' my_options.each do |key, value|', # 0, 1, 0
54
- ' p key', # 0, 1, 0
55
- ' p value', # 0, 1, 0
56
- ' end',
57
- 'end'])
58
- expect(cop.messages)
59
- .to eq(['Assignment Branch Condition size for method_name is too ' \
60
- 'high. [6.4/0]']) # square root of 1*1 + 5*5 + 2*2 => 6.4
61
- end
62
- end
63
-
64
- context 'when Max is 2' do
65
- let(:cop_config) { { 'Max' => 2 } }
66
-
67
- it 'accepts two assignments' do
68
- inspect_source(cop, ['def method_name',
69
- ' x = 1',
70
- ' y = 2',
71
- 'end'])
72
- expect(cop.offenses).to be_empty
73
- end
74
- end
75
-
76
- context 'when Max is 1.8' do
77
- let(:cop_config) { { 'Max' => 1.8 } }
78
-
79
- it 'accepts a total score of 1.7' do
80
- inspect_source(cop, ['def method_name',
81
- ' y = 1 if y == 1',
82
- 'end'])
83
- expect(cop.offenses).to be_empty
84
- end
85
- end
86
-
87
- {
88
- 1.3 => '3.74/1.3', # no more than 2 decimals reported
89
- 10.3 => '37.42/10.3',
90
- 100.321 => '374.2/100.3', # 4 significant digits, so only 1 decimal here
91
- 1000.3 => '3742/1000'
92
- }.each do |max, presentation|
93
- context "when Max is #{max}" do
94
- let(:cop_config) { { 'Max' => max } }
95
-
96
- it "reports size and max as #{presentation}" do
97
- # Build an amount of code large enough to register an offense.
98
- code = [' x = Hash.new if 1 == 1 || 2 == 2'] * max
99
-
100
- inspect_source(cop, ['def method_name',
101
- *code,
102
- 'end'])
103
- expect(cop.messages)
104
- .to eq(['Assignment Branch Condition size for method_name is too ' \
105
- "high. [#{presentation}]"])
106
- end
107
- end
108
- end
109
- end