rubocop 0.18.1 → 0.19.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 (398) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +65 -1
  4. data/Gemfile +0 -3
  5. data/LICENSE.txt +1 -1
  6. data/README.md +179 -77
  7. data/Rakefile +8 -0
  8. data/config/default.yml +151 -14
  9. data/config/enabled.yml +65 -8
  10. data/lib/rubocop.rb +19 -4
  11. data/lib/rubocop/cli.rb +2 -1
  12. data/lib/rubocop/comment_config.rb +97 -0
  13. data/lib/rubocop/config.rb +1 -1
  14. data/lib/rubocop/config_loader.rb +3 -2
  15. data/lib/rubocop/config_store.rb +6 -2
  16. data/lib/rubocop/cop/commissioner.rb +2 -2
  17. data/lib/rubocop/cop/cop.rb +22 -26
  18. data/lib/rubocop/cop/lint/ambiguous_operator.rb +2 -2
  19. data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +1 -1
  20. data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -1
  21. data/lib/rubocop/cop/lint/block_alignment.rb +6 -6
  22. data/lib/rubocop/cop/lint/condition_position.rb +1 -1
  23. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  24. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +60 -0
  25. data/lib/rubocop/cop/lint/else_layout.rb +1 -1
  26. data/lib/rubocop/cop/lint/empty_ensure.rb +1 -1
  27. data/lib/rubocop/cop/lint/end_alignment.rb +14 -12
  28. data/lib/rubocop/cop/lint/end_in_method.rb +1 -1
  29. data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
  30. data/lib/rubocop/cop/lint/eval.rb +1 -1
  31. data/lib/rubocop/cop/lint/handle_exceptions.rb +1 -1
  32. data/lib/rubocop/cop/lint/literal_in_condition.rb +13 -2
  33. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +28 -0
  34. data/lib/rubocop/cop/lint/loop.rb +4 -4
  35. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
  36. data/lib/rubocop/cop/lint/require_parentheses.rb +6 -6
  37. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  38. data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +2 -2
  39. data/lib/rubocop/cop/lint/string_conversion_in_interpolation.rb +30 -0
  40. data/lib/rubocop/cop/lint/syntax.rb +5 -5
  41. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  42. data/lib/rubocop/cop/lint/useless_assignment.rb +5 -5
  43. data/lib/rubocop/cop/lint/useless_comparison.rb +1 -1
  44. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
  45. data/lib/rubocop/cop/lint/void.rb +5 -5
  46. data/lib/rubocop/cop/mixin/autocorrect_alignment.rb +8 -5
  47. data/lib/rubocop/cop/mixin/code_length.rb +2 -2
  48. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +7 -7
  49. data/lib/rubocop/cop/mixin/configurable_max.rb +1 -1
  50. data/lib/rubocop/cop/mixin/configurable_naming.rb +1 -1
  51. data/lib/rubocop/cop/mixin/if_then_else.rb +1 -1
  52. data/lib/rubocop/cop/mixin/negative_conditional.rb +1 -1
  53. data/lib/rubocop/cop/mixin/parser_diagnostic.rb +2 -2
  54. data/lib/rubocop/cop/mixin/space_after_punctuation.rb +3 -2
  55. data/lib/rubocop/cop/mixin/space_inside.rb +1 -1
  56. data/lib/rubocop/cop/mixin/statement_modifier.rb +1 -0
  57. data/lib/rubocop/cop/mixin/string_help.rb +4 -4
  58. data/lib/rubocop/cop/{offence.rb → offense.rb} +7 -7
  59. data/lib/rubocop/cop/rails/action_filter.rb +73 -0
  60. data/lib/rubocop/cop/rails/default_scope.rb +1 -1
  61. data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +1 -1
  62. data/lib/rubocop/cop/rails/output.rb +1 -10
  63. data/lib/rubocop/cop/rails/read_attribute.rb +1 -1
  64. data/lib/rubocop/cop/rails/scope_args.rb +33 -0
  65. data/lib/rubocop/cop/rails/validation.rb +1 -1
  66. data/lib/rubocop/cop/style/access_modifier_indentation.rb +1 -1
  67. data/lib/rubocop/cop/style/accessor_method_name.rb +2 -2
  68. data/lib/rubocop/cop/style/alias.rb +2 -2
  69. data/lib/rubocop/cop/style/align_array.rb +1 -1
  70. data/lib/rubocop/cop/style/align_hash.rb +29 -2
  71. data/lib/rubocop/cop/style/align_parameters.rb +16 -2
  72. data/lib/rubocop/cop/style/and_or.rb +2 -2
  73. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  74. data/lib/rubocop/cop/style/ascii_identifiers.rb +1 -1
  75. data/lib/rubocop/cop/style/attr.rb +1 -1
  76. data/lib/rubocop/cop/style/begin_block.rb +1 -1
  77. data/lib/rubocop/cop/style/block_comments.rb +1 -1
  78. data/lib/rubocop/cop/style/block_nesting.rb +1 -1
  79. data/lib/rubocop/cop/style/blocks.rb +2 -2
  80. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +2 -2
  81. data/lib/rubocop/cop/style/case_equality.rb +1 -1
  82. data/lib/rubocop/cop/style/case_indentation.rb +2 -2
  83. data/lib/rubocop/cop/style/character_literal.rb +2 -2
  84. data/lib/rubocop/cop/style/class_and_module_camel_case.rb +1 -1
  85. data/lib/rubocop/cop/style/class_and_module_children.rb +69 -0
  86. data/lib/rubocop/cop/style/class_methods.rb +1 -1
  87. data/lib/rubocop/cop/style/class_vars.rb +3 -3
  88. data/lib/rubocop/cop/style/collection_methods.rb +4 -4
  89. data/lib/rubocop/cop/style/colon_method_call.rb +1 -1
  90. data/lib/rubocop/cop/style/comment_annotation.rb +1 -1
  91. data/lib/rubocop/cop/style/constant_name.rb +1 -1
  92. data/lib/rubocop/cop/style/cyclomatic_complexity.rb +2 -2
  93. data/lib/rubocop/cop/style/def_parentheses.rb +2 -2
  94. data/lib/rubocop/cop/style/documentation.rb +1 -1
  95. data/lib/rubocop/cop/style/dot_position.rb +10 -11
  96. data/lib/rubocop/cop/style/double_negation.rb +40 -0
  97. data/lib/rubocop/cop/style/empty_line_between_defs.rb +8 -1
  98. data/lib/rubocop/cop/style/empty_lines.rb +3 -2
  99. data/lib/rubocop/cop/style/empty_lines_around_access_modifier.rb +1 -1
  100. data/lib/rubocop/cop/style/empty_lines_around_body.rb +1 -1
  101. data/lib/rubocop/cop/style/empty_literal.rb +3 -3
  102. data/lib/rubocop/cop/style/encoding.rb +1 -1
  103. data/lib/rubocop/cop/style/end_block.rb +1 -1
  104. data/lib/rubocop/cop/style/end_of_line.rb +2 -2
  105. data/lib/rubocop/cop/style/even_odd.rb +2 -2
  106. data/lib/rubocop/cop/style/favor_join.rb +1 -1
  107. data/lib/rubocop/cop/style/file_name.rb +29 -0
  108. data/lib/rubocop/cop/style/final_newline.rb +1 -1
  109. data/lib/rubocop/cop/style/flip_flop.rb +2 -2
  110. data/lib/rubocop/cop/style/for.rb +2 -2
  111. data/lib/rubocop/cop/style/format_string.rb +66 -0
  112. data/lib/rubocop/cop/style/global_vars.rb +2 -2
  113. data/lib/rubocop/cop/style/hash_methods.rb +1 -1
  114. data/lib/rubocop/cop/style/hash_syntax.rb +3 -3
  115. data/lib/rubocop/cop/style/if_unless_modifier.rb +2 -1
  116. data/lib/rubocop/cop/style/indent_array.rb +41 -0
  117. data/lib/rubocop/cop/style/indent_hash.rb +119 -0
  118. data/lib/rubocop/cop/style/indentation_consistency.rb +3 -11
  119. data/lib/rubocop/cop/style/indentation_width.rb +44 -23
  120. data/lib/rubocop/cop/style/lambda.rb +2 -2
  121. data/lib/rubocop/cop/style/lambda_call.rb +3 -3
  122. data/lib/rubocop/cop/style/leading_comment_space.rb +1 -1
  123. data/lib/rubocop/cop/style/line_end_concatenation.rb +7 -3
  124. data/lib/rubocop/cop/style/line_length.rb +2 -2
  125. data/lib/rubocop/cop/style/method_call_parentheses.rb +2 -2
  126. data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -2
  127. data/lib/rubocop/cop/style/method_def_parentheses.rb +9 -7
  128. data/lib/rubocop/cop/style/module_function.rb +1 -1
  129. data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
  130. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -1
  131. data/lib/rubocop/cop/style/nested_ternary_operator.rb +2 -2
  132. data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
  133. data/lib/rubocop/cop/style/not.rb +1 -1
  134. data/lib/rubocop/cop/style/numeric_literals.rb +5 -5
  135. data/lib/rubocop/cop/style/op_method.rb +2 -2
  136. data/lib/rubocop/cop/style/parameter_lists.rb +1 -1
  137. data/lib/rubocop/cop/style/parentheses_around_condition.rb +5 -4
  138. data/lib/rubocop/cop/style/percent_literal_delimiters.rb +143 -0
  139. data/lib/rubocop/cop/style/perl_backrefs.rb +1 -1
  140. data/lib/rubocop/cop/style/predicate_name.rb +1 -1
  141. data/lib/rubocop/cop/style/proc.rb +1 -1
  142. data/lib/rubocop/cop/style/raise_args.rb +2 -2
  143. data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
  144. data/lib/rubocop/cop/style/redundant_exception.rb +1 -1
  145. data/lib/rubocop/cop/style/redundant_return.rb +1 -1
  146. data/lib/rubocop/cop/style/redundant_self.rb +2 -2
  147. data/lib/rubocop/cop/style/regexp_literal.rb +45 -19
  148. data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
  149. data/lib/rubocop/cop/style/self_assignment.rb +73 -0
  150. data/lib/rubocop/cop/style/semicolon.rb +12 -8
  151. data/lib/rubocop/cop/style/signal_exception.rb +2 -2
  152. data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
  153. data/lib/rubocop/cop/style/single_line_methods.rb +38 -1
  154. data/lib/rubocop/cop/style/space_after_colon.rb +3 -3
  155. data/lib/rubocop/cop/style/space_after_comma.rb +1 -1
  156. data/lib/rubocop/cop/style/space_after_control_keyword.rb +1 -1
  157. data/lib/rubocop/cop/style/space_after_method_name.rb +11 -3
  158. data/lib/rubocop/cop/style/space_after_not.rb +1 -1
  159. data/lib/rubocop/cop/style/space_after_semicolon.rb +1 -1
  160. data/lib/rubocop/cop/style/space_around_equals_in_parameter_default.rb +41 -6
  161. data/lib/rubocop/cop/style/space_around_operators.rb +4 -4
  162. data/lib/rubocop/cop/style/space_before_block_braces.rb +63 -0
  163. data/lib/rubocop/cop/style/space_before_modifier_keyword.rb +1 -1
  164. data/lib/rubocop/cop/style/{space_around_block_braces.rb → space_inside_block_braces.rb} +15 -24
  165. data/lib/rubocop/cop/style/space_inside_hash_literal_braces.rb +14 -7
  166. data/lib/rubocop/cop/style/special_global_vars.rb +1 -1
  167. data/lib/rubocop/cop/style/string_literals.rb +1 -1
  168. data/lib/rubocop/cop/style/symbol_array.rb +1 -1
  169. data/lib/rubocop/cop/style/tab.rb +1 -1
  170. data/lib/rubocop/cop/style/trailing_blank_lines.rb +2 -2
  171. data/lib/rubocop/cop/style/trailing_comma.rb +4 -4
  172. data/lib/rubocop/cop/style/trailing_whitespace.rb +1 -1
  173. data/lib/rubocop/cop/style/trivial_accessors.rb +2 -2
  174. data/lib/rubocop/cop/style/unless_else.rb +1 -1
  175. data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
  176. data/lib/rubocop/cop/style/when_then.rb +1 -1
  177. data/lib/rubocop/cop/style/while_until_do.rb +1 -1
  178. data/lib/rubocop/cop/style/while_until_modifier.rb +2 -1
  179. data/lib/rubocop/cop/style/word_array.rb +2 -2
  180. data/lib/rubocop/cop/team.rb +24 -7
  181. data/lib/rubocop/cop/util.rb +3 -3
  182. data/lib/rubocop/cop/variable_inspector.rb +25 -13
  183. data/lib/rubocop/cop/variable_inspector/assignment.rb +1 -1
  184. data/lib/rubocop/cop/variable_inspector/reference.rb +1 -1
  185. data/lib/rubocop/cop/variable_inspector/scope.rb +1 -1
  186. data/lib/rubocop/cop/variable_inspector/variable.rb +2 -2
  187. data/lib/rubocop/cop/variable_inspector/variable_table.rb +1 -1
  188. data/lib/rubocop/file_inspector.rb +12 -13
  189. data/lib/rubocop/formatter/base_formatter.rb +4 -4
  190. data/lib/rubocop/formatter/clang_style_formatter.rb +2 -2
  191. data/lib/rubocop/formatter/disabled_config_formatter.rb +12 -12
  192. data/lib/rubocop/formatter/emacs_style_formatter.rb +3 -2
  193. data/lib/rubocop/formatter/file_list_formatter.rb +4 -4
  194. data/lib/rubocop/formatter/formatter_set.rb +2 -1
  195. data/lib/rubocop/formatter/fuubar_style_formatter.rb +76 -0
  196. data/lib/rubocop/formatter/json_formatter.rb +17 -16
  197. data/lib/rubocop/formatter/offense_count_formatter.rb +54 -0
  198. data/lib/rubocop/formatter/progress_formatter.rb +16 -16
  199. data/lib/rubocop/formatter/simple_text_formatter.rb +25 -25
  200. data/lib/rubocop/options.rb +8 -7
  201. data/lib/rubocop/processed_source.rb +3 -2
  202. data/lib/rubocop/source_parser.rb +1 -59
  203. data/lib/rubocop/version.rb +3 -3
  204. data/relnotes/0.19.0.md +70 -0
  205. data/rubocop-todo.yml +6 -6
  206. data/rubocop.gemspec +2 -1
  207. data/spec/rubocop/cli_spec.rb +431 -268
  208. data/spec/rubocop/comment_config_spec.rb +103 -0
  209. data/spec/rubocop/config_loader_spec.rb +4 -4
  210. data/spec/rubocop/cop/commissioner_spec.rb +7 -7
  211. data/spec/rubocop/cop/cop_spec.rb +17 -17
  212. data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +16 -16
  213. data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +5 -5
  214. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +19 -19
  215. data/spec/rubocop/cop/lint/block_alignment_spec.rb +52 -52
  216. data/spec/rubocop/cop/lint/condition_position_spec.rb +7 -7
  217. data/spec/rubocop/cop/lint/debugger_spec.rb +10 -10
  218. data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +33 -0
  219. data/spec/rubocop/cop/lint/else_layout_spec.rb +7 -7
  220. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +4 -4
  221. data/spec/rubocop/cop/lint/end_alignment_spec.rb +33 -34
  222. data/spec/rubocop/cop/lint/end_in_method_spec.rb +5 -5
  223. data/spec/rubocop/cop/lint/ensure_return_spec.rb +4 -4
  224. data/spec/rubocop/cop/lint/eval_spec.rb +8 -8
  225. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +4 -4
  226. data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +3 -3
  227. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +65 -10
  228. data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +21 -0
  229. data/spec/rubocop/cop/lint/loop_spec.rb +6 -6
  230. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +14 -14
  231. data/spec/rubocop/cop/lint/require_parentheses_spec.rb +15 -15
  232. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +21 -21
  233. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +16 -16
  234. data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +27 -0
  235. data/spec/rubocop/cop/lint/syntax_spec.rb +11 -11
  236. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +8 -8
  237. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +207 -169
  238. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +5 -5
  239. data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +4 -4
  240. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +17 -17
  241. data/spec/rubocop/cop/lint/void_spec.rb +8 -8
  242. data/spec/rubocop/cop/{offence_spec.rb → offense_spec.rb} +17 -17
  243. data/spec/rubocop/cop/rails/action_filter_spec.rb +69 -0
  244. data/spec/rubocop/cop/rails/default_scope_spec.rb +9 -9
  245. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +2 -2
  246. data/spec/rubocop/cop/rails/output_spec.rb +8 -18
  247. data/spec/rubocop/cop/rails/read_attribute_spec.rb +2 -2
  248. data/spec/rubocop/cop/rails/scope_args_spec.rb +25 -0
  249. data/spec/rubocop/cop/rails/validation_spec.rb +3 -3
  250. data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +38 -38
  251. data/spec/rubocop/cop/style/accessor_method_name_spec.rb +14 -14
  252. data/spec/rubocop/cop/style/alias_spec.rb +11 -11
  253. data/spec/rubocop/cop/style/align_array_spec.rb +23 -7
  254. data/spec/rubocop/cop/style/align_hash_spec.rb +111 -30
  255. data/spec/rubocop/cop/style/align_parameters_spec.rb +260 -187
  256. data/spec/rubocop/cop/style/and_or_spec.rb +6 -6
  257. data/spec/rubocop/cop/style/ascii_comments_spec.rb +3 -3
  258. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +5 -5
  259. data/spec/rubocop/cop/style/attr_spec.rb +2 -2
  260. data/spec/rubocop/cop/style/begin_block_spec.rb +2 -2
  261. data/spec/rubocop/cop/style/block_comments_spec.rb +3 -3
  262. data/spec/rubocop/cop/style/block_nesting_spec.rb +26 -26
  263. data/spec/rubocop/cop/style/blocks_spec.rb +8 -8
  264. data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +8 -8
  265. data/spec/rubocop/cop/style/case_equality_spec.rb +2 -2
  266. data/spec/rubocop/cop/style/case_indentation_spec.rb +21 -21
  267. data/spec/rubocop/cop/style/character_literal_spec.rb +6 -6
  268. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +4 -4
  269. data/spec/rubocop/cop/style/class_and_module_children_spec.rb +129 -0
  270. data/spec/rubocop/cop/style/class_length_spec.rb +9 -9
  271. data/spec/rubocop/cop/style/class_methods_spec.rb +8 -8
  272. data/spec/rubocop/cop/style/class_vars_spec.rb +4 -4
  273. data/spec/rubocop/cop/style/collection_methods_spec.rb +6 -6
  274. data/spec/rubocop/cop/style/colon_method_call_spec.rb +16 -16
  275. data/spec/rubocop/cop/style/comment_annotation_spec.rb +16 -16
  276. data/spec/rubocop/cop/style/constant_name_spec.rb +12 -12
  277. data/spec/rubocop/cop/style/cyclomatic_complexity_spec.rb +16 -16
  278. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +6 -6
  279. data/spec/rubocop/cop/style/documentation_spec.rb +14 -14
  280. data/spec/rubocop/cop/style/dot_position_spec.rb +23 -26
  281. data/spec/rubocop/cop/style/double_negation_spec.rb +22 -0
  282. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +22 -14
  283. data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +4 -4
  284. data/spec/rubocop/cop/style/empty_lines_around_body_spec.rb +20 -20
  285. data/spec/rubocop/cop/style/empty_lines_spec.rb +17 -6
  286. data/spec/rubocop/cop/style/empty_literal_spec.rb +20 -20
  287. data/spec/rubocop/cop/style/encoding_spec.rb +5 -5
  288. data/spec/rubocop/cop/style/end_block_spec.rb +2 -2
  289. data/spec/rubocop/cop/style/end_of_line_spec.rb +4 -4
  290. data/spec/rubocop/cop/style/even_odd_spec.rb +18 -18
  291. data/spec/rubocop/cop/style/favor_join_spec.rb +7 -7
  292. data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +7 -7
  293. data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +3 -3
  294. data/spec/rubocop/cop/style/file_name_spec.rb +71 -0
  295. data/spec/rubocop/cop/style/final_newline_spec.rb +4 -4
  296. data/spec/rubocop/cop/style/flip_flop_spec.rb +4 -4
  297. data/spec/rubocop/cop/style/for_spec.rb +13 -13
  298. data/spec/rubocop/cop/style/format_string_spec.rb +136 -0
  299. data/spec/rubocop/cop/style/global_vars_spec.rb +7 -7
  300. data/spec/rubocop/cop/style/hash_methods_spec.rb +6 -6
  301. data/spec/rubocop/cop/style/hash_syntax_spec.rb +11 -11
  302. data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +29 -11
  303. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +1 -1
  304. data/spec/rubocop/cop/style/indent_array_spec.rb +136 -0
  305. data/spec/rubocop/cop/style/indent_hash_spec.rb +238 -0
  306. data/spec/rubocop/cop/style/indentation_consistency_spec.rb +69 -49
  307. data/spec/rubocop/cop/style/indentation_width_spec.rb +264 -128
  308. data/spec/rubocop/cop/style/lambda_call_spec.rb +14 -14
  309. data/spec/rubocop/cop/style/lambda_spec.rb +7 -7
  310. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +15 -15
  311. data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +11 -4
  312. data/spec/rubocop/cop/style/line_length_spec.rb +5 -5
  313. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +5 -5
  314. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +9 -9
  315. data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +19 -19
  316. data/spec/rubocop/cop/style/method_length_spec.rb +17 -17
  317. data/spec/rubocop/cop/style/method_name_spec.rb +21 -21
  318. data/spec/rubocop/cop/style/module_function_spec.rb +3 -3
  319. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +13 -13
  320. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +10 -10
  321. data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +3 -3
  322. data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +3 -3
  323. data/spec/rubocop/cop/style/nil_comparison_spec.rb +7 -7
  324. data/spec/rubocop/cop/style/not_spec.rb +6 -11
  325. data/spec/rubocop/cop/style/numeric_literals_spec.rb +8 -8
  326. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +1 -1
  327. data/spec/rubocop/cop/style/op_method_spec.rb +13 -13
  328. data/spec/rubocop/cop/style/parameter_lists_spec.rb +6 -6
  329. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +11 -10
  330. data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +250 -0
  331. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +2 -2
  332. data/spec/rubocop/cop/style/predicate_name_spec.rb +3 -3
  333. data/spec/rubocop/cop/style/proc_spec.rb +4 -4
  334. data/spec/rubocop/cop/style/raise_args_spec.rb +20 -20
  335. data/spec/rubocop/cop/style/redundant_begin_spec.rb +6 -6
  336. data/spec/rubocop/cop/style/redundant_exception_spec.rb +6 -6
  337. data/spec/rubocop/cop/style/redundant_return_spec.rb +22 -22
  338. data/spec/rubocop/cop/style/redundant_self_spec.rb +14 -14
  339. data/spec/rubocop/cop/style/regexp_literal_spec.rb +88 -67
  340. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +17 -17
  341. data/spec/rubocop/cop/style/self_assignment_spec.rb +43 -0
  342. data/spec/rubocop/cop/style/semicolon_spec.rb +31 -17
  343. data/spec/rubocop/cop/style/signal_exception_spec.rb +29 -29
  344. data/spec/rubocop/cop/style/single_line_block_params_spec.rb +6 -6
  345. data/spec/rubocop/cop/style/single_line_methods_spec.rb +44 -6
  346. data/spec/rubocop/cop/style/space_after_colon_spec.rb +1 -1
  347. data/spec/rubocop/cop/style/space_after_comma_spec.rb +3 -3
  348. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +12 -12
  349. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +8 -8
  350. data/spec/rubocop/cop/style/space_after_not_spec.rb +3 -3
  351. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +1 -1
  352. data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +63 -21
  353. data/spec/rubocop/cop/style/space_around_operators_spec.rb +24 -24
  354. data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +72 -0
  355. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +4 -4
  356. data/spec/rubocop/cop/style/{space_around_block_braces_spec.rb → space_inside_block_braces_spec.rb} +39 -41
  357. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +1 -1
  358. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +15 -15
  359. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +1 -1
  360. data/spec/rubocop/cop/style/special_global_vars_spec.rb +10 -10
  361. data/spec/rubocop/cop/style/string_literals_spec.rb +31 -31
  362. data/spec/rubocop/cop/style/symbol_array_spec.rb +9 -9
  363. data/spec/rubocop/cop/style/tab_spec.rb +3 -3
  364. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +3 -3
  365. data/spec/rubocop/cop/style/trailing_comma_spec.rb +32 -32
  366. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +5 -5
  367. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +39 -39
  368. data/spec/rubocop/cop/style/unless_else_spec.rb +1 -1
  369. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +12 -12
  370. data/spec/rubocop/cop/style/variable_name_spec.rb +21 -21
  371. data/spec/rubocop/cop/style/when_then_spec.rb +1 -1
  372. data/spec/rubocop/cop/style/while_until_do_spec.rb +8 -8
  373. data/spec/rubocop/cop/style/while_until_modifier_spec.rb +25 -7
  374. data/spec/rubocop/cop/style/word_array_spec.rb +23 -23
  375. data/spec/rubocop/cop/team_spec.rb +14 -14
  376. data/spec/rubocop/file_inspector_spec.rb +14 -12
  377. data/spec/rubocop/formatter/base_formatter_spec.rb +19 -19
  378. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +14 -14
  379. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +7 -7
  380. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +7 -7
  381. data/spec/rubocop/formatter/file_list_formatter_spec.rb +4 -4
  382. data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +129 -0
  383. data/spec/rubocop/formatter/json_formatter_spec.rb +23 -19
  384. data/spec/rubocop/formatter/offense_count_formatter_spec.rb +77 -0
  385. data/spec/rubocop/formatter/progress_formatter_spec.rb +27 -27
  386. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +16 -16
  387. data/spec/rubocop/options_spec.rb +7 -8
  388. data/spec/rubocop/source_parser_spec.rb +0 -54
  389. data/spec/spec_helper.rb +11 -7
  390. data/spec/support/file_helper.rb +1 -1
  391. data/spec/support/mri_syntax_checker.rb +4 -4
  392. data/spec/support/shared_examples.rb +6 -6
  393. data/spec/support/statement_modifier_helper.rb +3 -3
  394. metadata +76 -16
  395. data/lib/rubocop/cop/style/favor_sprintf.rb +0 -26
  396. data/lib/rubocop/formatter/offence_count_formatter.rb +0 -49
  397. data/spec/rubocop/cop/style/favor_sprintf_spec.rb +0 -47
  398. data/spec/rubocop/formatter/offence_count_formatter_spec.rb +0 -52
@@ -13,7 +13,7 @@ module Rubocop
13
13
 
14
14
  def check(node, *_)
15
15
  on_node(:postexe, node) do |end_node|
16
- add_offence(end_node, :keyword)
16
+ add_offense(end_node, :keyword)
17
17
  end
18
18
  end
19
19
  end
@@ -13,7 +13,7 @@ module Rubocop
13
13
  return unless ensure_body
14
14
 
15
15
  on_node(:return, ensure_body) do |e|
16
- add_offence(e, :expression)
16
+ add_offense(e, :expression)
17
17
  end
18
18
  end
19
19
  end
@@ -10,7 +10,7 @@ module Rubocop
10
10
  def on_send(node)
11
11
  receiver, method_name, = *node
12
12
 
13
- add_offence(node, :selector) if receiver.nil? && method_name == :eval
13
+ add_offense(node, :selector) if receiver.nil? && method_name == :eval
14
14
  end
15
15
  end
16
16
  end
@@ -10,7 +10,7 @@ module Rubocop
10
10
  def on_resbody(node)
11
11
  _exc_list_node, _exc_var_node, body_node = *node
12
12
 
13
- add_offence(node, :expression) unless body_node
13
+ add_offense(node, :expression) unless body_node
14
14
  end
15
15
  end
16
16
  end
@@ -43,6 +43,17 @@ module Rubocop
43
43
  check_for_literal(node)
44
44
  end
45
45
 
46
+ def on_case(node)
47
+ cond, *whens, _else = *node
48
+ if cond
49
+ handle_node(cond)
50
+ else
51
+ whens.each do |when_node|
52
+ check_for_literal(when_node)
53
+ end
54
+ end
55
+ end
56
+
46
57
  def message(node)
47
58
  MSG.format(node.loc.expression.source)
48
59
  end
@@ -54,7 +65,7 @@ module Rubocop
54
65
 
55
66
  # if the cond node is literal we obviously have a problem
56
67
  if literal?(cond)
57
- add_offence(cond, :expression)
68
+ add_offense(cond, :expression)
58
69
  else
59
70
  # alternatively we have to consider a logical node with a
60
71
  # literal argument
@@ -94,7 +105,7 @@ module Rubocop
94
105
 
95
106
  def handle_node(node)
96
107
  if literal?(node)
97
- add_offence(node, :expression)
108
+ add_offense(node, :expression)
98
109
  elsif [:send, :and, :or, :begin].include?(node.type)
99
110
  check_node(node)
100
111
  end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ module Rubocop
4
+ module Cop
5
+ module Lint
6
+ # This cop checks for interpolated literals.
7
+ #
8
+ # @example
9
+ #
10
+ # "result is #{10}"
11
+ class LiteralInInterpolation < Cop
12
+ LITERALS = [:str, :dstr, :int, :float, :array,
13
+ :hash, :regexp, :nil, :true, :false]
14
+
15
+ MSG = 'Literal interpolation detected.'
16
+
17
+ def on_dstr(node)
18
+ node.children.select { |n| n.type == :begin }.each do |begin_node|
19
+ final_node = begin_node.children.last
20
+ next unless LITERALS.include?(final_node.type)
21
+
22
+ add_offense(final_node, :expression)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -9,17 +9,17 @@ module Rubocop
9
9
  'begin/end/until(or while).'
10
10
 
11
11
  def on_while_post(node)
12
- register_offence(node)
12
+ register_offense(node)
13
13
  end
14
14
 
15
15
  def on_until_post(node)
16
- register_offence(node)
16
+ register_offense(node)
17
17
  end
18
18
 
19
19
  private
20
20
 
21
- def register_offence(node)
22
- add_offence(node, :keyword)
21
+ def register_offense(node)
22
+ add_offense(node, :keyword)
23
23
  end
24
24
  end
25
25
  end
@@ -24,7 +24,7 @@ module Rubocop
24
24
  Parser::Source::Range.new(expr.source_buffer,
25
25
  expr.begin_pos - space_length,
26
26
  expr.begin_pos)
27
- add_offence(nil, space_range)
27
+ add_offense(nil, space_range)
28
28
  end
29
29
  end
30
30
  end
@@ -21,7 +21,7 @@ module Rubocop
21
21
  include IfNode
22
22
 
23
23
  MSG = 'Use parentheses in the method call to avoid confusion about ' \
24
- 'precedence.'
24
+ 'precedence.'
25
25
 
26
26
  def on_send(node)
27
27
  _receiver, method_name, *args = *node
@@ -42,17 +42,17 @@ module Rubocop
42
42
 
43
43
  def check_ternary(arg, node)
44
44
  condition, _, _ = *arg
45
- if offence?(condition)
45
+ if offense?(condition)
46
46
  expr = node.loc.expression
47
47
  range = Parser::Source::Range.new(expr.source_buffer,
48
48
  expr.begin_pos,
49
49
  condition.loc.expression.end_pos)
50
- add_offence(range, range)
50
+ add_offense(range, range)
51
51
  end
52
52
  end
53
53
 
54
54
  def check_send(arg, node)
55
- add_offence(node, :expression) if offence?(arg)
55
+ add_offense(node, :expression) if offense?(arg)
56
56
  end
57
57
 
58
58
  def predicate?(method_name)
@@ -60,10 +60,10 @@ module Rubocop
60
60
  end
61
61
 
62
62
  def parentheses?(node)
63
- node.loc.respond_to?(:end) && !!node.loc.end
63
+ node.loc.respond_to?(:end) && node.loc.end
64
64
  end
65
65
 
66
- def offence?(node)
66
+ def offense?(node)
67
67
  [:and, :or].include?(node.type)
68
68
  end
69
69
  end
@@ -11,7 +11,7 @@ module Rubocop
11
11
  return unless node.children.first
12
12
  rescue_args = node.children.first.children
13
13
  if rescue_args.any? { |a| targets_exception?(a) }
14
- add_offence(node, :expression)
14
+ add_offense(node, :expression)
15
15
  end
16
16
  end
17
17
 
@@ -22,8 +22,8 @@ module Rubocop
22
22
  outer_local_variable = variable_table.find_variable(variable.name)
23
23
  return unless outer_local_variable
24
24
 
25
- message = sprintf(MSG, variable.name)
26
- add_offence(variable.declaration_node, :expression, message)
25
+ message = format(MSG, variable.name)
26
+ add_offense(variable.declaration_node, :expression, message)
27
27
  end
28
28
  end
29
29
  end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ module Rubocop
4
+ module Cop
5
+ module Lint
6
+ # This cop checks for string conversion in string interpolation,
7
+ # which is redundant.
8
+ #
9
+ # @example
10
+ #
11
+ # "result is #{something.to_s}"
12
+ class StringConversionInInterpolation < Cop
13
+ MSG = 'Redundant use of Object#to_s in interpolation.'
14
+
15
+ def on_dstr(node)
16
+ node.children.select { |n| n.type == :begin }.each do |begin_node|
17
+ final_node = begin_node.children.last
18
+ next unless final_node.type == :send
19
+
20
+ _receiver, method_name, *args = *final_node
21
+
22
+ if method_name == :to_s && args.empty?
23
+ add_offense(final_node, :selector)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -4,18 +4,18 @@ module Rubocop
4
4
  module Cop
5
5
  module Lint
6
6
  # This is actually not a cop and inspects nothing. It just provides
7
- # methods to repack Parser's diagnostics into RuboCop's offences.
7
+ # methods to repack Parser's diagnostics into RuboCop's offenses.
8
8
  module Syntax
9
9
  COP_NAME = 'Syntax'.freeze
10
10
 
11
- def self.offences_from_diagnostics(diagnostics)
11
+ def self.offenses_from_diagnostics(diagnostics)
12
12
  diagnostics.map do |diagnostic|
13
- offence_from_diagnostic(diagnostic)
13
+ offense_from_diagnostic(diagnostic)
14
14
  end
15
15
  end
16
16
 
17
- def self.offence_from_diagnostic(diagnostic)
18
- Offence.new(
17
+ def self.offense_from_diagnostic(diagnostic)
18
+ Offense.new(
19
19
  diagnostic.level,
20
20
  diagnostic.location,
21
21
  diagnostic.message,
@@ -17,7 +17,7 @@ module Rubocop
17
17
 
18
18
  expressions.each_cons(2) do |e1, e2|
19
19
  if NODE_TYPES.include?(e1.type) || flow_command?(e1)
20
- add_offence(e2, :expression)
20
+ add_offense(e2, :expression)
21
21
  end
22
22
  end
23
23
  end
@@ -42,17 +42,17 @@ module Rubocop
42
42
  assignment.node.loc.name
43
43
  end
44
44
 
45
- add_offence(nil, location, message)
45
+ add_offense(nil, location, message)
46
46
  end
47
47
  end
48
48
 
49
49
  def message_for_useless_assignment(assignment)
50
50
  variable = assignment.variable
51
51
 
52
- message = sprintf(MSG, variable.name)
52
+ message = format(MSG, variable.name)
53
53
 
54
54
  if assignment.multiple_assignment?
55
- message << ". Use _ or _#{variable.name} as a variable name " +
55
+ message << ". Use _ or _#{variable.name} as a variable name " \
56
56
  "to indicate that it won't be used."
57
57
  elsif assignment.operator_assignment?
58
58
  return_value_node = return_value_node_of_scope(variable.scope)
@@ -79,8 +79,8 @@ module Rubocop
79
79
  def check_for_unused_block_local_variable(variable)
80
80
  return unless variable.block_local_variable?
81
81
  return unless variable.assignments.empty?
82
- message = sprintf(MSG, variable.name)
83
- add_offence(variable.declaration_node, :expression, message)
82
+ message = format(MSG, variable.name)
83
+ add_offense(variable.declaration_node, :expression, message)
84
84
  end
85
85
  end
86
86
  end
@@ -21,7 +21,7 @@ module Rubocop
21
21
  if OPS.include?(op)
22
22
  receiver, _method, args = *node
23
23
 
24
- add_offence(node, :selector) if receiver == args
24
+ add_offense(node, :selector) if receiver == args
25
25
  end
26
26
  end
27
27
  end
@@ -38,7 +38,7 @@ module Rubocop
38
38
  var_name, = *receiver
39
39
  return if tracker.contain_object_passed_as_argument?(var_name)
40
40
 
41
- add_offence(receiver,
41
+ add_offense(receiver,
42
42
  :name,
43
43
  MSG.format(receiver.loc.name.source))
44
44
  end
@@ -32,20 +32,20 @@ module Rubocop
32
32
 
33
33
  op = node.loc.selector.source
34
34
 
35
- add_offence(node, :selector, sprintf(OP_MSG, op)) if OPS.include?(op)
35
+ add_offense(node, :selector, format(OP_MSG, op)) if OPS.include?(op)
36
36
  end
37
37
 
38
38
  def check_for_var(node)
39
39
  if VARS.include?(node.type)
40
- add_offence(node, :name,
41
- sprintf(VAR_MSG, node.loc.name.source))
40
+ add_offense(node, :name,
41
+ format(VAR_MSG, node.loc.name.source))
42
42
  end
43
43
  end
44
44
 
45
45
  def check_for_literal(node)
46
46
  if LITERALS.include?(node.type)
47
- add_offence(node, :expression,
48
- sprintf(LIT_MSG, node.loc.expression.source))
47
+ add_offense(node, :expression,
48
+ format(LIT_MSG, node.loc.expression.source))
49
49
  end
50
50
  end
51
51
  end
@@ -6,11 +6,12 @@ module Rubocop
6
6
  # the left or to the right, amount being determined by the instance
7
7
  # variable @column_delta.
8
8
  module AutocorrectAlignment
9
- def check_alignment(items)
9
+ def check_alignment(items, base_column = nil)
10
+ base_column ||= items.first.loc.column unless items.empty?
10
11
  items.each_cons(2) do |prev, current|
11
12
  if current.loc.line > prev.loc.line && start_of_line?(current.loc)
12
- @column_delta = items.first.loc.column - current.loc.column
13
- add_offence(current, :expression) if @column_delta != 0
13
+ @column_delta = base_column - current.loc.column
14
+ add_offense(current, :expression) if @column_delta != 0
14
15
  end
15
16
  end
16
17
  end
@@ -31,9 +32,11 @@ module Rubocop
31
32
  each_line(expr) do |line_begin_pos, line|
32
33
  range = calculate_range(expr, line_begin_pos, column_delta)
33
34
  if column_delta > 0
34
- corrector.insert_before(range, ' ' * column_delta)
35
+ unless range.source == "\n"
36
+ corrector.insert_before(range, ' ' * column_delta)
37
+ end
35
38
  else
36
- remove(range, corrector)
39
+ remove(range, corrector) if range.source =~ /^[ \t]+$/
37
40
  end
38
41
  end
39
42
  end
@@ -17,8 +17,8 @@ module Rubocop
17
17
  def check(node, *_)
18
18
  length = code_length(node)
19
19
  if length > max_length
20
- add_offence(node, :keyword, sprintf(message, length,
21
- max_length)) do
20
+ add_offense(node, :keyword, format(message, length,
21
+ max_length)) do
22
22
  self.max = length
23
23
  end
24
24
  end
@@ -5,26 +5,26 @@ module Rubocop
5
5
  # Handles `EnforcedStyle` configuration parameters.
6
6
  module ConfigurableEnforcedStyle
7
7
  def opposite_style_detected
8
- self.config_to_allow_offences ||=
8
+ self.config_to_allow_offenses ||=
9
9
  { parameter_name => alternative_style.to_s }
10
- both_styles_detected if config_to_allow_offences['Enabled']
10
+ both_styles_detected if config_to_allow_offenses['Enabled']
11
11
  end
12
12
 
13
13
  def correct_style_detected
14
14
  # Enabled:true indicates, later when the opposite style is detected,
15
15
  # that the correct style is used somewhere.
16
- self.config_to_allow_offences ||= { 'Enabled' => true }
17
- both_styles_detected if config_to_allow_offences[parameter_name]
16
+ self.config_to_allow_offenses ||= { 'Enabled' => true }
17
+ both_styles_detected if config_to_allow_offenses[parameter_name]
18
18
  end
19
19
 
20
20
  def both_styles_detected
21
21
  # Both correct and opposite styles exist.
22
- self.config_to_allow_offences = { 'Enabled' => false }
22
+ self.config_to_allow_offenses = { 'Enabled' => false }
23
23
  end
24
24
 
25
25
  def unrecognized_style_detected
26
26
  # All we can do is to disable.
27
- self.config_to_allow_offences = { 'Enabled' => false }
27
+ self.config_to_allow_offenses = { 'Enabled' => false }
28
28
  end
29
29
 
30
30
  def style
@@ -40,7 +40,7 @@ module Rubocop
40
40
  a = cop_config['SupportedStyles'].map(&:to_sym)
41
41
  if a.size != 2
42
42
  fail 'alternative_style can only be used when there are exactly ' \
43
- '2 SupportedStyles'
43
+ '2 SupportedStyles'
44
44
  end
45
45
  style == a.first ? a.last : a.first
46
46
  end
@@ -6,7 +6,7 @@ module Rubocop
6
6
  # appropriate value with --auto-gen-config.
7
7
  module ConfigurableMax
8
8
  def max=(value)
9
- cfg = self.config_to_allow_offences ||= {}
9
+ cfg = self.config_to_allow_offenses ||= {}
10
10
  value = [cfg[parameter_name], value].max if cfg[parameter_name]
11
11
  cfg[parameter_name] = value
12
12
  end
@@ -19,7 +19,7 @@ module Rubocop
19
19
  if matches_config?(name)
20
20
  correct_style_detected
21
21
  else
22
- add_offence(node, range, message(style)) do
22
+ add_offense(node, range, message(style)) do
23
23
  opposite_style_detected
24
24
  end
25
25
  end