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
@@ -1,21 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class Not < Cop
6
- MSG = 'Use ! instead of not.'
7
-
8
- def on_send(node)
9
- _receiver, method_name, *args = *node
10
-
11
- # not does not take any arguments
12
- if args.empty? && method_name == :! &&
13
- node.loc.selector.source == 'not'
14
- add_offence(:convention, node.loc.line, MSG)
15
- end
16
-
17
- super
18
- end
19
- end
20
- end
21
- end
@@ -1,21 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class NumericLiterals < Cop
6
- MSG = 'Add underscores to large numeric literals to ' +
7
- 'improve their readability.'
8
-
9
- def on_int(node)
10
- value, = *node
11
-
12
- if value > 10000 &&
13
- node.loc.expression.source.split('.').grep(/\d{6}/).any?
14
- add_offence(:convention, node.loc.expression.line, MSG)
15
- end
16
- end
17
-
18
- alias_method :on_float, :on_int
19
- end
20
- end
21
- end
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class ParameterLists < Cop
6
- MSG = 'Avoid parameter lists longer than %d parameters.'
7
-
8
- def on_args(node)
9
- args_count = node.children.size
10
-
11
- if args_count > max_params
12
- add_offence(:convention, node.loc.line, sprintf(MSG, max_params))
13
- end
14
-
15
- super
16
- end
17
-
18
- def max_params
19
- ParameterLists.config['Max']
20
- end
21
- end
22
- end
23
- end
@@ -1,40 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class ParenthesesAroundCondition < Cop
6
- MSG = "Don't use parentheses around the condition of an " +
7
- 'if/unless/while/until'
8
-
9
- def on_if(node)
10
- process_control_op(node)
11
-
12
- super
13
- end
14
-
15
- def on_while(node)
16
- process_control_op(node)
17
-
18
- super
19
- end
20
-
21
- def on_until(node)
22
- process_control_op(node)
23
-
24
- super
25
- end
26
-
27
- private
28
-
29
- def process_control_op(node)
30
- cond, _body = *node
31
-
32
- cond_source = cond.loc.expression.source
33
-
34
- if cond_source.start_with?('(') && cond_source.end_with?(')')
35
- add_offence(:convetion, cond.loc.line, MSG)
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class PercentR < Cop
6
- MSG = 'Use %r only for regular expressions matching more ' +
7
- "than one '/' character."
8
-
9
- def on_regexp(node)
10
- if node.loc.begin.source != '/' &&
11
- node.loc.expression.source[1...-1].scan(/\//).size <= 1
12
- add_offence(:convention, node.loc.line, MSG)
13
- end
14
-
15
- super
16
- end
17
- end
18
- end
19
- end
@@ -1,26 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class Proc < Cop
6
- MSG = 'Use proc instead of Proc.new.'
7
-
8
- TARGET = s(:send, s(:const, nil, :Proc), :new)
9
-
10
- def on_block(node)
11
- # We're looking for
12
- # (block
13
- # (send
14
- # (const nil :Proc) :new)
15
- # ...)
16
- block_method, = *node
17
-
18
- if block_method == TARGET
19
- add_offence(:convention, block_method.loc.line, MSG)
20
- end
21
-
22
- super
23
- end
24
- end
25
- end
26
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class ReduceArguments < Cop
6
- MSG = 'Name reduce arguments |a, e| (accumulator, element)'
7
-
8
- ARGS_NODE = s(:args, s(:arg, :a), s(:arg, :e))
9
-
10
- def on_block(node)
11
- # we care only for single line blocks
12
- return unless Util.block_length(node) == 0
13
-
14
- method_node, args_node, _body_node = *node
15
- receiver, method_name, _method_args = *method_node
16
-
17
- # discard other scenarios
18
- return unless receiver
19
- return unless [:reduce, :inject].include?(method_name)
20
-
21
- unless args_node == ARGS_NODE
22
- add_offence(:convention, node.loc.line, MSG)
23
- end
24
-
25
- super
26
- end
27
- end
28
- end
29
- end
@@ -1,26 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class RescueException < Cop
6
- MSG = 'Avoid rescuing the Exception class.'
7
-
8
- def on_resbody(node)
9
- return unless node.children.first
10
- rescue_args = node.children.first.children
11
- if rescue_args.any? { |a| targets_exception?(a) }
12
- add_offence(:warning, node.location.line, MSG)
13
- end
14
-
15
- super
16
- end
17
-
18
- def targets_exception?(rescue_arg_node)
19
- return false unless rescue_arg_node.type == :const
20
- namespace, klass_name = *rescue_arg_node
21
- return false unless namespace.nil? || namespace.type == :cbase
22
- klass_name == :Exception
23
- end
24
- end
25
- end
26
- end
@@ -1,15 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class RescueModifier < Cop
6
- MSG = 'Avoid using rescue in its modifier form.'
7
-
8
- def on_rescue(node)
9
- add_offence(:convention, node.loc.line, MSG)
10
- end
11
-
12
- alias_method :on_begin, :ignore_node
13
- end
14
- end
15
- end
@@ -1,31 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class Semicolon < Cop
6
- MSG = 'Do not use semicolons to terminate expressions.'
7
-
8
- def inspect(source, tokens, ast, comments)
9
- on_node(:begin, ast) do |node|
10
- exprs = node.children
11
-
12
- next if exprs.size < 2
13
-
14
- # create a map matching lines to the number of expressions on them
15
- exprs_lines = exprs.map { |e| e.loc.expression.line }
16
- lines = exprs_lines.group_by { |i| i }
17
-
18
- # every line with more than 1 expression on it is an offence
19
- lines.each do |line, expr_on_line|
20
- add_offence(:convention, line, MSG) if expr_on_line.size > 1
21
- end
22
- end
23
-
24
- # not pretty reliable, but the best we can do for now
25
- source.each_with_index do |line, index|
26
- add_offence(:convention, index, MSG) if line =~ /;\s*\z/
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,44 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class SingleLineMethods < Cop
6
- MSG = 'Avoid single-line method definitions.'
7
-
8
- def allow_empty?
9
- SingleLineMethods.config['AllowIfMethodIsEmpty']
10
- end
11
-
12
- def on_def(node)
13
- check(node)
14
-
15
- super
16
- end
17
-
18
- def on_defs(node)
19
- check(node)
20
-
21
- super
22
- end
23
-
24
- private
25
-
26
- def check(node)
27
- start_line = node.loc.keyword.line
28
- end_line = node.loc.end.line
29
-
30
- if node.type == :def
31
- empty_body = node.children[2].type == :nil
32
- else
33
- empty_body = node.children[3].type == :nil
34
- end
35
-
36
- if start_line == end_line && !(allow_empty? && empty_body)
37
- add_offence(:convention,
38
- start_line,
39
- MSG)
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,62 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # rubocop:disable SymbolName
4
-
5
- module Rubocop
6
- module Cop
7
- module SpaceAfterCommaEtc
8
- MSG = 'Space missing after %s.'
9
-
10
- def inspect(source, tokens, ast, comments)
11
- tokens.each_cons(2) do |t1, t2|
12
- if kind(t1) && t1.pos.line == t2.pos.line &&
13
- t2.pos.column == t1.pos.column + offset(t1)
14
- add_offence(:convention, t1.pos.line, sprintf(MSG, kind(t1)))
15
- end
16
- end
17
- end
18
-
19
- # The normal offset, i.e., the distance from the punctuation
20
- # token where a space should be, is 1.
21
- def offset(token)
22
- 1
23
- end
24
- end
25
-
26
- class SpaceAfterComma < Cop
27
- include SpaceAfterCommaEtc
28
-
29
- def kind(token)
30
- 'comma' if token.type == :tCOMMA
31
- end
32
- end
33
-
34
- class SpaceAfterSemicolon < Cop
35
- include SpaceAfterCommaEtc
36
-
37
- def kind(token)
38
- 'semicolon' if token.type == :tSEMI
39
- end
40
- end
41
-
42
- class SpaceAfterColon < Cop
43
- include SpaceAfterCommaEtc
44
-
45
- # The colon following a label will not appear in the token
46
- # array. Instad we get a tLABEL token, whose length we use to
47
- # calculate where we expect a space.
48
- def offset(token)
49
- case token.type
50
- when :tLABEL then token.text.length + 1
51
- when :tCOLON then 1
52
- end
53
- end
54
-
55
- def kind(token)
56
- case token.type
57
- when :tLABEL, :tCOLON then 'colon'
58
- end
59
- end
60
- end
61
- end
62
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class SpaceAfterControlKeyword < Cop
6
- MSG = 'Use space after control keywords.'
7
- # elsif and unless are handled by on_if.
8
- KEYWORDS = %w(if case when while until)
9
-
10
- def on_keyword(node)
11
- return if node.loc.is_a?(Parser::Source::Map::Ternary)
12
-
13
- exp = node.loc.expression
14
- kw = node.loc.keyword
15
- kw_offset = kw.begin_pos - exp.begin_pos
16
- if exp.source[kw_offset..-1].start_with?(kw.source + '(')
17
- add_offence(:convention, kw.line, MSG)
18
- end
19
- end
20
-
21
- KEYWORDS.each do |keyword|
22
- define_method(:"on_#{keyword}") do |node|
23
- on_keyword(node)
24
- super(node)
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Rubocop
4
- module Cop
5
- class StringLiterals < Cop
6
- MSG = "Prefer single-quoted strings when you don't need " +
7
- 'string interpolation or special symbols.'
8
-
9
- def on_str(node)
10
- text, = *node
11
-
12
- # Constants like __FILE__ and __DIR__ are created as strings,
13
- # but don't respond to begin.
14
- return unless node.loc.respond_to?(:begin)
15
-
16
- if text !~ /['\n\t\r]/ && node.loc.begin.source == '"'
17
- add_offence(:convention, node.loc.line, MSG)
18
- end
19
- end
20
-
21
- alias_method :on_dstr, :ignore_node
22
- alias_method :on_regexp, :ignore_node
23
- end
24
- end
25
- end
@@ -1,285 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # rubocop:disable SymbolName
4
-
5
- module Rubocop
6
- module Cop
7
- module SurroundingSpace
8
- def space_between?(t1, t2)
9
- char_preceding_2nd_token =
10
- @source[t2.pos.line - 1][t2.pos.column - 1]
11
- if char_preceding_2nd_token == '+' && t1.type != :tPLUS
12
- # Special case. A unary plus is not present in the tokens.
13
- char_preceding_2nd_token =
14
- @source[t2.pos.line - 1][t2.pos.column - 2]
15
- end
16
- t2.pos.line > t1.pos.line || char_preceding_2nd_token == ' '
17
- end
18
-
19
- def index_of_first_token(node, tokens)
20
- @token_table ||= build_token_table(tokens)
21
- b = node.loc.expression.begin
22
- @token_table[[b.line, b.column]]
23
- end
24
-
25
- def index_of_last_token(node, tokens)
26
- @token_table ||= build_token_table(tokens)
27
- e = node.loc.expression.end
28
- (0...e.column).to_a.reverse.find do |c|
29
- ix = @token_table[[e.line, c]]
30
- return ix if ix
31
- end
32
- end
33
-
34
- def build_token_table(tokens)
35
- table = {}
36
- tokens.each_with_index do |t, ix|
37
- table[[t.pos.line, t.pos.column]] = ix
38
- end
39
- table
40
- end
41
- end
42
-
43
- class SpaceAroundOperators < Cop
44
- include SurroundingSpace
45
- MSG_MISSING = "Surrounding space missing for operator '%s'."
46
- MSG_DETECTED = 'Space around operator ** detected.'
47
-
48
- BINARY_OPERATORS =
49
- [:tEQL, :tAMPER2, :tPIPE, :tCARET, :tPLUS, :tMINUS, :tSTAR2,
50
- :tDIVIDE, :tPERCENT, :tEH, :tCOLON, :tANDOP, :tOROP, :tMATCH,
51
- :tNMATCH, :tEQ, :tNEQ, :tGT, :tRSHFT, :tGEQ, :tLT,
52
- :tLSHFT, :tLEQ, :tASSOC, :tEQQ, :tCMP, :tOP_ASGN]
53
-
54
- def inspect(source, tokens, sexp, comments)
55
- @source = source
56
- positions_not_to_check = get_positions_not_to_check(tokens, sexp)
57
-
58
- tokens.each_cons(3) do |token_before, token, token_after|
59
- next if token_before.type == :kDEF # TODO: remove?
60
- next if positions_not_to_check.include?(token.pos)
61
-
62
- case token.type
63
- when :tPOW
64
- if has_space?(token_before, token, token_after)
65
- add_offence(:convention, token.pos.line, MSG_DETECTED)
66
- end
67
- when *BINARY_OPERATORS
68
- check_missing_space(token_before, token, token_after)
69
- end
70
- end
71
- end
72
-
73
- # Returns an array of positions marking the tokens that this cop
74
- # should not check, either because the token is not an operator
75
- # or because another cop does the check.
76
- def get_positions_not_to_check(tokens, sexp)
77
- positions_not_to_check = []
78
- do_not_check_block_arg_pipes(sexp, positions_not_to_check)
79
- do_not_check_param_default(tokens, sexp, positions_not_to_check)
80
- do_not_check_class_lshift_self(tokens, sexp, positions_not_to_check)
81
- do_not_check_def_things(tokens, sexp, positions_not_to_check)
82
- do_not_check_singleton_operator_defs(tokens, sexp,
83
- positions_not_to_check)
84
- positions_not_to_check
85
- end
86
-
87
- def do_not_check_block_arg_pipes(sexp, positions_not_to_check)
88
- # each { |a| }
89
- # ^ ^
90
- on_node(:block, sexp) do |b|
91
- on_node(:args, b) do |a|
92
- positions_not_to_check << a.loc.begin << a.loc.end if a.loc.begin
93
- end
94
- end
95
- end
96
-
97
- def do_not_check_param_default(tokens, sexp, positions_not_to_check)
98
- # func(a, b=nil)
99
- # ^
100
- on_node(:optarg, sexp) do |optarg|
101
- _arg, equals, _value = tokens[index_of_first_token(optarg, tokens),
102
- 3]
103
- positions_not_to_check << equals.pos
104
- end
105
- end
106
-
107
- def do_not_check_class_lshift_self(tokens, sexp, positions_not_to_check)
108
- # class <<self
109
- # ^
110
- on_node(:sclass, sexp) do |sclass|
111
- ix = index_of_first_token(sclass, tokens)
112
- if tokens[ix, 2].map(&:type) == [:kCLASS, :tLSHFT]
113
- positions_not_to_check << tokens[ix + 1].pos
114
- end
115
- end
116
- end
117
-
118
- def do_not_check_def_things(tokens, sexp, positions_not_to_check)
119
- # def +(other)
120
- # ^
121
- on_node(:def, sexp) do |def_node|
122
- # def each &block
123
- # ^
124
- # def each *args
125
- # ^
126
- on_node([:blockarg, :restarg], def_node) do |arg_node|
127
- positions_not_to_check << tokens[index_of_first_token(arg_node,
128
- tokens)].pos
129
- end
130
- positions_not_to_check <<
131
- tokens[index_of_first_token(def_node, tokens) + 1].pos
132
- end
133
- end
134
-
135
- def do_not_check_singleton_operator_defs(tokens, sexp,
136
- positions_not_to_check)
137
- # def self.===(other)
138
- # ^
139
- on_node(:defs, sexp) do |defs_node|
140
- _receiver, name, _args = *defs_node
141
- ix = index_of_first_token(defs_node, tokens)
142
- name_token = tokens[ix..-1].find { |t| t.text == name.to_s }
143
- positions_not_to_check << name_token.pos
144
- end
145
- end
146
-
147
- def check_missing_space(token_before, token, token_after)
148
- unless has_space?(token_before, token, token_after)
149
- text = token.text.to_s + (token.type == :tOP_ASGN ? '=' : '')
150
- add_offence(:convention, token.pos.line, MSG_MISSING % text)
151
- end
152
- end
153
-
154
- def has_space?(token_before, token, token_after)
155
- space_between?(token_before, token) && space_between?(token,
156
- token_after)
157
- end
158
- end
159
-
160
- class SpaceAroundBraces < Cop
161
- include SurroundingSpace
162
- MSG_LEFT = "Surrounding space missing for '{'."
163
- MSG_RIGHT = "Space missing to the left of '}'."
164
-
165
- def inspect(source, tokens, sexp, comments)
166
- @source = source
167
- positions_not_to_check = get_positions_not_to_check(tokens, sexp)
168
- tokens.each_cons(2) do |t1, t2|
169
- next if ([t1.pos, t2.pos] - positions_not_to_check).size < 2
170
-
171
- type1, type2 = t1.type, t2.type
172
- # :tLBRACE in hash literals, :tLCURLY otherwise.
173
- next if [:tLCURLY, :tLBRACE].include?(type1) && type2 == :tRCURLY
174
- check(t1, t2, MSG_LEFT) if type1 == :tLCURLY || type2 == :tLCURLY
175
- check(t1, t2, MSG_RIGHT) if type2 == :tRCURLY
176
- end
177
- end
178
-
179
- def get_positions_not_to_check(tokens, sexp)
180
- positions_not_to_check = []
181
-
182
- on_node(:hash, sexp) do |hash|
183
- b_ix = index_of_first_token(hash, tokens)
184
- e_ix = index_of_last_token(hash, tokens)
185
- positions_not_to_check << tokens[b_ix].pos << tokens[e_ix].pos
186
- end
187
-
188
- # TODO: Check braces inside string/symbol/regexp/xstr interpolation.
189
- on_node([:dstr, :dsym, :regexp, :xstr], sexp) do |s|
190
- b_ix = index_of_first_token(s, tokens)
191
- e_ix = index_of_last_token(s, tokens)
192
- tokens[b_ix..e_ix].each do |t|
193
- positions_not_to_check << t.pos if t.type == :tRCURLY
194
- end
195
- end
196
-
197
- positions_not_to_check
198
- end
199
-
200
- def check(t1, t2, msg)
201
- unless space_between?(t1, t2)
202
- add_offence(:convention, t1.pos.line, msg)
203
- end
204
- end
205
- end
206
-
207
- module SpaceInside
208
- include SurroundingSpace
209
- MSG = 'Space inside %s detected.'
210
-
211
- def inspect(source, tokens, sexp, comments)
212
- @source = source
213
- left, right, kind = specifics
214
- tokens.each_cons(2) do |t1, t2|
215
- if t1.type == left || t2.type == right
216
- if t2.pos.line == t1.pos.line && space_between?(t1, t2)
217
- add_offence(:convention, t1.pos.line, MSG % kind)
218
- end
219
- end
220
- end
221
- end
222
- end
223
-
224
- class SpaceInsideParens < Cop
225
- include SpaceInside
226
-
227
- def specifics
228
- [:tLPAREN2, :tRPAREN, 'parentheses']
229
- end
230
- end
231
-
232
- class SpaceInsideBrackets < Cop
233
- include SpaceInside
234
-
235
- def specifics
236
- [:tLBRACK, :tRBRACK, 'square brackets']
237
- end
238
- end
239
-
240
- class SpaceInsideHashLiteralBraces < Cop
241
- include SurroundingSpace
242
- MSG = 'Space inside hash literal braces %s.'
243
-
244
- def inspect(source, tokens, sexp, comments)
245
- @source = source
246
- on_node(:hash, sexp) do |hash|
247
- b_ix = index_of_first_token(hash, tokens)
248
- e_ix = index_of_last_token(hash, tokens)
249
- if tokens[b_ix].type == :tLBRACE # Hash literal with braces?
250
- check(tokens[b_ix], tokens[b_ix + 1])
251
- check(tokens[e_ix - 1], tokens[e_ix])
252
- end
253
- end
254
- end
255
-
256
- def check(t1, t2)
257
- types = [t1, t2].map(&:type)
258
- braces = [:tLBRACE, :tRCURLY]
259
- return if types == braces || (braces - types).size == 2
260
- has_space = space_between?(t1, t2)
261
- is_offence, word = if self.class.config['EnforcedStyleIsWithSpaces']
262
- [!has_space, 'missing']
263
- else
264
- [has_space, 'detected']
265
- end
266
- add_offence(:convention, t1.pos.line, MSG % word) if is_offence
267
- end
268
- end
269
-
270
- class SpaceAroundEqualsInParameterDefault < Cop
271
- include SurroundingSpace
272
- MSG = 'Surrounding space missing in default value assignment.'
273
-
274
- def inspect(source, tokens, sexp, comments)
275
- @source = source
276
- on_node(:optarg, sexp) do |optarg|
277
- arg, equals, value = tokens[index_of_first_token(optarg, tokens), 3]
278
- unless space_between?(arg, equals) && space_between?(equals, value)
279
- add_offence(:convention, equals.pos.line, MSG)
280
- end
281
- end
282
- end
283
- end
284
- end
285
- end