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
@@ -24,9 +24,9 @@ module Rubocop
24
24
  op_type = node.type.to_s
25
25
 
26
26
  if op == op_type
27
- add_offence(node,
27
+ add_offense(node,
28
28
  :operator,
29
- sprintf(MSG, OPS[op], op))
29
+ format(MSG, OPS[op], op))
30
30
  end
31
31
  end
32
32
 
@@ -10,7 +10,7 @@ module Rubocop
10
10
 
11
11
  def investigate(processed_source)
12
12
  processed_source.comments.each do |comment|
13
- add_offence(comment, :expression) unless comment.text.ascii_only?
13
+ add_offense(comment, :expression) unless comment.text.ascii_only?
14
14
  end
15
15
  end
16
16
  end
@@ -10,7 +10,7 @@ module Rubocop
10
10
  def investigate(processed_source)
11
11
  processed_source.tokens.each do |t|
12
12
  if t.type == :tIDENTIFIER && !t.text.ascii_only?
13
- add_offence(nil, t.pos)
13
+ add_offense(nil, t.pos)
14
14
  end
15
15
  end
16
16
  end
@@ -8,7 +8,7 @@ module Rubocop
8
8
  MSG = 'Do not use `attr`. Use `attr_reader` instead.'
9
9
 
10
10
  def on_send(node)
11
- add_offence(node, :selector) if command?(:attr, node)
11
+ add_offense(node, :selector) if command?(:attr, node)
12
12
  end
13
13
 
14
14
  def autocorrect(node)
@@ -8,7 +8,7 @@ module Rubocop
8
8
  MSG = 'Avoid the use of BEGIN blocks.'
9
9
 
10
10
  def on_preexe(node)
11
- add_offence(node, :keyword)
11
+ add_offense(node, :keyword)
12
12
  end
13
13
  end
14
14
  end
@@ -10,7 +10,7 @@ module Rubocop
10
10
  def investigate(processed_source)
11
11
  processed_source.comments.each do |comment|
12
12
  if comment.text.start_with?('=begin')
13
- add_offence(comment, :expression)
13
+ add_offense(comment, :expression)
14
14
  end
15
15
  end
16
16
  end
@@ -29,7 +29,7 @@ module Rubocop
29
29
  current_level += 1
30
30
  end
31
31
  if current_level == max + 1
32
- add_offence(node, :expression, message(max)) do
32
+ add_offense(node, :expression, message(max)) do
33
33
  self.max = current_level
34
34
  end
35
35
  return
@@ -29,9 +29,9 @@ module Rubocop
29
29
  block_begin = node.loc.begin.source
30
30
 
31
31
  if block_length > 0 && block_begin == '{'
32
- add_offence(node, :begin, MULTI_LINE_MSG)
32
+ add_offense(node, :begin, MULTI_LINE_MSG)
33
33
  elsif block_length == 0 && block_begin != '{'
34
- add_offence(node, :begin, SINGLE_LINE_MSG)
34
+ add_offense(node, :begin, SINGLE_LINE_MSG)
35
35
  end
36
36
  end
37
37
 
@@ -28,7 +28,7 @@ module Rubocop
28
28
  if !braces?(arg) || all_hashes?(args)
29
29
  correct_style_detected
30
30
  else
31
- add_offence(arg, :expression,
31
+ add_offense(arg, :expression,
32
32
  'Redundant curly braces around a hash parameter.') do
33
33
  opposite_style_detected
34
34
  end
@@ -36,7 +36,7 @@ module Rubocop
36
36
  elsif braces?(arg)
37
37
  correct_style_detected
38
38
  else
39
- add_offence(arg, :expression,
39
+ add_offense(arg, :expression,
40
40
  'Missing curly braces around a hash parameter.') do
41
41
  opposite_style_detected
42
42
  end
@@ -10,7 +10,7 @@ module Rubocop
10
10
  def on_send(node)
11
11
  _receiver, method_name, *_args = *node
12
12
 
13
- add_offence(node, :selector) if method_name == :===
13
+ add_offense(node, :selector) if method_name == :===
14
14
  end
15
15
  end
16
16
  end
@@ -6,7 +6,7 @@ module Rubocop
6
6
  # This cop checks how the *when*s of a *case* expression
7
7
  # are indented in relation to its *case* or *end* keyword.
8
8
  #
9
- # It will register a separate offence for each misaligned *when*.
9
+ # It will register a separate offense for each misaligned *when*.
10
10
  class CaseIndentation < Cop
11
11
  include ConfigurableEnforcedStyle
12
12
 
@@ -36,7 +36,7 @@ module Rubocop
36
36
  else
37
37
  "as deep as #{base}."
38
38
  end
39
- add_offence(when_node, pos, msg) do
39
+ add_offense(when_node, pos, msg) do
40
40
  if pos.column == base_column(case_node, alternative_style)
41
41
  opposite_style_detected
42
42
  else
@@ -9,8 +9,8 @@ module Rubocop
9
9
 
10
10
  MSG = 'Do not use the character literal - use string literal instead.'
11
11
 
12
- def offence?(node)
13
- # we don't register an offence for things like ?\C-\M-d
12
+ def offense?(node)
13
+ # we don't register an offense for things like ?\C-\M-d
14
14
  node.loc.begin.is?('?') &&
15
15
  node.loc.expression.source.size.between?(2, 3)
16
16
  end
@@ -21,7 +21,7 @@ module Rubocop
21
21
  def check_name(node)
22
22
  name = node.loc.name.source
23
23
 
24
- add_offence(node, :name) if name =~ /_/
24
+ add_offense(node, :name) if name =~ /_/
25
25
  end
26
26
  end
27
27
  end
@@ -0,0 +1,69 @@
1
+ # encoding: utf-8
2
+
3
+ module Rubocop
4
+ module Cop
5
+ module Style
6
+ # This cop checks the style of children definitions at classes and
7
+ # modules. Basically there are two different styles:
8
+ #
9
+ # nested - have each child on its own line
10
+ # class Foo
11
+ # class Bar
12
+ # end
13
+ # end
14
+ #
15
+ # compact - combine definitions as much as possible
16
+ # class Foo::Bar
17
+ # end
18
+ #
19
+ # The compact style is only forced, for classes / modules with one child.
20
+ class ClassAndModuleChildren < Cop
21
+ include ConfigurableEnforcedStyle
22
+
23
+ NESTED_MSG = 'Use nested module/class definitions instead of ' \
24
+ 'compact style.'
25
+
26
+ COMPACT_MSG = 'Use compact module/class definition instead of ' \
27
+ 'nested style.'
28
+
29
+ def on_class(node)
30
+ _name, _superclass, body = *node
31
+ check_style(node, body)
32
+ end
33
+
34
+ def on_module(node)
35
+ _name, body = *node
36
+ check_style(node, body)
37
+ end
38
+
39
+ private
40
+
41
+ def check_style(node, body)
42
+ if style == :nested
43
+ check_nested_style(node)
44
+ else
45
+ check_compact_style(node, body)
46
+ end
47
+ end
48
+
49
+ def check_nested_style(node)
50
+ return unless compact_node_name?(node)
51
+ add_offense(node, :name, NESTED_MSG)
52
+ end
53
+
54
+ def check_compact_style(node, body)
55
+ return unless one_child?(node, body) && !compact_node_name?(node)
56
+ add_offense(node, :name, COMPACT_MSG)
57
+ end
58
+
59
+ def one_child?(node, body)
60
+ body && body.type != :begin
61
+ end
62
+
63
+ def compact_node_name?(node)
64
+ node.loc.name.source =~ /::/
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -12,7 +12,7 @@ module Rubocop
12
12
  def on_defs(node)
13
13
  definee, _name, _args, _body = *node
14
14
 
15
- add_offence(definee, :name) if definee.type == :const
15
+ add_offense(definee, :name) if definee.type == :const
16
16
  end
17
17
  end
18
18
  end
@@ -3,14 +3,14 @@
3
3
  module Rubocop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for uses of class variables. Offences
6
+ # This cop checks for uses of class variables. Offenses
7
7
  # are signaled only on assignment to class variables to
8
- # reduced the number of offences that would be reported.
8
+ # reduced the number of offenses that would be reported.
9
9
  class ClassVars < Cop
10
10
  MSG = 'Replace class var %s with a class instance var.'
11
11
 
12
12
  def on_cvasgn(node)
13
- add_offence(node, :name)
13
+ add_offense(node, :name)
14
14
  end
15
15
 
16
16
  def message(node)
@@ -45,11 +45,11 @@ module Rubocop
45
45
  _receiver, method_name, *_args = *node
46
46
 
47
47
  if preferred_methods[method_name]
48
- add_offence(
48
+ add_offense(
49
49
  node, :selector,
50
- sprintf(MSG,
51
- preferred_method(method_name),
52
- method_name)
50
+ format(MSG,
51
+ preferred_method(method_name),
52
+ method_name)
53
53
  )
54
54
  end
55
55
  end
@@ -15,7 +15,7 @@ module Rubocop
15
15
  return unless receiver && node.loc.dot && node.loc.dot.is?('::')
16
16
  return if allowed_name(_method_name.to_s)
17
17
 
18
- add_offence(node, :dot)
18
+ add_offense(node, :dot)
19
19
  end
20
20
 
21
21
  def allowed_name(method_name)
@@ -21,7 +21,7 @@ module Rubocop
21
21
  range = Parser::Source::Range.new(processed_source.buffer,
22
22
  start,
23
23
  start + length)
24
- add_offence(nil, range)
24
+ add_offense(nil, range)
25
25
  end
26
26
  end
27
27
  end
@@ -20,7 +20,7 @@ module Rubocop
20
20
  # It's also ok to assign a class constant another class constant
21
21
  # SomeClass = SomeOtherClass
22
22
  unless value && [:send, :block, :const].include?(value.type)
23
- add_offence(node, :name) if const_name !~ SNAKE_CASE
23
+ add_offense(node, :name) if const_name !~ SNAKE_CASE
24
24
  end
25
25
  end
26
26
  end
@@ -29,8 +29,8 @@ module Rubocop
29
29
 
30
30
  max = cop_config['Max']
31
31
  if complexity > max
32
- add_offence(node, :keyword,
33
- sprintf(MSG, method_name, complexity, max)) do
32
+ add_offense(node, :keyword,
33
+ format(MSG, method_name, complexity, max)) do
34
34
  self.max = complexity
35
35
  end
36
36
  end
@@ -10,7 +10,7 @@ module Rubocop
10
10
  include CheckMethods
11
11
 
12
12
  MSG = "Omit the parentheses in defs when the method doesn't accept " \
13
- 'any arguments.'
13
+ 'any arguments.'
14
14
 
15
15
  def check(node, _method_name, args, _body)
16
16
  start_line = node.loc.keyword.line
@@ -18,7 +18,7 @@ module Rubocop
18
18
 
19
19
  return if start_line == end_line
20
20
 
21
- add_offence(args, :begin) if args.children == [] && args.loc.begin
21
+ add_offense(args, :begin) if args.children == [] && args.loc.begin
22
22
  end
23
23
 
24
24
  def autocorrect(node)
@@ -38,7 +38,7 @@ module Rubocop
38
38
  next if node.type == :class && !body
39
39
  next if namespace?(body)
40
40
  next if associated_comment?(node, ast_with_comments)
41
- add_offence(node, :keyword, format(MSG, node.type.to_s))
41
+ add_offense(node, :keyword, format(MSG, node.type.to_s))
42
42
  end
43
43
  end
44
44
 
@@ -13,7 +13,7 @@ module Rubocop
13
13
  if proper_dot_position?(node)
14
14
  correct_style_detected
15
15
  else
16
- add_offence(node, :dot) { opposite_style_detected }
16
+ add_offense(node, :dot) { opposite_style_detected }
17
17
  end
18
18
  end
19
19
 
@@ -29,12 +29,10 @@ module Rubocop
29
29
  end
30
30
  end
31
31
 
32
- def parameter_name
33
- 'Style'
34
- end
35
-
36
32
  def proper_dot_position?(node)
37
- dot_line = node.loc.dot.line
33
+ receiver, _method_name, *_args = *node
34
+
35
+ receiver_line = receiver.loc.expression.end.line
38
36
 
39
37
  if node.loc.selector
40
38
  selector_line = node.loc.selector.line
@@ -43,15 +41,16 @@ module Rubocop
43
41
  selector_line = node.loc.begin.line
44
42
  end
45
43
 
44
+ # receiver and selector are on the same line
45
+ return true if selector_line == receiver_line
46
+
47
+ dot_line = node.loc.dot.line
48
+
46
49
  case style
47
50
  when :leading then dot_line == selector_line
48
- when :trailing then dot_line != selector_line || same_line?(node)
51
+ when :trailing then dot_line != selector_line
49
52
  end
50
53
  end
51
-
52
- def same_line?(node)
53
- node.loc.dot.line == node.loc.line
54
- end
55
54
  end
56
55
  end
57
56
  end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ module Rubocop
4
+ module Cop
5
+ module Style
6
+ # This cop checks for uses of double negation (!!) to convert something
7
+ # to a boolean value. As this is both cryptic and usually redundant it
8
+ # should be avoided.
9
+ #
10
+ # @example
11
+ #
12
+ # # bad
13
+ # !!something
14
+ #
15
+ # # good
16
+ # !something.nil?
17
+ class DoubleNegation < Cop
18
+ MSG = 'Avoid the use of double negation (!!).'
19
+
20
+ def on_send(node)
21
+ return unless not_node?(node)
22
+
23
+ receiver, _method_name, *_args = *node
24
+
25
+ add_offense(node, :selector) if not_node?(receiver)
26
+ end
27
+
28
+ private
29
+
30
+ def not_node?(node)
31
+ _receiver, method_name, *args = *node
32
+
33
+ # ! does not take any arguments
34
+ args.empty? && method_name == :! &&
35
+ node.loc.selector.is?('!')
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -12,7 +12,7 @@ module Rubocop
12
12
  if @prev_def_end && (def_start(node) - @prev_def_end) == 1
13
13
  unless @prev_was_single_line && singe_line_def?(node) &&
14
14
  cop_config['AllowAdjacentOneLineDefs']
15
- add_offence(node, :keyword)
15
+ add_offense(node, :keyword)
16
16
  end
17
17
  end
18
18
 
@@ -33,6 +33,13 @@ module Rubocop
33
33
  def def_end(node)
34
34
  node.loc.end.line
35
35
  end
36
+
37
+ def autocorrect(node)
38
+ range = range_with_surrounding_space(node.loc.expression, :left)
39
+ @corrections << lambda do |corrector|
40
+ corrector.insert_before(range, "\n")
41
+ end
42
+ end
36
43
  end
37
44
  end
38
45
  end