rubocop 0.8.3 → 0.9.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 (381) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -4
  3. data/.yardopts +2 -0
  4. data/CHANGELOG.md +70 -1
  5. data/README.md +101 -11
  6. data/config/default.yml +10 -2
  7. data/config/enabled.yml +85 -11
  8. data/lib/rubocop.rb +97 -73
  9. data/lib/rubocop/cli.rb +177 -92
  10. data/lib/rubocop/config.rb +56 -11
  11. data/lib/rubocop/config_store.rb +2 -0
  12. data/lib/rubocop/cop/cop.rb +52 -8
  13. data/lib/rubocop/cop/lint/assignment_in_condition.rb +54 -0
  14. data/lib/rubocop/cop/lint/end_alignment.rb +180 -0
  15. data/lib/rubocop/cop/lint/end_in_method.rb +30 -0
  16. data/lib/rubocop/cop/lint/ensure_return.rb +22 -0
  17. data/lib/rubocop/cop/lint/eval.rb +22 -0
  18. data/lib/rubocop/cop/lint/handle_exceptions.rb +20 -0
  19. data/lib/rubocop/cop/lint/literal_in_condition.rb +63 -0
  20. data/lib/rubocop/cop/lint/loop.rb +29 -0
  21. data/lib/rubocop/cop/lint/rescue_exception.rb +29 -0
  22. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +33 -0
  23. data/lib/rubocop/cop/lint/unreachable_code.rb +35 -0
  24. data/lib/rubocop/cop/lint/unused_local_variable.rb +32 -0
  25. data/lib/rubocop/cop/lint/void.rb +58 -0
  26. data/lib/rubocop/cop/offence.rb +112 -12
  27. data/lib/rubocop/cop/rails/validation.rb +34 -0
  28. data/lib/rubocop/cop/style/access_control.rb +58 -0
  29. data/lib/rubocop/cop/style/alias.rb +28 -0
  30. data/lib/rubocop/cop/style/align_parameters.rb +39 -0
  31. data/lib/rubocop/cop/style/and_or.rb +45 -0
  32. data/lib/rubocop/cop/style/ascii_comments.rb +21 -0
  33. data/lib/rubocop/cop/style/ascii_identifiers.rb +22 -0
  34. data/lib/rubocop/cop/style/attr.rb +20 -0
  35. data/lib/rubocop/cop/style/avoid_class_vars.rb +20 -0
  36. data/lib/rubocop/cop/style/avoid_for.rb +18 -0
  37. data/lib/rubocop/cop/style/avoid_global_vars.rb +65 -0
  38. data/lib/rubocop/cop/style/avoid_perl_backrefs.rb +21 -0
  39. data/lib/rubocop/cop/style/avoid_perlisms.rb +50 -0
  40. data/lib/rubocop/cop/style/begin_block.rb +18 -0
  41. data/lib/rubocop/cop/style/block_comments.rb +20 -0
  42. data/lib/rubocop/cop/style/block_nesting.rb +47 -0
  43. data/lib/rubocop/cop/style/blocks.rb +27 -0
  44. data/lib/rubocop/cop/style/case_equality.rb +22 -0
  45. data/lib/rubocop/cop/style/case_indentation.rb +28 -0
  46. data/lib/rubocop/cop/style/character_literal.rb +37 -0
  47. data/lib/rubocop/cop/style/class_and_module_camel_case.rb +33 -0
  48. data/lib/rubocop/cop/style/class_methods.rb +22 -0
  49. data/lib/rubocop/cop/style/collection_methods.rb +37 -0
  50. data/lib/rubocop/cop/style/colon_method_call.rb +29 -0
  51. data/lib/rubocop/cop/style/constant_name.rb +31 -0
  52. data/lib/rubocop/cop/style/def_parentheses.rb +70 -0
  53. data/lib/rubocop/cop/style/documentation.rb +58 -0
  54. data/lib/rubocop/cop/style/dot_position.rb +25 -0
  55. data/lib/rubocop/cop/style/empty_line_between_defs.rb +26 -0
  56. data/lib/rubocop/cop/style/empty_lines.rb +40 -0
  57. data/lib/rubocop/cop/style/empty_literal.rb +53 -0
  58. data/lib/rubocop/cop/style/encoding.rb +29 -0
  59. data/lib/rubocop/cop/style/end_block.rb +18 -0
  60. data/lib/rubocop/cop/style/end_of_line.rb +23 -0
  61. data/lib/rubocop/cop/style/favor_join.rb +29 -0
  62. data/lib/rubocop/cop/style/favor_modifier.rb +118 -0
  63. data/lib/rubocop/cop/style/favor_sprintf.rb +28 -0
  64. data/lib/rubocop/cop/style/favor_unless_over_negated_if.rb +54 -0
  65. data/lib/rubocop/cop/style/hash_syntax.rb +47 -0
  66. data/lib/rubocop/cop/style/if_then_else.rb +80 -0
  67. data/lib/rubocop/cop/style/lambda.rb +47 -0
  68. data/lib/rubocop/cop/style/leading_comment_space.rb +25 -0
  69. data/lib/rubocop/cop/style/line_continuation.rb +26 -0
  70. data/lib/rubocop/cop/style/line_length.rb +30 -0
  71. data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +61 -0
  72. data/lib/rubocop/cop/style/method_call_parentheses.rb +22 -0
  73. data/lib/rubocop/cop/style/method_length.rb +57 -0
  74. data/lib/rubocop/cop/style/not.rb +24 -0
  75. data/lib/rubocop/cop/style/numeric_literals.rb +25 -0
  76. data/lib/rubocop/cop/{op_method.rb → style/op_method.rb} +4 -3
  77. data/lib/rubocop/cop/style/parameter_lists.rb +42 -0
  78. data/lib/rubocop/cop/style/parentheses_around_condition.rb +42 -0
  79. data/lib/rubocop/cop/style/proc.rb +30 -0
  80. data/lib/rubocop/cop/style/reduce_arguments.rb +34 -0
  81. data/lib/rubocop/cop/style/regexp_literal.rb +39 -0
  82. data/lib/rubocop/cop/style/rescue_modifier.rb +55 -0
  83. data/lib/rubocop/cop/style/semicolon.rb +51 -0
  84. data/lib/rubocop/cop/style/single_line_methods.rb +48 -0
  85. data/lib/rubocop/cop/style/space_after_comma_etc.rb +69 -0
  86. data/lib/rubocop/cop/style/space_after_control_keyword.rb +32 -0
  87. data/lib/rubocop/cop/style/string_literals.rb +36 -0
  88. data/lib/rubocop/cop/style/surrounding_space.rb +314 -0
  89. data/lib/rubocop/cop/style/symbol_array.rb +31 -0
  90. data/lib/rubocop/cop/style/symbol_name.rb +27 -0
  91. data/lib/rubocop/cop/style/tab.rb +25 -0
  92. data/lib/rubocop/cop/style/ternary_operator.rb +49 -0
  93. data/lib/rubocop/cop/style/trailing_whitespace.rb +24 -0
  94. data/lib/rubocop/cop/style/trivial_accessors.rb +32 -0
  95. data/lib/rubocop/cop/style/unless_else.rb +26 -0
  96. data/lib/rubocop/cop/style/variable_interpolation.rb +32 -0
  97. data/lib/rubocop/cop/style/when_then.rb +25 -0
  98. data/lib/rubocop/cop/style/while_until_do.rb +45 -0
  99. data/lib/rubocop/cop/style/word_array.rb +44 -0
  100. data/lib/rubocop/cop/util.rb +1 -0
  101. data/lib/rubocop/cop/variable_inspector.rb +280 -0
  102. data/lib/rubocop/formatter/base_formatter.rb +119 -0
  103. data/lib/rubocop/formatter/clang_style_formatter.rb +21 -0
  104. data/lib/rubocop/formatter/emacs_style_formatter.rb +17 -0
  105. data/lib/rubocop/formatter/formatter_set.rb +77 -0
  106. data/lib/rubocop/formatter/json_formatter.rb +76 -0
  107. data/lib/rubocop/formatter/progress_formatter.rb +63 -0
  108. data/lib/rubocop/formatter/simple_text_formatter.rb +62 -0
  109. data/lib/rubocop/version.rb +15 -1
  110. data/rubocop.gemspec +1 -2
  111. data/spec/.rubocop.yml +5 -0
  112. data/spec/project_spec.rb +4 -7
  113. data/spec/rubocop/cli_spec.rb +383 -146
  114. data/spec/rubocop/config_spec.rb +61 -0
  115. data/spec/rubocop/config_store_spec.rb +2 -2
  116. data/spec/rubocop/cops/cop_spec.rb +14 -7
  117. data/spec/rubocop/cops/lint/assignment_in_condition_spec.rb +111 -0
  118. data/spec/rubocop/cops/lint/end_alignment_spec.rb +426 -0
  119. data/spec/rubocop/cops/lint/end_in_method_spec.rb +35 -0
  120. data/spec/rubocop/cops/lint/ensure_return_spec.rb +37 -0
  121. data/spec/rubocop/cops/lint/eval_spec.rb +41 -0
  122. data/spec/rubocop/cops/lint/handle_exceptions_spec.rb +36 -0
  123. data/spec/rubocop/cops/lint/literal_in_condition_spec.rb +35 -0
  124. data/spec/rubocop/cops/lint/loop_spec.rb +33 -0
  125. data/spec/rubocop/cops/lint/rescue_exception_spec.rb +127 -0
  126. data/spec/rubocop/cops/lint/shadowing_outer_local_variable_spec.rb +180 -0
  127. data/spec/rubocop/cops/lint/unreachable_code_spec.rb +69 -0
  128. data/spec/rubocop/cops/lint/unused_local_variable_spec.rb +484 -0
  129. data/spec/rubocop/cops/lint/void_spec.rb +63 -0
  130. data/spec/rubocop/cops/offence_spec.rb +107 -10
  131. data/spec/rubocop/cops/rails/validation_spec.rb +27 -0
  132. data/spec/rubocop/cops/style/access_control_spec.rb +142 -0
  133. data/spec/rubocop/cops/style/alias_spec.rb +47 -0
  134. data/spec/rubocop/cops/style/align_parameters_spec.rb +199 -0
  135. data/spec/rubocop/cops/style/and_or_spec.rb +39 -0
  136. data/spec/rubocop/cops/style/ascii_comments_spec.rb +28 -0
  137. data/spec/rubocop/cops/style/ascii_identifiers_spec.rb +28 -0
  138. data/spec/rubocop/cops/style/attr_spec.rb +20 -0
  139. data/spec/rubocop/cops/style/avoid_class_vars_spec.rb +27 -0
  140. data/spec/rubocop/cops/style/avoid_for_spec.rb +37 -0
  141. data/spec/rubocop/cops/style/avoid_global_vars_spec.rb +34 -0
  142. data/spec/rubocop/cops/style/avoid_perl_backrefs_spec.rb +20 -0
  143. data/spec/rubocop/cops/style/avoid_perlisms_spec.rb +47 -0
  144. data/spec/rubocop/cops/style/begin_block_spec.rb +19 -0
  145. data/spec/rubocop/cops/style/block_comments_spec.rb +27 -0
  146. data/spec/rubocop/cops/style/block_nesting_spec.rb +159 -0
  147. data/spec/rubocop/cops/style/blocks_spec.rb +35 -0
  148. data/spec/rubocop/cops/style/case_equality_spec.rb +18 -0
  149. data/spec/rubocop/cops/style/case_indentation_spec.rb +88 -0
  150. data/spec/rubocop/cops/style/character_literal_spec.rb +28 -0
  151. data/spec/rubocop/cops/style/class_and_module_camel_case_spec.rb +46 -0
  152. data/spec/rubocop/cops/style/class_methods_spec.rb +51 -0
  153. data/spec/rubocop/cops/style/collection_methods_spec.rb +46 -0
  154. data/spec/rubocop/cops/style/colon_method_call_spec.rb +55 -0
  155. data/spec/rubocop/cops/style/constant_name_spec.rb +56 -0
  156. data/spec/rubocop/cops/style/def_with_parentheses_spec.rb +40 -0
  157. data/spec/rubocop/cops/style/def_without_parentheses_spec.rb +34 -0
  158. data/spec/rubocop/cops/style/documentation_spec.rb +79 -0
  159. data/spec/rubocop/cops/style/dot_position_spec.rb +30 -0
  160. data/spec/rubocop/cops/style/empty_line_between_defs_spec.rb +85 -0
  161. data/spec/rubocop/cops/style/empty_lines_spec.rb +40 -0
  162. data/spec/rubocop/cops/style/empty_literal_spec.rb +91 -0
  163. data/spec/rubocop/cops/style/encoding_spec.rb +49 -0
  164. data/spec/rubocop/cops/style/end_block_spec.rb +19 -0
  165. data/spec/rubocop/cops/style/end_of_line_spec.rb +25 -0
  166. data/spec/rubocop/cops/style/favor_join_spec.rb +37 -0
  167. data/spec/rubocop/cops/style/favor_modifier_spec.rb +160 -0
  168. data/spec/rubocop/cops/style/favor_sprintf_spec.rb +53 -0
  169. data/spec/rubocop/cops/style/favor_unless_over_negated_if_spec.rb +64 -0
  170. data/spec/rubocop/cops/style/favor_until_over_negated_while_spec.rb +47 -0
  171. data/spec/rubocop/cops/style/hash_syntax_spec.rb +51 -0
  172. data/spec/rubocop/cops/style/if_with_semicolon_spec.rb +25 -0
  173. data/spec/rubocop/cops/style/lambda_spec.rb +45 -0
  174. data/spec/rubocop/cops/style/leading_comment_space_spec.rb +65 -0
  175. data/spec/rubocop/cops/style/line_continuation_spec.rb +26 -0
  176. data/spec/rubocop/cops/style/line_length_spec.rb +25 -0
  177. data/spec/rubocop/cops/style/method_and_variable_snake_case_spec.rb +95 -0
  178. data/spec/rubocop/cops/style/method_call_parentheses_spec.rb +25 -0
  179. data/spec/rubocop/cops/style/method_length_spec.rb +151 -0
  180. data/spec/rubocop/cops/style/multiline_if_then_spec.rb +81 -0
  181. data/spec/rubocop/cops/style/not_spec.rb +28 -0
  182. data/spec/rubocop/cops/style/numeric_literals_spec.rb +51 -0
  183. data/spec/rubocop/cops/style/one_line_conditional_spec.rb +18 -0
  184. data/spec/rubocop/cops/style/op_method_spec.rb +80 -0
  185. data/spec/rubocop/cops/style/parameter_lists_spec.rb +49 -0
  186. data/spec/rubocop/cops/style/parentheses_around_condition_spec.rb +59 -0
  187. data/spec/rubocop/cops/style/proc_spec.rb +28 -0
  188. data/spec/rubocop/cops/style/reduce_arguments_spec.rb +59 -0
  189. data/spec/rubocop/cops/style/regexp_literal_spec.rb +83 -0
  190. data/spec/rubocop/cops/style/rescue_modifier_spec.rb +122 -0
  191. data/spec/rubocop/cops/style/semicolon_spec.rb +95 -0
  192. data/spec/rubocop/cops/style/single_line_methods_spec.rb +54 -0
  193. data/spec/rubocop/cops/style/space_after_colon_spec.rb +29 -0
  194. data/spec/rubocop/cops/style/space_after_comma_spec.rb +31 -0
  195. data/spec/rubocop/cops/style/space_after_control_keyword_spec.rb +69 -0
  196. data/spec/rubocop/cops/style/space_after_semicolon_spec.rb +24 -0
  197. data/spec/rubocop/cops/style/space_around_braces_spec.rb +49 -0
  198. data/spec/rubocop/cops/style/space_around_equals_in_default_parameter_spec.rb +34 -0
  199. data/spec/rubocop/cops/style/space_around_operators_spec.rb +216 -0
  200. data/spec/rubocop/cops/style/space_inside_brackets_spec.rb +51 -0
  201. data/spec/rubocop/cops/style/space_inside_hash_literal_braces_spec.rb +99 -0
  202. data/spec/rubocop/cops/style/space_inside_parens_spec.rb +33 -0
  203. data/spec/rubocop/cops/style/string_literals_spec.rb +62 -0
  204. data/spec/rubocop/cops/style/symbol_array_spec.rb +45 -0
  205. data/spec/rubocop/cops/style/symbol_name_spec.rb +122 -0
  206. data/spec/rubocop/cops/style/tab_spec.rb +23 -0
  207. data/spec/rubocop/cops/style/ternary_operator_spec.rb +42 -0
  208. data/spec/rubocop/cops/style/trailing_whitespace_spec.rb +29 -0
  209. data/spec/rubocop/cops/style/trivial_accessors_spec.rb +338 -0
  210. data/spec/rubocop/cops/style/unless_else_spec.rb +31 -0
  211. data/spec/rubocop/cops/style/variable_interpolation_spec.rb +53 -0
  212. data/spec/rubocop/cops/style/when_then_spec.rb +40 -0
  213. data/spec/rubocop/cops/style/while_until_do_spec.rb +47 -0
  214. data/spec/rubocop/cops/style/word_array_spec.rb +61 -0
  215. data/spec/rubocop/cops/variable_inspector_spec.rb +374 -0
  216. data/spec/rubocop/formatter/base_formatter_spec.rb +190 -0
  217. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +70 -0
  218. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +32 -0
  219. data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
  220. data/spec/rubocop/formatter/json_formatter_spec.rb +142 -0
  221. data/spec/rubocop/formatter/progress_formatter_spec.rb +196 -0
  222. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +74 -0
  223. data/spec/spec_helper.rb +23 -8
  224. data/spec/support/mri_syntax_checker.rb +69 -0
  225. data/spec/support/shared_examples.rb +33 -0
  226. metadata +315 -243
  227. data/lib/rubocop/cop/access_control.rb +0 -41
  228. data/lib/rubocop/cop/alias.rb +0 -17
  229. data/lib/rubocop/cop/align_parameters.rb +0 -37
  230. data/lib/rubocop/cop/and_or.rb +0 -36
  231. data/lib/rubocop/cop/ascii_comments.rb +0 -17
  232. data/lib/rubocop/cop/ascii_identifiers.rb +0 -19
  233. data/lib/rubocop/cop/avoid_class_vars.rb +0 -15
  234. data/lib/rubocop/cop/avoid_for.rb +0 -17
  235. data/lib/rubocop/cop/avoid_global_vars.rb +0 -61
  236. data/lib/rubocop/cop/avoid_perl_backrefs.rb +0 -17
  237. data/lib/rubocop/cop/avoid_perlisms.rb +0 -47
  238. data/lib/rubocop/cop/block_comments.rb +0 -17
  239. data/lib/rubocop/cop/block_nesting.rb +0 -35
  240. data/lib/rubocop/cop/blocks.rb +0 -23
  241. data/lib/rubocop/cop/case_indentation.rb +0 -22
  242. data/lib/rubocop/cop/class_and_module_camel_case.rb +0 -29
  243. data/lib/rubocop/cop/class_methods.rb +0 -15
  244. data/lib/rubocop/cop/collection_methods.rb +0 -29
  245. data/lib/rubocop/cop/colon_method_call.rb +0 -20
  246. data/lib/rubocop/cop/constant_name.rb +0 -24
  247. data/lib/rubocop/cop/def_parentheses.rb +0 -62
  248. data/lib/rubocop/cop/empty_line_between_defs.rb +0 -22
  249. data/lib/rubocop/cop/empty_lines.rb +0 -34
  250. data/lib/rubocop/cop/empty_literal.rb +0 -49
  251. data/lib/rubocop/cop/encoding.rb +0 -19
  252. data/lib/rubocop/cop/end_of_line.rb +0 -15
  253. data/lib/rubocop/cop/ensure_return.rb +0 -19
  254. data/lib/rubocop/cop/eval.rb +0 -19
  255. data/lib/rubocop/cop/favor_join.rb +0 -22
  256. data/lib/rubocop/cop/favor_modifier.rb +0 -92
  257. data/lib/rubocop/cop/favor_percent_r.rb +0 -19
  258. data/lib/rubocop/cop/favor_sprintf.rb +0 -21
  259. data/lib/rubocop/cop/favor_unless_over_negated_if.rb +0 -49
  260. data/lib/rubocop/cop/handle_exceptions.rb +0 -17
  261. data/lib/rubocop/cop/hash_syntax.rb +0 -41
  262. data/lib/rubocop/cop/if_then_else.rb +0 -75
  263. data/lib/rubocop/cop/lambda.rb +0 -42
  264. data/lib/rubocop/cop/leading_comment_space.rb +0 -19
  265. data/lib/rubocop/cop/line_continuation.rb +0 -15
  266. data/lib/rubocop/cop/line_length.rb +0 -23
  267. data/lib/rubocop/cop/loop.rb +0 -33
  268. data/lib/rubocop/cop/method_and_variable_snake_case.rb +0 -55
  269. data/lib/rubocop/cop/method_length.rb +0 -52
  270. data/lib/rubocop/cop/not.rb +0 -21
  271. data/lib/rubocop/cop/numeric_literals.rb +0 -21
  272. data/lib/rubocop/cop/parameter_lists.rb +0 -23
  273. data/lib/rubocop/cop/parentheses_around_condition.rb +0 -40
  274. data/lib/rubocop/cop/percent_r.rb +0 -19
  275. data/lib/rubocop/cop/proc.rb +0 -26
  276. data/lib/rubocop/cop/reduce_arguments.rb +0 -29
  277. data/lib/rubocop/cop/rescue_exception.rb +0 -26
  278. data/lib/rubocop/cop/rescue_modifier.rb +0 -15
  279. data/lib/rubocop/cop/semicolon.rb +0 -31
  280. data/lib/rubocop/cop/single_line_methods.rb +0 -44
  281. data/lib/rubocop/cop/space_after_comma_etc.rb +0 -62
  282. data/lib/rubocop/cop/space_after_control_keyword.rb +0 -29
  283. data/lib/rubocop/cop/string_literals.rb +0 -25
  284. data/lib/rubocop/cop/surrounding_space.rb +0 -285
  285. data/lib/rubocop/cop/symbol_array.rb +0 -31
  286. data/lib/rubocop/cop/symbol_name.rb +0 -23
  287. data/lib/rubocop/cop/syntax.rb +0 -49
  288. data/lib/rubocop/cop/tab.rb +0 -15
  289. data/lib/rubocop/cop/ternary_operator.rb +0 -43
  290. data/lib/rubocop/cop/trailing_whitespace.rb +0 -15
  291. data/lib/rubocop/cop/trivial_accessors.rb +0 -26
  292. data/lib/rubocop/cop/unless_else.rb +0 -23
  293. data/lib/rubocop/cop/variable_interpolation.rb +0 -29
  294. data/lib/rubocop/cop/when_then.rb +0 -17
  295. data/lib/rubocop/cop/word_array.rb +0 -37
  296. data/lib/rubocop/report/emacs_style.rb +0 -17
  297. data/lib/rubocop/report/plain_text.rb +0 -18
  298. data/lib/rubocop/report/report.rb +0 -44
  299. data/spec/rubocop/cops/access_control_spec.rb +0 -129
  300. data/spec/rubocop/cops/alias_spec.rb +0 -39
  301. data/spec/rubocop/cops/align_parameters_spec.rb +0 -197
  302. data/spec/rubocop/cops/and_or_spec.rb +0 -37
  303. data/spec/rubocop/cops/ascii_comments_spec.rb +0 -26
  304. data/spec/rubocop/cops/ascii_identifiers_spec.rb +0 -26
  305. data/spec/rubocop/cops/avoid_class_vars_spec.rb +0 -25
  306. data/spec/rubocop/cops/avoid_for_spec.rb +0 -35
  307. data/spec/rubocop/cops/avoid_global_vars_spec.rb +0 -32
  308. data/spec/rubocop/cops/avoid_perl_backrefs_spec.rb +0 -18
  309. data/spec/rubocop/cops/avoid_perlisms_spec.rb +0 -44
  310. data/spec/rubocop/cops/block_comments_spec.rb +0 -25
  311. data/spec/rubocop/cops/block_nesting_spec.rb +0 -148
  312. data/spec/rubocop/cops/blocks_spec.rb +0 -33
  313. data/spec/rubocop/cops/case_indentation_spec.rb +0 -86
  314. data/spec/rubocop/cops/class_and_module_camel_case_spec.rb +0 -44
  315. data/spec/rubocop/cops/class_methods_spec.rb +0 -49
  316. data/spec/rubocop/cops/collection_methods_spec.rb +0 -44
  317. data/spec/rubocop/cops/colon_method_call_spec.rb +0 -53
  318. data/spec/rubocop/cops/constant_name_spec.rb +0 -42
  319. data/spec/rubocop/cops/def_with_parentheses_spec.rb +0 -38
  320. data/spec/rubocop/cops/def_without_parentheses_spec.rb +0 -32
  321. data/spec/rubocop/cops/empty_line_between_defs_spec.rb +0 -83
  322. data/spec/rubocop/cops/empty_lines_spec.rb +0 -38
  323. data/spec/rubocop/cops/empty_literal_spec.rb +0 -90
  324. data/spec/rubocop/cops/encoding_spec.rb +0 -47
  325. data/spec/rubocop/cops/end_of_line_spec.rb +0 -23
  326. data/spec/rubocop/cops/ensure_return_spec.rb +0 -35
  327. data/spec/rubocop/cops/eval_spec.rb +0 -39
  328. data/spec/rubocop/cops/favor_join_spec.rb +0 -35
  329. data/spec/rubocop/cops/favor_modifier_spec.rb +0 -146
  330. data/spec/rubocop/cops/favor_percent_r_spec.rb +0 -29
  331. data/spec/rubocop/cops/favor_sprintf_spec.rb +0 -51
  332. data/spec/rubocop/cops/favor_unless_over_negated_if_spec.rb +0 -62
  333. data/spec/rubocop/cops/favor_until_over_negated_while_spec.rb +0 -45
  334. data/spec/rubocop/cops/handle_exceptions_spec.rb +0 -34
  335. data/spec/rubocop/cops/hash_syntax_spec.rb +0 -49
  336. data/spec/rubocop/cops/if_with_semicolon_spec.rb +0 -23
  337. data/spec/rubocop/cops/lambda_spec.rb +0 -43
  338. data/spec/rubocop/cops/leading_comment_space_spec.rb +0 -54
  339. data/spec/rubocop/cops/line_continuation_spec.rb +0 -24
  340. data/spec/rubocop/cops/line_length_spec.rb +0 -23
  341. data/spec/rubocop/cops/loop_spec.rb +0 -31
  342. data/spec/rubocop/cops/method_and_variable_snake_case_spec.rb +0 -93
  343. data/spec/rubocop/cops/method_length_spec.rb +0 -147
  344. data/spec/rubocop/cops/multiline_if_then_spec.rb +0 -79
  345. data/spec/rubocop/cops/not_spec.rb +0 -26
  346. data/spec/rubocop/cops/numeric_literals_spec.rb +0 -49
  347. data/spec/rubocop/cops/one_line_conditional_spec.rb +0 -16
  348. data/spec/rubocop/cops/op_method_spec.rb +0 -78
  349. data/spec/rubocop/cops/parameter_lists_spec.rb +0 -24
  350. data/spec/rubocop/cops/parentheses_around_condition_spec.rb +0 -61
  351. data/spec/rubocop/cops/percent_r_spec.rb +0 -29
  352. data/spec/rubocop/cops/proc_spec.rb +0 -26
  353. data/spec/rubocop/cops/reduce_arguments_spec.rb +0 -57
  354. data/spec/rubocop/cops/rescue_exception_spec.rb +0 -125
  355. data/spec/rubocop/cops/rescue_modifier_spec.rb +0 -37
  356. data/spec/rubocop/cops/semicolon_spec.rb +0 -88
  357. data/spec/rubocop/cops/single_line_methods_spec.rb +0 -50
  358. data/spec/rubocop/cops/space_after_colon_spec.rb +0 -27
  359. data/spec/rubocop/cops/space_after_comma_spec.rb +0 -29
  360. data/spec/rubocop/cops/space_after_control_keyword_spec.rb +0 -67
  361. data/spec/rubocop/cops/space_after_semicolon_spec.rb +0 -22
  362. data/spec/rubocop/cops/space_around_braces_spec.rb +0 -47
  363. data/spec/rubocop/cops/space_around_equals_in_default_parameter_spec.rb +0 -32
  364. data/spec/rubocop/cops/space_around_operators_spec.rb +0 -209
  365. data/spec/rubocop/cops/space_inside_brackets_spec.rb +0 -49
  366. data/spec/rubocop/cops/space_inside_hash_literal_braces_spec.rb +0 -86
  367. data/spec/rubocop/cops/space_inside_parens_spec.rb +0 -31
  368. data/spec/rubocop/cops/string_literals_spec.rb +0 -58
  369. data/spec/rubocop/cops/symbol_array_spec.rb +0 -41
  370. data/spec/rubocop/cops/symbol_name_spec.rb +0 -119
  371. data/spec/rubocop/cops/syntax_spec.rb +0 -41
  372. data/spec/rubocop/cops/tab_spec.rb +0 -21
  373. data/spec/rubocop/cops/ternary_operator_spec.rb +0 -40
  374. data/spec/rubocop/cops/trailing_whitespace_spec.rb +0 -27
  375. data/spec/rubocop/cops/trivial_accessors_spec.rb +0 -337
  376. data/spec/rubocop/cops/unless_else_spec.rb +0 -29
  377. data/spec/rubocop/cops/variable_interpolation_spec.rb +0 -49
  378. data/spec/rubocop/cops/when_then_spec.rb +0 -38
  379. data/spec/rubocop/cops/word_array_spec.rb +0 -47
  380. data/spec/rubocop/reports/emacs_style_spec.rb +0 -25
  381. data/spec/rubocop/reports/report_spec.rb +0 -29
@@ -0,0 +1,69 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Lint
8
+ describe UnreachableCode do
9
+ let(:uc) { UnreachableCode.new }
10
+
11
+ UnreachableCode::NODE_TYPES.each do |t|
12
+ it "registers an offence for #{t} before other statements" do
13
+ inspect_source(uc,
14
+ ['foo = 5',
15
+ "#{t}",
16
+ 'bar'
17
+ ])
18
+ expect(uc.offences.size).to eq(1)
19
+ end
20
+
21
+ it "accepts code with conditional #{t}" do
22
+ inspect_source(uc,
23
+ ['foo = 5',
24
+ "#{t} if test",
25
+ 'bar'
26
+ ])
27
+ expect(uc.offences).to be_empty
28
+ end
29
+
30
+ it "accepts #{t} as the final expression" do
31
+ inspect_source(uc,
32
+ ['foo = 5',
33
+ "#{t} if test"
34
+ ])
35
+ expect(uc.offences).to be_empty
36
+ end
37
+ end
38
+
39
+ UnreachableCode::FLOW_COMMANDS.each do |t|
40
+ it "registers an offence for #{t} before other statements" do
41
+ inspect_source(uc,
42
+ ['foo = 5',
43
+ "#{t} something",
44
+ 'bar'
45
+ ])
46
+ expect(uc.offences.size).to eq(1)
47
+ end
48
+
49
+ it "accepts code with conditional #{t}" do
50
+ inspect_source(uc,
51
+ ['foo = 5',
52
+ "#{t} something if test",
53
+ 'bar'
54
+ ])
55
+ expect(uc.offences).to be_empty
56
+ end
57
+
58
+ it "accepts #{t} as the final expression" do
59
+ inspect_source(uc,
60
+ ['foo = 5',
61
+ "#{t} something if test"
62
+ ])
63
+ expect(uc.offences).to be_empty
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,484 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module Rubocop
6
+ module Cop
7
+ module Lint
8
+ describe UnusedLocalVariable do
9
+ subject(:cop) { UnusedLocalVariable.new }
10
+
11
+ context 'when a variable is assigned and unreferenced in a method' do
12
+ let(:source) do
13
+ [
14
+ 'class SomeClass',
15
+ ' foo = 1',
16
+ ' puts foo',
17
+ ' def some_method',
18
+ ' foo = 2',
19
+ ' bar = 3',
20
+ ' puts bar',
21
+ ' end',
22
+ 'end'
23
+ ]
24
+ end
25
+
26
+ it 'registers an offence' do
27
+ inspect_source(cop, source)
28
+ expect(cop.offences).to have(1).item
29
+ expect(cop.offences.first.message)
30
+ .to include('unused variable - foo')
31
+ expect(cop.offences.first.line).to eq(5)
32
+ end
33
+
34
+ include_examples 'mimics MRI 2.0'
35
+ end
36
+
37
+ context 'when a variable is assigned and unreferenced ' +
38
+ 'in a singleton method defined with self keyword' do
39
+ let(:source) do
40
+ [
41
+ 'class SomeClass',
42
+ ' foo = 1',
43
+ ' puts foo',
44
+ ' def self.some_method',
45
+ ' foo = 2',
46
+ ' bar = 3',
47
+ ' puts bar',
48
+ ' end',
49
+ 'end'
50
+ ]
51
+ end
52
+
53
+ it 'registers an offence' do
54
+ inspect_source(cop, source)
55
+ expect(cop.offences).to have(1).item
56
+ expect(cop.offences.first.message)
57
+ .to include('unused variable - foo')
58
+ expect(cop.offences.first.line).to eq(5)
59
+ end
60
+
61
+ include_examples 'mimics MRI 2.0'
62
+ end
63
+
64
+ context 'when a variable is assigned and unreferenced ' +
65
+ 'in a singleton method defined with variable name' do
66
+ let(:source) do
67
+ [
68
+ '1.times do',
69
+ ' foo = 1',
70
+ ' puts foo',
71
+ ' instance = Object.new',
72
+ ' def instance.some_method',
73
+ ' foo = 2',
74
+ ' bar = 3',
75
+ ' puts bar',
76
+ ' end',
77
+ 'end'
78
+ ]
79
+ end
80
+
81
+ it 'registers an offence' do
82
+ inspect_source(cop, source)
83
+ expect(cop.offences).to have(1).item
84
+ expect(cop.offences.first.message)
85
+ .to include('unused variable - foo')
86
+ expect(cop.offences.first.line).to eq(6)
87
+ end
88
+
89
+ include_examples 'mimics MRI 2.0'
90
+ end
91
+
92
+ context 'when a variable is assigned and unreferenced in a class' do
93
+ let(:source) do
94
+ [
95
+ '1.times do',
96
+ ' foo = 1',
97
+ ' puts foo',
98
+ ' class SomeClass',
99
+ ' foo = 2',
100
+ ' bar = 3',
101
+ ' puts bar',
102
+ ' end',
103
+ 'end'
104
+ ]
105
+ end
106
+
107
+ it 'registers an offence' do
108
+ inspect_source(cop, source)
109
+ expect(cop.offences).to have(1).item
110
+ expect(cop.offences.first.message)
111
+ .to include('unused variable - foo')
112
+ expect(cop.offences.first.line).to eq(5)
113
+ end
114
+
115
+ include_examples 'mimics MRI 2.0'
116
+ end
117
+
118
+ context 'when a variable is assigned and unreferenced ' +
119
+ 'in a singleton class' do
120
+ let(:source) do
121
+ [
122
+ '1.times do',
123
+ ' foo = 1',
124
+ ' puts foo',
125
+ ' instance = Object.new',
126
+ ' class << instance',
127
+ ' foo = 2',
128
+ ' bar = 3',
129
+ ' puts bar',
130
+ ' end',
131
+ 'end'
132
+ ]
133
+ end
134
+
135
+ it 'registers an offence' do
136
+ inspect_source(cop, source)
137
+ expect(cop.offences).to have(1).item
138
+ expect(cop.offences.first.message)
139
+ .to include('unused variable - foo')
140
+ expect(cop.offences.first.line).to eq(6)
141
+ end
142
+
143
+ include_examples 'mimics MRI 2.0'
144
+ end
145
+
146
+ context 'when a variable is assigned and unreferenced in a module' do
147
+ let(:source) do
148
+ [
149
+ '1.times do',
150
+ ' foo = 1',
151
+ ' puts foo',
152
+ ' module SomeModule',
153
+ ' foo = 2',
154
+ ' bar = 3',
155
+ ' puts bar',
156
+ ' end',
157
+ 'end'
158
+ ]
159
+ end
160
+
161
+ it 'registers an offence' do
162
+ inspect_source(cop, source)
163
+ expect(cop.offences).to have(1).item
164
+ expect(cop.offences.first.message)
165
+ .to include('unused variable - foo')
166
+ expect(cop.offences.first.line).to eq(5)
167
+ end
168
+
169
+ include_examples 'mimics MRI 2.0'
170
+ end
171
+
172
+ context 'when a variable is assigned and unreferenced in top level' do
173
+ let(:source) do
174
+ [
175
+ 'foo = 1',
176
+ 'bar = 2',
177
+ 'puts bar'
178
+ ]
179
+ end
180
+
181
+ it 'registers an offence' do
182
+ inspect_source(cop, source)
183
+ expect(cop.offences).to have(1).item
184
+ expect(cop.offences.first.message)
185
+ .to include('unused variable - foo')
186
+ expect(cop.offences.first.line).to eq(1)
187
+ end
188
+
189
+ include_examples 'mimics MRI 2.0'
190
+ end
191
+
192
+ context 'when a variable is assigned multiple times ' +
193
+ 'but unreferenced' do
194
+ let(:source) do
195
+ [
196
+ 'def some_method',
197
+ ' foo = 1',
198
+ ' bar = 2',
199
+ ' foo = 3',
200
+ ' puts bar',
201
+ 'end'
202
+ ]
203
+ end
204
+
205
+ include_examples 'accepts'
206
+ include_examples 'mimics MRI 2.0'
207
+ end
208
+
209
+ context 'when an unreferenced variable is reassigned in a block' do
210
+ let(:source) do
211
+ [
212
+ 'def some_method',
213
+ ' foo = 1',
214
+ ' 1.times do',
215
+ ' foo = 2',
216
+ ' end',
217
+ 'end'
218
+ ]
219
+ end
220
+
221
+ include_examples 'accepts'
222
+ include_examples 'mimics MRI 2.0'
223
+ end
224
+
225
+ context 'when a referenced variable in reassigned in a block' do
226
+ let(:source) do
227
+ [
228
+ 'def some_method',
229
+ ' foo = 1',
230
+ ' puts foo',
231
+ ' 1.times do',
232
+ ' foo = 2',
233
+ ' end',
234
+ 'end'
235
+ ]
236
+ end
237
+
238
+ include_examples 'accepts'
239
+ include_examples 'mimics MRI 2.0'
240
+ end
241
+
242
+ context 'when a block local variable is declared but not assigned' do
243
+ let(:source) do
244
+ [
245
+ '1.times do |i; foo|',
246
+ 'end'
247
+ ]
248
+ end
249
+
250
+ it 'registers an offence' do
251
+ inspect_source(cop, source)
252
+ expect(cop.offences).to have(1).item
253
+ expect(cop.offences.first.message)
254
+ .to include('unused variable - foo')
255
+ expect(cop.offences.first.line).to eq(1)
256
+ end
257
+
258
+ include_examples 'mimics MRI 2.0'
259
+ end
260
+
261
+ context 'when a block local variable is assigned and unreferenced' do
262
+ let(:source) do
263
+ [
264
+ '1.times do |i; foo|',
265
+ ' foo = 2',
266
+ 'end'
267
+ ]
268
+ end
269
+
270
+ include_examples 'accepts'
271
+ include_examples 'mimics MRI 2.0'
272
+ end
273
+
274
+ context 'when a variable is assigned in begin ' +
275
+ 'and referenced outside' do
276
+ let(:source) do
277
+ [
278
+ 'def some_method',
279
+ ' begin',
280
+ ' foo = 1',
281
+ ' end',
282
+ ' puts foo',
283
+ 'end'
284
+ ]
285
+ end
286
+
287
+ include_examples 'accepts'
288
+ include_examples 'mimics MRI 2.0'
289
+ end
290
+
291
+ context 'when a variable is shadowed by a block argument ' +
292
+ 'and unreferenced' do
293
+ let(:source) do
294
+ [
295
+ 'def some_method',
296
+ ' foo = 1',
297
+ ' 1.times do |foo|',
298
+ ' puts foo',
299
+ ' end',
300
+ 'end'
301
+ ]
302
+ end
303
+
304
+ it 'registers an offence' do
305
+ inspect_source(cop, source)
306
+ expect(cop.offences).to have(1).item
307
+ expect(cop.offences.first.message)
308
+ .to include('unused variable - foo')
309
+ expect(cop.offences.first.line).to eq(2)
310
+ end
311
+
312
+ include_examples 'mimics MRI 2.0', 'unused variable'
313
+ end
314
+
315
+ context 'when a variable is not used and the name starts with _' do
316
+ let(:source) do
317
+ [
318
+ 'def some_method',
319
+ ' _foo = 1',
320
+ ' bar = 2',
321
+ ' puts bar',
322
+ 'end'
323
+ ]
324
+ end
325
+
326
+ include_examples 'accepts'
327
+ include_examples 'mimics MRI 2.0'
328
+ end
329
+
330
+ context 'when a method argument is not used' do
331
+ let(:source) do
332
+ [
333
+ 'def some_method(arg)',
334
+ 'end'
335
+ ]
336
+ end
337
+
338
+ include_examples 'accepts'
339
+ include_examples 'mimics MRI 2.0'
340
+ end
341
+
342
+ context 'when an optional method argument is not used' do
343
+ let(:source) do
344
+ [
345
+ 'def some_method(arg = nil)',
346
+ 'end'
347
+ ]
348
+ end
349
+
350
+ include_examples 'accepts'
351
+ include_examples 'mimics MRI 2.0'
352
+ end
353
+
354
+ context 'when a block method argument is not used' do
355
+ let(:source) do
356
+ [
357
+ 'def some_method(&block)',
358
+ 'end'
359
+ ]
360
+ end
361
+
362
+ include_examples 'accepts'
363
+ include_examples 'mimics MRI 2.0'
364
+ end
365
+
366
+ context 'when a splat method argument is not used' do
367
+ let(:source) do
368
+ [
369
+ 'def some_method(*args)',
370
+ 'end'
371
+ ]
372
+ end
373
+
374
+ include_examples 'accepts'
375
+ include_examples 'mimics MRI 2.0'
376
+ end
377
+
378
+ context 'when a optional keyword method argument is not used' do
379
+ let(:source) do
380
+ [
381
+ 'def some_method(name: value)',
382
+ 'end'
383
+ ]
384
+ end
385
+
386
+ include_examples 'accepts'
387
+ include_examples 'mimics MRI 2.0'
388
+ end
389
+
390
+ context 'when a keyword splat method argument is not used' do
391
+ let(:source) do
392
+ [
393
+ 'def some_method(name: value, **rest_keywords)',
394
+ 'end'
395
+ ]
396
+ end
397
+
398
+ include_examples 'accepts'
399
+ include_examples 'mimics MRI 2.0'
400
+ end
401
+
402
+ context 'when a block argument is not used' do
403
+ let(:source) do
404
+ [
405
+ '1.times do |i|',
406
+ 'end'
407
+ ]
408
+ end
409
+
410
+ include_examples 'accepts'
411
+ include_examples 'mimics MRI 2.0'
412
+ end
413
+
414
+ context 'when there is only one AST node and it is unused variable' do
415
+ let(:source) do
416
+ [
417
+ 'foo = 1'
418
+ ]
419
+ end
420
+
421
+ it 'registers an offence' do
422
+ inspect_source(cop, source)
423
+ expect(cop.offences).to have(1).item
424
+ expect(cop.offences.first.message)
425
+ .to include('unused variable - foo')
426
+ expect(cop.offences.first.line).to eq(1)
427
+ end
428
+
429
+ include_examples 'mimics MRI 2.0'
430
+ end
431
+
432
+ context 'when a variable is assigned ' +
433
+ 'while being passed to a method taking block' do
434
+
435
+ context 'and the variable is used' do
436
+ let(:source) do
437
+ [
438
+ 'some_method(foo = 1) do',
439
+ 'end',
440
+ 'puts foo'
441
+ ]
442
+ end
443
+
444
+ include_examples 'accepts'
445
+ include_examples 'mimics MRI 2.0'
446
+ end
447
+
448
+ context 'and the variable is not used' do
449
+ let(:source) do
450
+ [
451
+ 'some_method(foo = 1) do',
452
+ 'end'
453
+ ]
454
+ end
455
+
456
+ it 'registers an offence' do
457
+ inspect_source(cop, source)
458
+ expect(cop.offences).to have(1).item
459
+ expect(cop.offences.first.message)
460
+ .to include('unused variable - foo')
461
+ expect(cop.offences.first.line).to eq(1)
462
+ end
463
+
464
+ include_examples 'mimics MRI 2.0'
465
+ end
466
+ end
467
+
468
+ context 'when a variabled is assigned ' +
469
+ 'and passed to a method followed by method taking block' do
470
+ let(:source) do
471
+ [
472
+ "pattern = '*.rb'",
473
+ 'Dir.glob(pattern).map do |path|',
474
+ 'end'
475
+ ]
476
+ end
477
+
478
+ include_examples 'accepts'
479
+ include_examples 'mimics MRI 2.0'
480
+ end
481
+ end
482
+ end
483
+ end
484
+ end