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,136 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Metrics::LineLength, :config do
6
- subject(:cop) { described_class.new(config) }
7
- let(:cop_config) { { 'Max' => 80 } }
8
-
9
- it "registers an offense for a line that's 81 characters wide" do
10
- inspect_source(cop, '#' * 81)
11
- expect(cop.offenses.size).to eq(1)
12
- expect(cop.offenses.first.message).to eq('Line is too long. [81/80]')
13
- expect(cop.config_to_allow_offenses).to eq('Max' => 81)
14
- end
15
-
16
- it 'highlights excessive characters' do
17
- inspect_source(cop, '#' * 80 + 'abc')
18
- expect(cop.highlights).to eq(['abc'])
19
- end
20
-
21
- it "accepts a line that's 80 characters wide" do
22
- inspect_source(cop, '#' * 80)
23
- expect(cop.offenses).to be_empty
24
- end
25
-
26
- context 'when AllowURI option is enabled' do
27
- let(:cop_config) { { 'Max' => 80, 'AllowURI' => true } }
28
-
29
- context 'and all the excessive characters are part of an URL' do
30
- # This code example is allowed by AllowURI feature itself :).
31
- let(:source) { <<-END }
32
- # Some documentation comment...
33
- # See: https://github.com/bbatsov/rubocop/commit/3b48d8bdf5b1c2e05e35061837309890f04ab08c
34
- END
35
-
36
- it 'accepts the line' do
37
- inspect_source(cop, source)
38
- expect(cop.offenses).to be_empty
39
- end
40
- end
41
-
42
- context 'and the excessive characters include a complete URL' do
43
- # rubocop:disable Metrics/LineLength
44
- let(:source) { <<-END }
45
- # See: http://google.com/, http://gmail.com/, https://maps.google.com/, http://plus.google.com/
46
- END
47
- # rubocop:enable Metrics/LineLength
48
-
49
- it 'registers an offense for the line' do
50
- inspect_source(cop, source)
51
- expect(cop.offenses.size).to eq(1)
52
- end
53
-
54
- it 'highlights all the excessive characters' do
55
- inspect_source(cop, source)
56
- expect(cop.highlights).to eq(['http://plus.google.com/'])
57
- end
58
- end
59
-
60
- context 'and the excessive characters include part of an URL ' \
61
- 'and another word' do
62
- # rubocop:disable Metrics/LineLength
63
- let(:source) { <<-END }
64
- # See: https://github.com/bbatsov/rubocop/commit/3b48d8bdf5b1c2e05e35061837309890f04ab08c and
65
- # http://google.com/
66
- END
67
- # rubocop:enable Metrics/LineLength
68
-
69
- it 'registers an offense for the line' do
70
- inspect_source(cop, source)
71
- expect(cop.offenses.size).to eq(1)
72
- end
73
-
74
- it 'highlights only the non-URL part' do
75
- inspect_source(cop, source)
76
- expect(cop.highlights).to eq([' and'])
77
- end
78
- end
79
-
80
- context 'and an error other than URI::InvalidURIError is raised ' \
81
- 'while validating an URI-ish string' do
82
- let(:cop_config) do
83
- { 'Max' => 80, 'AllowURI' => true, 'URISchemes' => %w(LDAP) }
84
- end
85
-
86
- # rubocop:disable Metrics/LineLength
87
- let(:source) { <<-END }
88
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxzxxxxxxxxxxx = LDAP::DEFAULT_GROUP_UNIQUE_MEMBER_LIST_KEY
89
- END
90
- # rubocop:enable Metrics/LineLength
91
-
92
- it 'does not crash' do
93
- expect { inspect_source(cop, source) }.not_to raise_error
94
- end
95
- end
96
-
97
- context 'and the URL does not have a http(s) scheme' do
98
- # rubocop:disable Metrics/LineLength
99
- let(:source) { <<-END }
100
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxzxxxxxxxxxxx = 'otherprotocol://a.very.long.line.which.violates.LineLength/sadf'
101
- END
102
- # rubocop:enable Metrics/LineLength
103
-
104
- it 'rejects the line' do
105
- inspect_source(cop, source)
106
- expect(cop.offenses.size).to eq(1)
107
- end
108
-
109
- context 'and the scheme has been configured' do
110
- let(:cop_config) do
111
- { 'Max' => 80, 'AllowURI' => true, 'URISchemes' => %w(otherprotocol) }
112
- end
113
-
114
- it 'accepts the line' do
115
- inspect_source(cop, source)
116
- expect(cop.offenses).to be_empty
117
- end
118
- end
119
- end
120
- end
121
-
122
- context 'when AllowURI option is disabled' do
123
- let(:cop_config) { { 'Max' => 80, 'AllowURI' => false } }
124
-
125
- context 'and all the excessive characters are part of an URL' do
126
- let(:source) { <<-END }
127
- # See: https://github.com/bbatsov/rubocop/commit/3b48d8bdf5b1c2e05e35061837309890f04ab08c
128
- END
129
-
130
- it 'registers an offense for the line' do
131
- inspect_source(cop, source)
132
- expect(cop.offenses.size).to eq(1)
133
- end
134
- end
135
- end
136
- end
@@ -1,147 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Metrics::MethodLength, :config do
6
- subject(:cop) { described_class.new(config) }
7
- let(:cop_config) { { 'Max' => 5, 'CountComments' => false } }
8
-
9
- it 'rejects a method with more than 5 lines' do
10
- inspect_source(cop, ['def m()',
11
- ' a = 1',
12
- ' a = 2',
13
- ' a = 3',
14
- ' a = 4',
15
- ' a = 5',
16
- ' a = 6',
17
- 'end'])
18
- expect(cop.offenses.size).to eq(1)
19
- expect(cop.offenses.map(&:line).sort).to eq([1])
20
- expect(cop.config_to_allow_offenses).to eq('Max' => 6)
21
- end
22
-
23
- it 'accepts a method with less than 5 lines' do
24
- inspect_source(cop, ['def m()',
25
- ' a = 1',
26
- ' a = 2',
27
- ' a = 3',
28
- ' a = 4',
29
- 'end'])
30
- expect(cop.offenses).to be_empty
31
- end
32
-
33
- it 'does not count blank lines' do
34
- inspect_source(cop, ['def m()',
35
- ' a = 1',
36
- ' a = 2',
37
- ' a = 3',
38
- ' a = 4',
39
- '',
40
- '',
41
- ' a = 7',
42
- 'end'])
43
- expect(cop.offenses).to be_empty
44
- end
45
-
46
- it 'accepts empty methods' do
47
- inspect_source(cop, ['def m()',
48
- 'end'])
49
- expect(cop.offenses).to be_empty
50
- end
51
-
52
- it 'is not fooled by one-liner methods, syntax #1' do
53
- inspect_source(cop, ['def one_line; 10 end',
54
- 'def self.m()',
55
- ' a = 1',
56
- ' a = 2',
57
- ' a = 4',
58
- ' a = 5',
59
- ' a = 6',
60
- 'end'])
61
- expect(cop.offenses).to be_empty
62
- end
63
-
64
- it 'is not fooled by one-liner methods, syntax #2' do
65
- inspect_source(cop, ['def one_line(test) 10 end',
66
- 'def self.m()',
67
- ' a = 1',
68
- ' a = 2',
69
- ' a = 4',
70
- ' a = 5',
71
- ' a = 6',
72
- 'end'])
73
- expect(cop.offenses).to be_empty
74
- end
75
-
76
- it 'checks class methods, syntax #1' do
77
- inspect_source(cop, ['def self.m()',
78
- ' a = 1',
79
- ' a = 2',
80
- ' a = 3',
81
- ' a = 4',
82
- ' a = 5',
83
- ' a = 6',
84
- 'end'])
85
- expect(cop.offenses.size).to eq(1)
86
- expect(cop.offenses.map(&:line).sort).to eq([1])
87
- end
88
-
89
- it 'checks class methods, syntax #2' do
90
- inspect_source(cop, ['class K',
91
- ' class << self',
92
- ' def m()',
93
- ' a = 1',
94
- ' a = 2',
95
- ' a = 3',
96
- ' a = 4',
97
- ' a = 5',
98
- ' a = 6',
99
- ' end',
100
- ' end',
101
- 'end'])
102
- expect(cop.offenses.size).to eq(1)
103
- expect(cop.offenses.map(&:line).sort).to eq([3])
104
- end
105
-
106
- it 'properly counts lines when method ends with block' do
107
- inspect_source(cop, ['def m()',
108
- ' something do',
109
- ' a = 2',
110
- ' a = 3',
111
- ' a = 4',
112
- ' a = 5',
113
- ' end',
114
- 'end'])
115
- expect(cop.offenses.size).to eq(1)
116
- expect(cop.offenses.map(&:line).sort).to eq([1])
117
- end
118
-
119
- it 'does not count commented lines by default' do
120
- inspect_source(cop, ['def m()',
121
- ' a = 1',
122
- ' #a = 2',
123
- ' a = 3',
124
- ' #a = 4',
125
- ' a = 5',
126
- ' a = 6',
127
- 'end'])
128
- expect(cop.offenses).to be_empty
129
- end
130
-
131
- context 'when CountComments is enabled' do
132
- before { cop_config['CountComments'] = true }
133
-
134
- it 'also counts commented lines' do
135
- inspect_source(cop, ['def m()',
136
- ' a = 1',
137
- ' #a = 2',
138
- ' a = 3',
139
- ' #a = 4',
140
- ' a = 5',
141
- ' a = 6',
142
- 'end'])
143
- expect(cop.offenses.size).to eq(1)
144
- expect(cop.offenses.map(&:line).sort).to eq([1])
145
- end
146
- end
147
- end
@@ -1,44 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Metrics::ParameterLists, :config do
6
- subject(:cop) { described_class.new(config) }
7
- let(:cop_config) do
8
- {
9
- 'Max' => 4,
10
- 'CountKeywordArgs' => true
11
- }
12
- end
13
-
14
- it 'registers an offense for a method def with 5 parameters' do
15
- inspect_source(cop, ['def meth(a, b, c, d, e)',
16
- 'end'])
17
- expect(cop.offenses.size).to eq(1)
18
- expect(cop.config_to_allow_offenses).to eq('Max' => 5)
19
- end
20
-
21
- it 'accepts a method def with 4 parameters' do
22
- inspect_source(cop, ['def meth(a, b, c, d)',
23
- 'end'])
24
- expect(cop.offenses).to be_empty
25
- end
26
-
27
- context 'When CountKeywordArgs is true' do
28
- it 'counts keyword arguments as well', ruby: 2 do
29
- inspect_source(cop, ['def meth(a, b, c, d: 1, e: 2)',
30
- 'end'])
31
- expect(cop.offenses.size).to eq(1)
32
- end
33
- end
34
-
35
- context 'When CountKeywordArgs is false' do
36
- before { cop_config['CountKeywordArgs'] = false }
37
-
38
- it 'it does not count keyword arguments', ruby: 2 do
39
- inspect_source(cop, ['def meth(a, b, c, d: 1, e: 2)',
40
- 'end'])
41
- expect(cop.offenses).to be_empty
42
- end
43
- end
44
- end
@@ -1,222 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe RuboCop::Cop::Metrics::PerceivedComplexity, :config do
6
- subject(:cop) { described_class.new(config) }
7
-
8
- context 'when Max is 1' do
9
- let(:cop_config) { { 'Max' => 1 } }
10
-
11
- it 'accepts a method with no decision points' do
12
- inspect_source(cop, ['def method_name',
13
- ' call_foo',
14
- 'end'])
15
- expect(cop.offenses).to be_empty
16
- end
17
-
18
- it 'accepts complex code outside of methods' do
19
- inspect_source(cop,
20
- ['def method_name',
21
- ' call_foo',
22
- 'end',
23
- '',
24
- 'if first_condition then',
25
- ' call_foo if second_condition && third_condition',
26
- ' call_bar if fourth_condition || fifth_condition',
27
- 'end'])
28
- expect(cop.offenses).to be_empty
29
- end
30
-
31
- it 'registers an offense for an if modifier' do
32
- inspect_source(cop, ['def self.method_name',
33
- ' call_foo if some_condition',
34
- 'end'])
35
- expect(cop.messages)
36
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
37
- expect(cop.highlights).to eq(['def'])
38
- expect(cop.config_to_allow_offenses).to eq('Max' => 2)
39
- end
40
-
41
- it 'registers an offense for an unless modifier' do
42
- inspect_source(cop, ['def method_name',
43
- ' call_foo unless some_condition',
44
- 'end'])
45
- expect(cop.messages)
46
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
47
- end
48
-
49
- it 'registers an offense for elsif and else blocks' do
50
- inspect_source(cop, ['def method_name',
51
- ' if first_condition then',
52
- ' call_foo',
53
- ' elsif second_condition then',
54
- ' call_bar',
55
- ' else',
56
- ' call_bam',
57
- ' end',
58
- 'end'])
59
- expect(cop.messages)
60
- .to eq(['Perceived complexity for method_name is too high. [4/1]'])
61
- end
62
-
63
- it 'registers an offense for a ternary operator' do
64
- inspect_source(cop, ['def method_name',
65
- ' value = some_condition ? 1 : 2',
66
- 'end'])
67
- expect(cop.messages)
68
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
69
- end
70
-
71
- it 'registers an offense for a while block' do
72
- inspect_source(cop, ['def method_name',
73
- ' while some_condition do',
74
- ' call_foo',
75
- ' end',
76
- 'end'])
77
- expect(cop.messages)
78
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
79
- end
80
-
81
- it 'registers an offense for an until block' do
82
- inspect_source(cop, ['def method_name',
83
- ' until some_condition do',
84
- ' call_foo',
85
- ' end',
86
- 'end'])
87
- expect(cop.messages)
88
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
89
- end
90
-
91
- it 'registers an offense for a for block' do
92
- inspect_source(cop, ['def method_name',
93
- ' for i in 1..2 do',
94
- ' call_method',
95
- ' end',
96
- 'end'])
97
- expect(cop.messages)
98
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
99
- end
100
-
101
- it 'registers an offense for a rescue block' do
102
- inspect_source(cop, ['def method_name',
103
- ' begin',
104
- ' call_foo',
105
- ' rescue Exception',
106
- ' call_bar',
107
- ' end',
108
- 'end'])
109
- expect(cop.messages)
110
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
111
- end
112
-
113
- it 'registers an offense for a case/when block' do
114
- inspect_source(cop, ['def method_name',
115
- ' case value',
116
- ' when 1 then call_foo_1',
117
- ' when 2 then call_foo_2',
118
- ' when 3 then call_foo_3',
119
- ' when 4 then call_foo_4',
120
- ' end',
121
- 'end'])
122
- # The `case` node plus the first `when` score one complexity point
123
- # together. The other `when` nodes get 0.2 complexity points.
124
- expect(cop.messages)
125
- .to eq(['Perceived complexity for method_name is too high. [3/1]'])
126
- end
127
-
128
- it 'registers an offense for a case/when block without an expression ' \
129
- 'after case' do
130
- inspect_source(cop, ['def method_name',
131
- ' case',
132
- ' when value == 1',
133
- ' call_foo',
134
- ' when value == 2',
135
- ' call_bar',
136
- ' end',
137
- 'end'])
138
- # Here, the `case` node doesn't count, but each when scores one
139
- # complexity point.
140
- expect(cop.messages)
141
- .to eq(['Perceived complexity for method_name is too high. [3/1]'])
142
- end
143
-
144
- it 'registers an offense for &&' do
145
- inspect_source(cop, ['def method_name',
146
- ' call_foo && call_bar',
147
- 'end'])
148
- expect(cop.messages)
149
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
150
- end
151
-
152
- it 'registers an offense for and' do
153
- inspect_source(cop, ['def method_name',
154
- ' call_foo and call_bar',
155
- 'end'])
156
- expect(cop.messages)
157
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
158
- end
159
-
160
- it 'registers an offense for ||' do
161
- inspect_source(cop, ['def method_name',
162
- ' call_foo || call_bar',
163
- 'end'])
164
- expect(cop.messages)
165
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
166
- end
167
-
168
- it 'registers an offense for or' do
169
- inspect_source(cop, ['def method_name',
170
- ' call_foo or call_bar',
171
- 'end'])
172
- expect(cop.messages)
173
- .to eq(['Perceived complexity for method_name is too high. [2/1]'])
174
- end
175
-
176
- it 'deals with nested if blocks containing && and ||' do
177
- inspect_source(cop,
178
- ['def method_name',
179
- ' if first_condition then',
180
- ' call_foo if second_condition && third_condition',
181
- ' call_bar if fourth_condition || fifth_condition',
182
- ' end',
183
- 'end'])
184
- expect(cop.messages)
185
- .to eq(['Perceived complexity for method_name is too high. [6/1]'])
186
- end
187
-
188
- it 'counts only a single method' do
189
- inspect_source(cop, ['def method_name_1',
190
- ' call_foo if some_condition',
191
- 'end',
192
- '',
193
- 'def method_name_2',
194
- ' call_foo if some_condition',
195
- 'end'])
196
- expect(cop.messages)
197
- .to eq(['Perceived complexity for method_name_1 is too high. [2/1]',
198
- 'Perceived complexity for method_name_2 is too high. [2/1]'])
199
- end
200
- end
201
-
202
- context 'when Max is 2' do
203
- let(:cop_config) { { 'Max' => 2 } }
204
-
205
- it 'counts stupid nested if and else blocks' do
206
- inspect_source(cop, ['def method_name', # 1
207
- ' if first_condition then', # 2
208
- ' call_foo',
209
- ' else', # 3
210
- ' if second_condition then', # 4
211
- ' call_bar',
212
- ' else', # 5
213
- ' call_bam if third_condition', # 6
214
- ' end',
215
- ' call_baz if fourth_condition', # 7
216
- ' end',
217
- 'end'])
218
- expect(cop.messages)
219
- .to eq(['Perceived complexity for method_name is too high. [7/2]'])
220
- end
221
- end
222
- end