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
@@ -16,7 +16,7 @@ module Rubocop
16
16
  # We won't check modifier or ternary conditionals.
17
17
  return unless node.loc.expression.source =~ /\A(if|unless)\b/
18
18
  return unless offending_line(node)
19
- add_offence(node, :expression, error_message(node))
19
+ add_offense(node, :expression, error_message(node))
20
20
  end
21
21
  end
22
22
  end
@@ -15,7 +15,7 @@ module Rubocop
15
15
  if condition.type == :send
16
16
  _object, method = *condition
17
17
  if method == :! && !(node.loc.respond_to?(:else) && node.loc.else)
18
- add_offence(node, :expression, error_message)
18
+ add_offense(node, :expression, error_message)
19
19
  end
20
20
  end
21
21
  end
@@ -9,7 +9,7 @@ module Rubocop
9
9
  # diagnostic.reason == :my_interested_diagnostic_type
10
10
  # end
11
11
  #
12
- # If you want to use an alternative offence message rather than the one in
12
+ # If you want to use an alternative offense message rather than the one in
13
13
  # Parser's diagnostic, define `#alternative_message`.
14
14
  #
15
15
  # def alternative_message(diagnostic)
@@ -26,7 +26,7 @@ module Rubocop
26
26
  d.message.capitalize
27
27
  end
28
28
 
29
- add_offence(nil, d.location, message, d.level)
29
+ add_offense(nil, d.location, message, d.level)
30
30
  end
31
31
  end
32
32
  end
@@ -10,8 +10,9 @@ module Rubocop
10
10
  def investigate(processed_source)
11
11
  processed_source.tokens.each_cons(2) do |t1, t2|
12
12
  if kind(t1) && t1.pos.line == t2.pos.line &&
13
- t2.pos.column == t1.pos.column + offset(t1)
14
- add_offence(t1, t1.pos, sprintf(MSG, kind(t1)))
13
+ t2.pos.column == t1.pos.column + offset(t1) &&
14
+ t2.type != :tRPAREN
15
+ add_offense(t1, t1.pos, format(MSG, kind(t1)))
15
16
  end
16
17
  end
17
18
  end
@@ -17,7 +17,7 @@ module Rubocop
17
17
  range = Parser::Source::Range.new(processed_source.buffer,
18
18
  t1.pos.end_pos,
19
19
  t2.pos.begin_pos)
20
- add_offence(range, range, format(MSG, kind))
20
+ add_offense(range, range, format(MSG, kind))
21
21
  end
22
22
  end
23
23
  end
@@ -34,6 +34,7 @@ module Rubocop
34
34
  end
35
35
 
36
36
  def max_line_length
37
+ cop_config && cop_config['MaxLineLength'] ||
37
38
  config.for_cop('LineLength')['Max']
38
39
  end
39
40
 
@@ -3,8 +3,8 @@
3
3
  module Rubocop
4
4
  module Cop
5
5
  # Classes that include this module just implement functions to determine
6
- # what is an offence and how to do auto-correction. They get help with
7
- # adding offences for the faulty string nodes, and with filtering out
6
+ # what is an offense and how to do auto-correction. They get help with
7
+ # adding offenses for the faulty string nodes, and with filtering out
8
8
  # nodes.
9
9
  module StringHelp
10
10
  def on_str(node)
@@ -13,8 +13,8 @@ module Rubocop
13
13
  return unless node.loc.respond_to?(:begin) && node.loc.begin
14
14
  return if part_of_ignored_node?(node)
15
15
 
16
- if offence?(node)
17
- add_offence(node, :expression) { opposite_style_detected }
16
+ if offense?(node)
17
+ add_offense(node, :expression) { opposite_style_detected }
18
18
  else
19
19
  correct_style_detected
20
20
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Rubocop
4
4
  module Cop
5
- # An Offence represents a style violation detected by RuboCop.
6
- class Offence
5
+ # An offense represents a style violation detected by RuboCop.
6
+ class Offense
7
7
  include Comparable
8
8
 
9
9
  # @api private
@@ -57,7 +57,7 @@ module Rubocop
57
57
  # @!attribute [r] corrected
58
58
  #
59
59
  # @return [Boolean]
60
- # whether this offence is automatically corrected.
60
+ # whether this offense is automatically corrected.
61
61
  attr_reader :corrected
62
62
  alias_method :corrected?, :corrected
63
63
 
@@ -85,8 +85,8 @@ module Rubocop
85
85
  # @api private
86
86
  # This is just for debugging purpose.
87
87
  def to_s
88
- sprintf('%s:%3d:%3d: %s',
89
- severity_code, line, real_column, message)
88
+ format('%s:%3d:%3d: %s',
89
+ severity_code, line, real_column, message)
90
90
  end
91
91
 
92
92
  # @api private
@@ -111,7 +111,7 @@ module Rubocop
111
111
  # @api public
112
112
  #
113
113
  # @return [Boolean]
114
- # returns `true` if two offences contain same attributes
114
+ # returns `true` if two offenses contain same attributes
115
115
  def ==(other)
116
116
  severity == other.severity && line == other.line &&
117
117
  column == other.column && message == other.message &&
@@ -121,7 +121,7 @@ module Rubocop
121
121
  # @api public
122
122
  #
123
123
  # Returns `-1`, `0` or `+1`
124
- # if this offence is less than, equal to, or greater than `other`.
124
+ # if this offense is less than, equal to, or greater than `other`.
125
125
  #
126
126
  # @return [Integer]
127
127
  # comparison result
@@ -0,0 +1,73 @@
1
+ # encoding: utf-8
2
+
3
+ module Rubocop
4
+ module Cop
5
+ module Rails
6
+ # This cop enforces the consistent use of action filters methods.
7
+ #
8
+ # The cop is configurable and the enforce the use of older
9
+ # something_filter methods or the newer something_action methods.
10
+ class ActionFilter < Cop
11
+ include ConfigurableEnforcedStyle
12
+
13
+ MSG = 'Prefer %s over %s.'
14
+
15
+ FILTER_METHODS = [:before_filter, :skip_before_filter,
16
+ :after_filter, :around_filter]
17
+
18
+ ACTION_METHODS = [:before_action, :skip_before_action,
19
+ :after_action, :around_action]
20
+
21
+ def on_block(node)
22
+ method, _args, _body = *node
23
+
24
+ check_method_node(method)
25
+ end
26
+
27
+ def on_send(node)
28
+ receiver, _method_name, *_args = *node
29
+
30
+ check_method_node(node) if receiver.nil?
31
+ end
32
+
33
+ def autocorrect(node)
34
+ @corrections << lambda do |corrector|
35
+ corrector.replace(node.loc.selector,
36
+ preferred_method(node.loc.selector.source).to_s)
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ def check_method_node(node)
43
+ _receiver, method_name, *_args = *node
44
+
45
+ if offending_method?(method_name)
46
+ add_offense(
47
+ node, :selector,
48
+ format(MSG,
49
+ preferred_method(method_name),
50
+ method_name)
51
+ )
52
+ end
53
+ end
54
+
55
+ def offending_method?(method_name)
56
+ bad_methods.include?(method_name)
57
+ end
58
+
59
+ def bad_methods
60
+ style == :action ? FILTER_METHODS : ACTION_METHODS
61
+ end
62
+
63
+ def good_methods
64
+ style == :action ? ACTION_METHODS : FILTER_METHODS
65
+ end
66
+
67
+ def preferred_method(method)
68
+ good_methods[bad_methods.index(method.to_sym)]
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -26,7 +26,7 @@ module Rubocop
26
26
  first_arg = args[0]
27
27
 
28
28
  if first_arg.type != :block || lambda_or_proc?(first_arg)
29
- add_offence(first_arg, :expression)
29
+ add_offense(first_arg, :expression)
30
30
  end
31
31
  end
32
32
  end
@@ -9,7 +9,7 @@ module Rubocop
9
9
 
10
10
  def on_send(node)
11
11
  if command?(:has_and_belongs_to_many, node)
12
- add_offence(node, :selector)
12
+ add_offense(node, :selector)
13
13
  end
14
14
  end
15
15
  end
@@ -14,21 +14,12 @@ module Rubocop
14
14
  :pretty_print]
15
15
 
16
16
  def on_send(node)
17
- return if matches_blacklist?(processed_source)
18
17
  receiver, method_name, *_args = *node
19
18
 
20
19
  if receiver.nil? && BLACKLIST.include?(method_name)
21
- add_offence(node, :selector)
20
+ add_offense(node, :selector)
22
21
  end
23
22
  end
24
-
25
- def matches_blacklist?(source)
26
- ignore_paths.any? { |regex| source.buffer.name =~ /#{regex}/ }
27
- end
28
-
29
- def ignore_paths
30
- cop_config['Ignore']
31
- end
32
23
  end
33
24
  end
34
25
  end
@@ -19,7 +19,7 @@ module Rubocop
19
19
  receiver, method_name, *_args = *node
20
20
 
21
21
  if receiver.nil? && method_name == :read_attribute
22
- add_offence(node, :selector)
22
+ add_offense(node, :selector)
23
23
  end
24
24
  end
25
25
  end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ module Rubocop
4
+ module Cop
5
+ module Rails
6
+ # This cop checks for scope calls where it was passed
7
+ # a method (usually a scope) instead of a lambda/proc.
8
+ #
9
+ # @example
10
+ #
11
+ # # bad
12
+ # scope :something, where(something: true)
13
+ #
14
+ # # good
15
+ # scope :something, -> { where(something: true) }
16
+ class ScopeArgs < Cop
17
+ MSG = 'Use lambda/proc instead of a plain method call.'
18
+
19
+ def on_send(node)
20
+ return unless command?(:scope, node)
21
+
22
+ _receiver, _method_name, *args = *node
23
+
24
+ return unless args.size == 2
25
+
26
+ second_arg = args[1]
27
+
28
+ add_offense(second_arg, :expression) if second_arg.type == :send
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -22,7 +22,7 @@ module Rubocop
22
22
  receiver, method_name, *_args = *node
23
23
 
24
24
  if receiver.nil? && BLACKLIST.include?(method_name)
25
- add_offence(node, :selector)
25
+ add_offense(node, :selector)
26
26
  end
27
27
  end
28
28
  end
@@ -58,7 +58,7 @@ module Rubocop
58
58
  if @column_delta == 0
59
59
  correct_style_detected
60
60
  else
61
- add_offence(send_node, :expression) do
61
+ add_offense(send_node, :expression) do
62
62
  if offset == unexpected_indent_offset
63
63
  opposite_style_detected
64
64
  else
@@ -24,10 +24,10 @@ module Rubocop
24
24
 
25
25
  def check(node, method_name, args, _body)
26
26
  if bad_reader_name?(method_name.to_s, args)
27
- add_offence(node, :name,
27
+ add_offense(node, :name,
28
28
  'Do not prefix reader method names with get_.')
29
29
  elsif bad_writer_name?(method_name.to_s, args)
30
- add_offence(node, :name,
30
+ add_offense(node, :name,
31
31
  'Do not prefix writer method names with set_.')
32
32
  end
33
33
  end
@@ -13,7 +13,7 @@ module Rubocop
13
13
  _receiver, method_name = *method
14
14
 
15
15
  # using alias is the only option in certain scenarios
16
- # in such scenarios we don't want to report an offence
16
+ # in such scenarios we don't want to report an offense
17
17
  if method_name == :instance_exec
18
18
  on_node(:alias, body) { |n| ignore_node(n) }
19
19
  end
@@ -27,7 +27,7 @@ module Rubocop
27
27
 
28
28
  return if new.type == :gvar && old.type == :gvar
29
29
 
30
- add_offence(node, :keyword)
30
+ add_offense(node, :keyword)
31
31
  end
32
32
 
33
33
  def autocorrect(node)
@@ -9,7 +9,7 @@ module Rubocop
9
9
  include AutocorrectAlignment
10
10
 
11
11
  MSG = 'Align the elements of an array literal if they span more ' \
12
- 'than one line.'
12
+ 'than one line.'
13
13
 
14
14
  def on_array(node)
15
15
  check_alignment(node.children)
@@ -6,6 +6,8 @@ module Rubocop
6
6
  # Here we check if the keys, separators, and values of a multi-line hash
7
7
  # literal are aligned.
8
8
  class AlignHash < Cop
9
+ include IgnoredNode
10
+
9
11
  # Handles calculation of deltas (deviations from correct alignment)
10
12
  # when the enforced style is 'key'.
11
13
  class KeyAlignment
@@ -144,7 +146,15 @@ module Rubocop
144
146
  MSG = 'Align the elements of a hash literal if they span more than ' \
145
147
  'one line.'
146
148
 
149
+ def on_send(node)
150
+ if (last_child = node.children.last) && hash?(last_child) &&
151
+ ignore_last_argument_hash?(last_child)
152
+ ignore_node(last_child)
153
+ end
154
+ end
155
+
147
156
  def on_hash(node)
157
+ return if ignored_node?(node)
148
158
  return if node.children.empty?
149
159
  return unless multiline?(node)
150
160
 
@@ -161,17 +171,34 @@ module Rubocop
161
171
 
162
172
  @column_deltas = alignment_for(first_pair)
163
173
  .deltas_for_first_pair(first_pair, node)
164
- add_offence(first_pair, :expression) unless good_alignment?
174
+ add_offense(first_pair, :expression) unless good_alignment?
165
175
 
166
176
  node.children.each_cons(2) do |prev, current|
167
177
  @column_deltas = alignment_for(current).deltas(first_pair, prev,
168
178
  current)
169
- add_offence(current, :expression) unless good_alignment?
179
+ add_offense(current, :expression) unless good_alignment?
170
180
  end
171
181
  end
172
182
 
173
183
  private
174
184
 
185
+ def ignore_last_argument_hash?(node)
186
+ case cop_config['EnforcedLastArgumentHashStyle']
187
+ when 'always_inspect' then false
188
+ when 'always_ignore' then true
189
+ when 'ignore_explicit' then explicit_hash?(node)
190
+ when 'ignore_implicit' then !explicit_hash?(node)
191
+ end
192
+ end
193
+
194
+ def hash?(node)
195
+ node.respond_to?(:type) && node.type == :hash
196
+ end
197
+
198
+ def explicit_hash?(node)
199
+ !node.loc.begin.nil?
200
+ end
201
+
175
202
  def multiline?(node)
176
203
  node.loc.expression.source.include?("\n")
177
204
  end
@@ -9,7 +9,7 @@ module Rubocop
9
9
  include AutocorrectAlignment
10
10
 
11
11
  MSG = 'Align the parameters of a method call if they span ' \
12
- 'more than one line.'
12
+ 'more than one line.'
13
13
 
14
14
  def on_send(node)
15
15
  _receiver, method, *args = *node
@@ -17,7 +17,21 @@ module Rubocop
17
17
  return if method == :[]=
18
18
  return if args.size <= 1
19
19
 
20
- check_alignment(args)
20
+ check_alignment(args, base_column(node, args))
21
+ end
22
+
23
+ private
24
+
25
+ def fixed_indentation?
26
+ cop_config['EnforcedStyle'] == 'with_fixed_indentation'
27
+ end
28
+
29
+ def base_column(node, args)
30
+ if fixed_indentation?
31
+ node.loc.column + 2
32
+ else
33
+ args.first.loc.column
34
+ end
21
35
  end
22
36
  end
23
37
  end