rubocop 0.29.1 → 0.30.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 (341) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +73 -1
  3. data/README.md +11 -2
  4. data/config/default.yml +194 -6
  5. data/config/disabled.yml +25 -1
  6. data/config/enabled.yml +74 -12
  7. data/lib/rubocop.rb +19 -2
  8. data/lib/rubocop/config.rb +23 -3
  9. data/lib/rubocop/config_loader.rb +9 -1
  10. data/lib/rubocop/cop/autocorrect_logic.rb +26 -0
  11. data/lib/rubocop/cop/cop.rb +33 -17
  12. data/lib/rubocop/cop/lint/assignment_in_condition.rb +16 -4
  13. data/lib/rubocop/cop/lint/block_alignment.rb +5 -14
  14. data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
  15. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +61 -0
  16. data/lib/rubocop/cop/lint/void.rb +11 -3
  17. data/lib/rubocop/cop/mixin/on_normal_if_unless.rb +17 -0
  18. data/lib/rubocop/cop/performance/detect.rb +72 -0
  19. data/lib/rubocop/cop/performance/flat_map.rb +64 -0
  20. data/lib/rubocop/cop/performance/reverse_each.rb +43 -0
  21. data/lib/rubocop/cop/performance/sample.rb +58 -0
  22. data/lib/rubocop/cop/performance/size.rb +64 -0
  23. data/lib/rubocop/cop/rails/date.rb +121 -0
  24. data/lib/rubocop/cop/rails/find_by.rb +52 -0
  25. data/lib/rubocop/cop/rails/find_each.rb +41 -0
  26. data/lib/rubocop/cop/rails/time_zone.rb +93 -0
  27. data/lib/rubocop/cop/style/auto_resource_cleanup.rb +45 -0
  28. data/lib/rubocop/cop/style/block_delimiters.rb +186 -0
  29. data/lib/rubocop/cop/style/closing_parenthesis_indentation.rb +76 -0
  30. data/lib/rubocop/cop/style/command_literal.rb +120 -0
  31. data/lib/rubocop/cop/style/copyright.rb +87 -0
  32. data/lib/rubocop/cop/style/documentation.rb +32 -0
  33. data/lib/rubocop/cop/style/empty_else.rb +85 -16
  34. data/lib/rubocop/cop/style/encoding.rb +14 -2
  35. data/lib/rubocop/cop/style/end_of_line.rb +5 -0
  36. data/lib/rubocop/cop/style/hash_syntax.rb +86 -23
  37. data/lib/rubocop/cop/style/if_unless_modifier.rb +15 -0
  38. data/lib/rubocop/cop/style/indentation_consistency.rb +13 -6
  39. data/lib/rubocop/cop/style/indentation_width.rb +34 -10
  40. data/lib/rubocop/cop/style/lambda.rb +32 -17
  41. data/lib/rubocop/cop/style/line_end_concatenation.rb +4 -0
  42. data/lib/rubocop/cop/style/missing_else.rb +72 -0
  43. data/lib/rubocop/cop/style/regexp_literal.rb +89 -58
  44. data/lib/rubocop/cop/style/space_around_operators.rb +13 -2
  45. data/lib/rubocop/cop/style/space_before_block_braces.rb +3 -3
  46. data/lib/rubocop/cop/style/space_inside_block_braces.rb +9 -5
  47. data/lib/rubocop/cop/style/symbol_literal.rb +36 -0
  48. data/lib/rubocop/cop/style/trailing_blank_lines.rb +7 -0
  49. data/lib/rubocop/cop/style/trailing_comma.rb +21 -7
  50. data/lib/rubocop/cop/style/trivial_accessors.rb +17 -3
  51. data/lib/rubocop/cop/style/unneeded_capital_w.rb +4 -6
  52. data/lib/rubocop/cop/style/while_until_modifier.rb +10 -0
  53. data/lib/rubocop/cop/util.rb +24 -19
  54. data/lib/rubocop/cop/variable_force.rb +14 -0
  55. data/lib/rubocop/cop/variable_force/reference.rb +10 -4
  56. data/lib/rubocop/formatter/html_formatter.rb +10 -4
  57. data/lib/rubocop/formatter/text_util.rb +5 -7
  58. data/lib/rubocop/options.rb +47 -45
  59. data/lib/rubocop/path_util.rb +12 -8
  60. data/lib/rubocop/processed_source.rb +12 -1
  61. data/lib/rubocop/rake_task.rb +2 -2
  62. data/lib/rubocop/version.rb +1 -1
  63. data/relnotes/v0.30.0.md +145 -0
  64. data/rubocop.gemspec +15 -3
  65. metadata +22 -545
  66. data/.gitignore +0 -54
  67. data/.rspec +0 -1
  68. data/.rubocop.yml +0 -11
  69. data/.rubocop_todo.yml +0 -28
  70. data/.travis.yml +0 -22
  71. data/Gemfile +0 -15
  72. data/Rakefile +0 -41
  73. data/lib/rubocop/cop/style/blocks.rb +0 -80
  74. data/lib/rubocop/cop/style/unneeded_percent_x.rb +0 -25
  75. data/logo/rubocop-final-logo.eps +0 -0
  76. data/spec/.rubocop.yml +0 -5
  77. data/spec/fixtures/html_formatter/expected.html +0 -495
  78. data/spec/fixtures/html_formatter/project/app/controllers/application_controller.rb +0 -5
  79. data/spec/fixtures/html_formatter/project/app/controllers/books_controller.rb +0 -74
  80. data/spec/fixtures/html_formatter/project/app/models/book.rb +0 -5
  81. data/spec/isolated_environment_spec.rb +0 -24
  82. data/spec/project_spec.rb +0 -119
  83. data/spec/rubocop/cli_spec.rb +0 -2740
  84. data/spec/rubocop/comment_config_spec.rb +0 -105
  85. data/spec/rubocop/config_loader_spec.rb +0 -377
  86. data/spec/rubocop/config_spec.rb +0 -235
  87. data/spec/rubocop/config_store_spec.rb +0 -53
  88. data/spec/rubocop/cop/commissioner_spec.rb +0 -85
  89. data/spec/rubocop/cop/cop_spec.rb +0 -135
  90. data/spec/rubocop/cop/corrector_spec.rb +0 -59
  91. data/spec/rubocop/cop/force_spec.rb +0 -29
  92. data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +0 -113
  93. data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +0 -35
  94. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +0 -130
  95. data/spec/rubocop/cop/lint/block_alignment_spec.rb +0 -533
  96. data/spec/rubocop/cop/lint/condition_position_spec.rb +0 -51
  97. data/spec/rubocop/cop/lint/debugger_spec.rb +0 -73
  98. data/spec/rubocop/cop/lint/def_end_alignment_spec.rb +0 -108
  99. data/spec/rubocop/cop/lint/deprecated_class_methods_spec.rb +0 -38
  100. data/spec/rubocop/cop/lint/duplicate_methods_spec.rb +0 -189
  101. data/spec/rubocop/cop/lint/else_layout_spec.rb +0 -65
  102. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +0 -27
  103. data/spec/rubocop/cop/lint/empty_interpolation_spec.rb +0 -18
  104. data/spec/rubocop/cop/lint/end_alignment_spec.rb +0 -91
  105. data/spec/rubocop/cop/lint/end_in_method_spec.rb +0 -29
  106. data/spec/rubocop/cop/lint/ensure_return_spec.rb +0 -39
  107. data/spec/rubocop/cop/lint/eval_spec.rb +0 -33
  108. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +0 -30
  109. data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +0 -33
  110. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +0 -172
  111. data/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +0 -31
  112. data/spec/rubocop/cop/lint/loop_spec.rb +0 -27
  113. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +0 -57
  114. data/spec/rubocop/cop/lint/require_parentheses_spec.rb +0 -82
  115. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +0 -123
  116. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +0 -237
  117. data/spec/rubocop/cop/lint/space_before_first_arg_spec.rb +0 -66
  118. data/spec/rubocop/cop/lint/string_conversion_in_interpolation_spec.rb +0 -51
  119. data/spec/rubocop/cop/lint/syntax_spec.rb +0 -34
  120. data/spec/rubocop/cop/lint/underscore_prefixed_variable_name_spec.rb +0 -179
  121. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +0 -63
  122. data/spec/rubocop/cop/lint/unused_block_argument_spec.rb +0 -231
  123. data/spec/rubocop/cop/lint/unused_method_argument_spec.rb +0 -278
  124. data/spec/rubocop/cop/lint/useless_access_modifier_spec.rb +0 -192
  125. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +0 -1778
  126. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +0 -30
  127. data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +0 -48
  128. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +0 -211
  129. data/spec/rubocop/cop/lint/void_spec.rb +0 -64
  130. data/spec/rubocop/cop/metrics/abc_size_spec.rb +0 -109
  131. data/spec/rubocop/cop/metrics/block_nesting_spec.rb +0 -156
  132. data/spec/rubocop/cop/metrics/class_length_spec.rb +0 -131
  133. data/spec/rubocop/cop/metrics/cyclomatic_complexity_spec.rb +0 -204
  134. data/spec/rubocop/cop/metrics/line_length_spec.rb +0 -136
  135. data/spec/rubocop/cop/metrics/method_length_spec.rb +0 -147
  136. data/spec/rubocop/cop/metrics/parameter_lists_spec.rb +0 -44
  137. data/spec/rubocop/cop/metrics/perceived_complexity_spec.rb +0 -222
  138. data/spec/rubocop/cop/offense_spec.rb +0 -133
  139. data/spec/rubocop/cop/rails/action_filter_spec.rb +0 -64
  140. data/spec/rubocop/cop/rails/default_scope_spec.rb +0 -37
  141. data/spec/rubocop/cop/rails/delegate_spec.rb +0 -177
  142. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +0 -13
  143. data/spec/rubocop/cop/rails/output_spec.rb +0 -37
  144. data/spec/rubocop/cop/rails/read_write_attribute_spec.rb +0 -130
  145. data/spec/rubocop/cop/rails/scope_args_spec.rb +0 -25
  146. data/spec/rubocop/cop/rails/validation_spec.rb +0 -28
  147. data/spec/rubocop/cop/severity_spec.rb +0 -113
  148. data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +0 -421
  149. data/spec/rubocop/cop/style/accessor_method_name_spec.rb +0 -81
  150. data/spec/rubocop/cop/style/alias_spec.rb +0 -59
  151. data/spec/rubocop/cop/style/align_array_spec.rb +0 -123
  152. data/spec/rubocop/cop/style/align_hash_spec.rb +0 -411
  153. data/spec/rubocop/cop/style/align_parameters_spec.rb +0 -431
  154. data/spec/rubocop/cop/style/and_or_spec.rb +0 -235
  155. data/spec/rubocop/cop/style/array_join_spec.rb +0 -29
  156. data/spec/rubocop/cop/style/ascii_comments_spec.rb +0 -21
  157. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +0 -36
  158. data/spec/rubocop/cop/style/attr_spec.rb +0 -29
  159. data/spec/rubocop/cop/style/bare_percent_literals_spec.rb +0 -132
  160. data/spec/rubocop/cop/style/begin_block_spec.rb +0 -13
  161. data/spec/rubocop/cop/style/block_comments_spec.rb +0 -45
  162. data/spec/rubocop/cop/style/block_end_newline_spec.rb +0 -61
  163. data/spec/rubocop/cop/style/blocks_spec.rb +0 -121
  164. data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +0 -288
  165. data/spec/rubocop/cop/style/case_equality_spec.rb +0 -13
  166. data/spec/rubocop/cop/style/case_indentation_spec.rb +0 -293
  167. data/spec/rubocop/cop/style/character_literal_spec.rb +0 -37
  168. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +0 -40
  169. data/spec/rubocop/cop/style/class_and_module_children_spec.rb +0 -133
  170. data/spec/rubocop/cop/style/class_check_spec.rb +0 -41
  171. data/spec/rubocop/cop/style/class_methods_spec.rb +0 -80
  172. data/spec/rubocop/cop/style/class_vars_spec.rb +0 -19
  173. data/spec/rubocop/cop/style/collection_methods_spec.rb +0 -48
  174. data/spec/rubocop/cop/style/colon_method_call_spec.rb +0 -65
  175. data/spec/rubocop/cop/style/comment_annotation_spec.rb +0 -86
  176. data/spec/rubocop/cop/style/comment_indentation_spec.rb +0 -179
  177. data/spec/rubocop/cop/style/constant_name_spec.rb +0 -65
  178. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +0 -43
  179. data/spec/rubocop/cop/style/deprecated_hash_methods_spec.rb +0 -45
  180. data/spec/rubocop/cop/style/documentation_spec.rb +0 -146
  181. data/spec/rubocop/cop/style/dot_position_spec.rb +0 -132
  182. data/spec/rubocop/cop/style/double_negation_spec.rb +0 -22
  183. data/spec/rubocop/cop/style/each_with_object_spec.rb +0 -73
  184. data/spec/rubocop/cop/style/else_alignment_spec.rb +0 -506
  185. data/spec/rubocop/cop/style/empty_else_spec.rb +0 -100
  186. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +0 -135
  187. data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +0 -178
  188. data/spec/rubocop/cop/style/empty_lines_around_block_body_spec.rb +0 -103
  189. data/spec/rubocop/cop/style/empty_lines_around_class_body_spec.rb +0 -135
  190. data/spec/rubocop/cop/style/empty_lines_around_method_body_spec.rb +0 -90
  191. data/spec/rubocop/cop/style/empty_lines_around_module_body_spec.rb +0 -79
  192. data/spec/rubocop/cop/style/empty_lines_spec.rb +0 -51
  193. data/spec/rubocop/cop/style/empty_literal_spec.rb +0 -117
  194. data/spec/rubocop/cop/style/encoding_spec.rb +0 -139
  195. data/spec/rubocop/cop/style/end_block_spec.rb +0 -13
  196. data/spec/rubocop/cop/style/end_of_line_spec.rb +0 -65
  197. data/spec/rubocop/cop/style/even_odd_spec.rb +0 -164
  198. data/spec/rubocop/cop/style/extra_spacing_spec.rb +0 -68
  199. data/spec/rubocop/cop/style/file_name_spec.rb +0 -84
  200. data/spec/rubocop/cop/style/first_parameter_indentation_spec.rb +0 -304
  201. data/spec/rubocop/cop/style/flip_flop_spec.rb +0 -23
  202. data/spec/rubocop/cop/style/for_spec.rb +0 -105
  203. data/spec/rubocop/cop/style/format_string_spec.rb +0 -184
  204. data/spec/rubocop/cop/style/global_vars_spec.rb +0 -34
  205. data/spec/rubocop/cop/style/guard_clause_spec.rb +0 -172
  206. data/spec/rubocop/cop/style/hash_syntax_spec.rb +0 -137
  207. data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +0 -146
  208. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +0 -24
  209. data/spec/rubocop/cop/style/indent_array_spec.rb +0 -173
  210. data/spec/rubocop/cop/style/indent_hash_spec.rb +0 -367
  211. data/spec/rubocop/cop/style/indentation_consistency_spec.rb +0 -509
  212. data/spec/rubocop/cop/style/indentation_width_spec.rb +0 -885
  213. data/spec/rubocop/cop/style/infinite_loop_spec.rb +0 -48
  214. data/spec/rubocop/cop/style/inline_comment_spec.rb +0 -13
  215. data/spec/rubocop/cop/style/lambda_call_spec.rb +0 -65
  216. data/spec/rubocop/cop/style/lambda_spec.rb +0 -76
  217. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +0 -64
  218. data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +0 -184
  219. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +0 -59
  220. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +0 -60
  221. data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +0 -108
  222. data/spec/rubocop/cop/style/method_name_spec.rb +0 -125
  223. data/spec/rubocop/cop/style/module_function_spec.rb +0 -24
  224. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +0 -78
  225. data/spec/rubocop/cop/style/multiline_block_layout_spec.rb +0 -199
  226. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +0 -134
  227. data/spec/rubocop/cop/style/multiline_operation_indentation_spec.rb +0 -464
  228. data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +0 -18
  229. data/spec/rubocop/cop/style/negated_if_spec.rb +0 -102
  230. data/spec/rubocop/cop/style/negated_while_spec.rb +0 -64
  231. data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +0 -21
  232. data/spec/rubocop/cop/style/next_spec.rb +0 -301
  233. data/spec/rubocop/cop/style/nil_comparison_spec.rb +0 -29
  234. data/spec/rubocop/cop/style/non_nil_check_spec.rb +0 -132
  235. data/spec/rubocop/cop/style/not_spec.rb +0 -28
  236. data/spec/rubocop/cop/style/numeric_literals_spec.rb +0 -80
  237. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +0 -13
  238. data/spec/rubocop/cop/style/op_method_spec.rb +0 -85
  239. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +0 -161
  240. data/spec/rubocop/cop/style/percent_literal_delimiters_spec.rb +0 -316
  241. data/spec/rubocop/cop/style/percent_q_literals_spec.rb +0 -122
  242. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +0 -22
  243. data/spec/rubocop/cop/style/predicate_name_spec.rb +0 -57
  244. data/spec/rubocop/cop/style/proc_spec.rb +0 -27
  245. data/spec/rubocop/cop/style/raise_args_spec.rb +0 -87
  246. data/spec/rubocop/cop/style/redundant_begin_spec.rb +0 -121
  247. data/spec/rubocop/cop/style/redundant_exception_spec.rb +0 -59
  248. data/spec/rubocop/cop/style/redundant_return_spec.rb +0 -171
  249. data/spec/rubocop/cop/style/redundant_self_spec.rb +0 -186
  250. data/spec/rubocop/cop/style/regexp_literal_spec.rb +0 -188
  251. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +0 -116
  252. data/spec/rubocop/cop/style/self_assignment_spec.rb +0 -49
  253. data/spec/rubocop/cop/style/semicolon_spec.rb +0 -114
  254. data/spec/rubocop/cop/style/signal_exception_spec.rb +0 -289
  255. data/spec/rubocop/cop/style/single_line_block_params_spec.rb +0 -82
  256. data/spec/rubocop/cop/style/single_line_methods_spec.rb +0 -94
  257. data/spec/rubocop/cop/style/single_space_before_first_arg_spec.rb +0 -63
  258. data/spec/rubocop/cop/style/space_after_colon_spec.rb +0 -55
  259. data/spec/rubocop/cop/style/space_after_comma_spec.rb +0 -30
  260. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +0 -84
  261. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +0 -70
  262. data/spec/rubocop/cop/style/space_after_not_spec.rb +0 -22
  263. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +0 -23
  264. data/spec/rubocop/cop/style/space_around_block_parameters_spec.rb +0 -155
  265. data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +0 -95
  266. data/spec/rubocop/cop/style/space_around_operators_spec.rb +0 -330
  267. data/spec/rubocop/cop/style/space_before_block_braces_spec.rb +0 -73
  268. data/spec/rubocop/cop/style/space_before_comma_spec.rb +0 -42
  269. data/spec/rubocop/cop/style/space_before_comment_spec.rb +0 -34
  270. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +0 -70
  271. data/spec/rubocop/cop/style/space_before_semicolon_spec.rb +0 -28
  272. data/spec/rubocop/cop/style/space_inside_block_braces_spec.rb +0 -317
  273. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +0 -83
  274. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +0 -147
  275. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +0 -44
  276. data/spec/rubocop/cop/style/space_inside_range_literal_spec.rb +0 -64
  277. data/spec/rubocop/cop/style/special_global_vars_spec.rb +0 -62
  278. data/spec/rubocop/cop/style/string_literals_in_interpolation_spec.rb +0 -99
  279. data/spec/rubocop/cop/style/string_literals_spec.rb +0 -228
  280. data/spec/rubocop/cop/style/struct_inheritance_spec.rb +0 -44
  281. data/spec/rubocop/cop/style/symbol_array_spec.rb +0 -37
  282. data/spec/rubocop/cop/style/symbol_proc_spec.rb +0 -100
  283. data/spec/rubocop/cop/style/tab_spec.rb +0 -47
  284. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +0 -83
  285. data/spec/rubocop/cop/style/trailing_comma_spec.rb +0 -390
  286. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +0 -31
  287. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +0 -558
  288. data/spec/rubocop/cop/style/unless_else_spec.rb +0 -23
  289. data/spec/rubocop/cop/style/unneeded_capital_w_spec.rb +0 -90
  290. data/spec/rubocop/cop/style/unneeded_percent_q_spec.rb +0 -127
  291. data/spec/rubocop/cop/style/unneeded_percent_x_spec.rb +0 -34
  292. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +0 -76
  293. data/spec/rubocop/cop/style/variable_name_spec.rb +0 -107
  294. data/spec/rubocop/cop/style/when_then_spec.rb +0 -42
  295. data/spec/rubocop/cop/style/while_until_do_spec.rb +0 -55
  296. data/spec/rubocop/cop/style/while_until_modifier_spec.rb +0 -93
  297. data/spec/rubocop/cop/style/word_array_spec.rb +0 -117
  298. data/spec/rubocop/cop/team_spec.rb +0 -190
  299. data/spec/rubocop/cop/util_spec.rb +0 -102
  300. data/spec/rubocop/cop/variable_force/assignment_spec.rb +0 -200
  301. data/spec/rubocop/cop/variable_force/locatable_spec.rb +0 -699
  302. data/spec/rubocop/cop/variable_force/reference_spec.rb +0 -19
  303. data/spec/rubocop/cop/variable_force/scope_spec.rb +0 -319
  304. data/spec/rubocop/cop/variable_force/variable_spec.rb +0 -59
  305. data/spec/rubocop/cop/variable_force/variable_table_spec.rb +0 -276
  306. data/spec/rubocop/cop/variable_force_spec.rb +0 -26
  307. data/spec/rubocop/formatter/base_formatter_spec.rb +0 -191
  308. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +0 -114
  309. data/spec/rubocop/formatter/colorizable_spec.rb +0 -107
  310. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +0 -50
  311. data/spec/rubocop/formatter/disabled_lines_formatter_spec.rb +0 -67
  312. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +0 -63
  313. data/spec/rubocop/formatter/file_list_formatter_spec.rb +0 -33
  314. data/spec/rubocop/formatter/formatter_set_spec.rb +0 -141
  315. data/spec/rubocop/formatter/fuubar_style_formatter_spec.rb +0 -129
  316. data/spec/rubocop/formatter/html_formatter_spec.rb +0 -48
  317. data/spec/rubocop/formatter/json_formatter_spec.rb +0 -152
  318. data/spec/rubocop/formatter/offense_count_formatter_spec.rb +0 -75
  319. data/spec/rubocop/formatter/progress_formatter_spec.rb +0 -182
  320. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +0 -135
  321. data/spec/rubocop/formatter/text_util_spec.rb +0 -55
  322. data/spec/rubocop/options_spec.rb +0 -181
  323. data/spec/rubocop/path_util_spec.rb +0 -77
  324. data/spec/rubocop/processed_source_spec.rb +0 -184
  325. data/spec/rubocop/rake_task_spec.rb +0 -122
  326. data/spec/rubocop/runner_spec.rb +0 -99
  327. data/spec/rubocop/string_util_spec.rb +0 -46
  328. data/spec/rubocop/target_finder_spec.rb +0 -245
  329. data/spec/rubocop/token_spec.rb +0 -29
  330. data/spec/spec_helper.rb +0 -39
  331. data/spec/support/cop_helper.rb +0 -75
  332. data/spec/support/cops/class_must_be_a_module_cop.rb +0 -19
  333. data/spec/support/cops/module_must_be_a_class_cop.rb +0 -19
  334. data/spec/support/coverage.rb +0 -15
  335. data/spec/support/custom_matchers.rb +0 -58
  336. data/spec/support/file_helper.rb +0 -23
  337. data/spec/support/jruby_workaround.rb +0 -15
  338. data/spec/support/mri_syntax_checker.rb +0 -73
  339. data/spec/support/shared_contexts.rb +0 -53
  340. data/spec/support/shared_examples.rb +0 -55
  341. data/spec/support/statement_modifier_helper.rb +0 -41
@@ -145,39 +145,44 @@ module RuboCop
145
145
  buffer ||= @processed_source.buffer
146
146
  src = buffer.source
147
147
 
148
- if side == :both
149
- go_left, go_right = true, true
150
- else
151
- go_left = side == :left
152
- go_right = side == :right
153
- end
148
+ go_left, go_right = directions(side)
154
149
 
155
150
  begin_pos, end_pos = range.begin_pos, range.end_pos
156
- begin_pos -= 1 if go_left && src[begin_pos - 1] == ','
157
- end_pos += 1 if go_right && src[end_pos] == ','
151
+ begin_pos = move_pos(src, begin_pos, -1, go_left, /,/)
152
+ end_pos = move_pos(src, end_pos, 1, go_right, /,/)
158
153
 
159
154
  Parser::Source::Range.new(buffer, begin_pos, end_pos)
160
155
  end
161
156
 
162
- def range_with_surrounding_space(range, side = :both, buffer = nil)
157
+ def range_with_surrounding_space(range, side = :both, buffer = nil,
158
+ with_newline = true)
163
159
  buffer ||= @processed_source.buffer
164
160
  src = buffer.source
165
161
 
166
- if side == :both
167
- go_left, go_right = true, true
168
- else
169
- go_left = side == :left
170
- go_right = side == :right
171
- end
162
+ go_left, go_right = directions(side)
172
163
 
173
164
  begin_pos, end_pos = range.begin_pos, range.end_pos
174
- begin_pos -= 1 while go_left && src[begin_pos - 1] =~ /[ \t]/
175
- begin_pos -= 1 if go_left && src[begin_pos - 1] == "\n"
176
- end_pos += 1 while go_right && src[end_pos] =~ /[ \t]/
177
- end_pos += 1 if go_right && src[end_pos] == "\n"
165
+ begin_pos = move_pos(src, begin_pos, -1, go_left, /[ \t]/)
166
+ begin_pos = move_pos(src, begin_pos, -1, go_left && with_newline, /\n/)
167
+ end_pos = move_pos(src, end_pos, 1, go_right, /[ \t]/)
168
+ end_pos = move_pos(src, end_pos, 1, go_right && with_newline, /\n/)
178
169
  Parser::Source::Range.new(buffer, begin_pos, end_pos)
179
170
  end
180
171
 
172
+ def move_pos(src, pos, step, condition, regexp)
173
+ offset = step == -1 ? -1 : 0
174
+ pos += step while condition && src[pos + offset] =~ regexp
175
+ pos
176
+ end
177
+
178
+ def directions(side)
179
+ if side == :both
180
+ [true, true]
181
+ else
182
+ [side == :left, side == :right]
183
+ end
184
+ end
185
+
181
186
  def begins_its_line?(range)
182
187
  source_before_end = range.source_buffer.source[0...range.begin_pos]
183
188
  source_before_end =~ /\n\s*\Z/
@@ -53,6 +53,8 @@ module RuboCop
53
53
  TWISTED_SCOPE_TYPES = [:block, :class, :sclass, :defs].freeze
54
54
  SCOPE_TYPES = (TWISTED_SCOPE_TYPES + [:module, :def]).freeze
55
55
 
56
+ SEND_TYPE = :send
57
+
56
58
  def self.wrap_with_top_level_scope_node(root_node)
57
59
  if root_node.begin_type?
58
60
  root_node
@@ -124,6 +126,8 @@ module RuboCop
124
126
  process_zero_arity_super(node)
125
127
  when *SCOPE_TYPES
126
128
  process_scope(node)
129
+ when SEND_TYPE
130
+ process_send(node)
127
131
  end
128
132
  end
129
133
  # rubocop:enable Metrics/MethodLength, Metrics/CyclomaticComplexity
@@ -281,6 +285,16 @@ module RuboCop
281
285
  skip_children!
282
286
  end
283
287
 
288
+ def process_send(node)
289
+ _receiver, method_name, args = *node
290
+ return unless method_name == :binding
291
+ return if args && !args.children.empty?
292
+
293
+ variable_table.accessible_variables.each do |variable|
294
+ variable.reference!(node)
295
+ end
296
+ end
297
+
284
298
  # Mark all assignments which are referenced in the same loop
285
299
  # as referenced by ignoring AST order since they would be referenced
286
300
  # in next iteration.
@@ -10,7 +10,7 @@ module RuboCop
10
10
  VARIABLE_REFERENCE_TYPES = (
11
11
  [VARIABLE_REFERENCE_TYPE] +
12
12
  OPERATOR_ASSIGNMENT_TYPES +
13
- [ZERO_ARITY_SUPER_TYPE]
13
+ [ZERO_ARITY_SUPER_TYPE, SEND_TYPE]
14
14
  ).freeze
15
15
 
16
16
  attr_reader :node, :scope
@@ -32,10 +32,16 @@ module RuboCop
32
32
  # super
33
33
  # end
34
34
  #
35
- # In this case, the variable `foo` is not explicitly referenced,
36
- # but it can be considered used implicitly by the `super`.
35
+ # Another case is `binding`:
36
+ #
37
+ # def some_method(foo)
38
+ # do_something(binding)
39
+ # end
40
+ #
41
+ # In these cases, the variable `foo` is not explicitly referenced,
42
+ # but it can be considered used implicitly by the `super` or `binding`.
37
43
  def explicit?
38
- @node.type != ZERO_ARITY_SUPER_TYPE
44
+ ![ZERO_ARITY_SUPER_TYPE, SEND_TYPE].include?(@node.type)
39
45
  end
40
46
  end
41
47
  end
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require 'cgi'
3
4
  require 'erb'
4
5
  require 'ostruct'
5
6
  require 'base64'
@@ -38,7 +39,7 @@ module RuboCop
38
39
  def render_html
39
40
  context = ERBContext.new(files, summary)
40
41
 
41
- template = File.read(TEMPLATE_PATH)
42
+ template = File.read(TEMPLATE_PATH, encoding: Encoding::UTF_8)
42
43
  erb = ERB.new(template, nil, '-')
43
44
  html = erb.result(context.binding)
44
45
 
@@ -101,11 +102,16 @@ module RuboCop
101
102
 
102
103
  source_line = location.source_line
103
104
 
104
- source_line[0...column_range.begin] +
105
+ escape(source_line[0...column_range.begin]) +
105
106
  "<span class=\"highlight #{offense.severity}\">" +
106
- source_line[column_range] +
107
+ escape(source_line[column_range]) +
107
108
  '</span>' +
108
- source_line[column_range.end..-1]
109
+ escape(source_line[column_range.end..-1])
110
+ end
111
+
112
+ def escape(s)
113
+ # Single quotes not escaped in Ruby 1.9, so add extra substitution.
114
+ CGI.escapeHTML(s).gsub(/'/, '&#39;')
109
115
  end
110
116
 
111
117
  def base64_encoded_logo_image
@@ -7,13 +7,11 @@ module RuboCop
7
7
  module_function
8
8
 
9
9
  def pluralize(number, thing, options = {})
10
- text = ''
11
-
12
- if number == 0 && options[:no_for_zero]
13
- text = 'no'
14
- else
15
- text << number.to_s
16
- end
10
+ text = if number == 0 && options[:no_for_zero]
11
+ 'no'
12
+ else
13
+ number.to_s
14
+ end
17
15
 
18
16
  text << " #{thing}"
19
17
  text << 's' unless number == 1
@@ -6,51 +6,52 @@ module RuboCop
6
6
  # This module contains help texts for command line options.
7
7
  module OptionsHelp
8
8
  TEXT = {
9
- only: 'Run only the given cop(s).',
10
- only_guide_cops: ['Run only cops for rules that link to a',
11
- 'style guide.'],
12
- except: 'Disable the given cop(s).',
13
- require: 'Require Ruby file.',
14
- config: 'Specify configuration file.',
15
- auto_gen_config: ['Generate a configuration file acting as a',
16
- 'TODO list.'],
17
- force_exclusion: ['Force excluding files specified in the',
18
- 'configuration `Exclude` even if they are',
19
- 'explicitly passed as arguments.'],
20
- format: ['Choose an output formatter. This option',
21
- 'can be specified multiple times to enable',
22
- 'multiple formatters at the same time.',
23
- ' [p]rogress (default)',
24
- ' [s]imple',
25
- ' [c]lang',
26
- ' [d]isabled cops via inline comments',
27
- ' [fu]ubar',
28
- ' [e]macs',
29
- ' [j]son',
30
- ' [h]tml',
31
- ' [fi]les',
32
- ' [o]ffenses',
33
- ' custom formatter class name'],
34
- out: ['Write output to a file instead of STDOUT.',
35
- 'This option applies to the previously',
36
- 'specified --format, or the default format',
37
- 'if no format is specified.'],
38
- fail_level: ['Minimum severity (A/R/C/W/E/F) for exit',
39
- 'with error code.'],
40
- show_cops: ['Shows the given cops, or all cops by',
41
- 'default, and their configurations for the',
42
- 'current directory.'],
43
- fail_fast: ['Inspect files in order of modification',
44
- 'time and stop after the first file',
45
- 'containing offenses.'],
46
- debug: 'Display debug info.',
47
- display_cop_names: 'Display cop names in offense messages.',
48
- rails: 'Run extra Rails cops.',
49
- lint: 'Run only lint cops.',
50
- auto_correct: 'Auto-correct offenses.',
51
- no_color: 'Disable color output.',
52
- version: 'Display version.',
53
- verbose_version: 'Display verbose version.'
9
+ only: 'Run only the given cop(s).',
10
+ only_guide_cops: ['Run only cops for rules that link to a',
11
+ 'style guide.'],
12
+ except: 'Disable the given cop(s).',
13
+ require: 'Require Ruby file.',
14
+ config: 'Specify configuration file.',
15
+ auto_gen_config: ['Generate a configuration file acting as a',
16
+ 'TODO list.'],
17
+ force_exclusion: ['Force excluding files specified in the',
18
+ 'configuration `Exclude` even if they are',
19
+ 'explicitly passed as arguments.'],
20
+ format: ['Choose an output formatter. This option',
21
+ 'can be specified multiple times to enable',
22
+ 'multiple formatters at the same time.',
23
+ ' [p]rogress (default)',
24
+ ' [s]imple',
25
+ ' [c]lang',
26
+ ' [d]isabled cops via inline comments',
27
+ ' [fu]ubar',
28
+ ' [e]macs',
29
+ ' [j]son',
30
+ ' [h]tml',
31
+ ' [fi]les',
32
+ ' [o]ffenses',
33
+ ' custom formatter class name'],
34
+ out: ['Write output to a file instead of STDOUT.',
35
+ 'This option applies to the previously',
36
+ 'specified --format, or the default format',
37
+ 'if no format is specified.'],
38
+ fail_level: ['Minimum severity (A/R/C/W/E/F) for exit',
39
+ 'with error code.'],
40
+ show_cops: ['Shows the given cops, or all cops by',
41
+ 'default, and their configurations for the',
42
+ 'current directory.'],
43
+ fail_fast: ['Inspect files in order of modification',
44
+ 'time and stop after the first file',
45
+ 'containing offenses.'],
46
+ debug: 'Display debug info.',
47
+ display_cop_names: 'Display cop names in offense messages.',
48
+ display_style_guide: 'Display style guide URLs in offense messages.',
49
+ rails: 'Run extra Rails cops.',
50
+ lint: 'Run only lint cops.',
51
+ auto_correct: 'Auto-correct offenses.',
52
+ no_color: 'Disable color output.',
53
+ version: 'Display version.',
54
+ verbose_version: 'Display verbose version.'
54
55
  }
55
56
  end
56
57
 
@@ -165,6 +166,7 @@ module RuboCop
165
166
  option(opts, '-F', '--fail-fast')
166
167
  option(opts, '-d', '--debug')
167
168
  option(opts, '-D', '--display-cop-names')
169
+ option(opts, '-S', '--display-style-guide')
168
170
  option(opts, '-R', '--rails')
169
171
  option(opts, '-l', '--lint')
170
172
  option(opts, '-a', '--auto-correct')
@@ -6,6 +6,10 @@ module RuboCop
6
6
  module_function
7
7
 
8
8
  def relative_path(path, base_dir = Dir.pwd)
9
+ # Optimization for the common case where path begins with the base
10
+ # dir. Just cut off the first part.
11
+ return path[(base_dir.length + 1)..-1] if path.start_with?(base_dir)
12
+
9
13
  path_name = Pathname.new(File.expand_path(path))
10
14
  path_name.relative_path_from(Pathname.new(base_dir)).to_s
11
15
  end
@@ -25,15 +29,11 @@ module RuboCop
25
29
  # beginning with dot, but not a new match. That's a special case,
26
30
  # though. Not what we want to handle here. And this is a match that
27
31
  # we overrule. Only patterns like dir/**/.* can be used to match dot
28
- # files.
29
- return false if basename.start_with?('.')
32
+ # files. Hidden directories (starting with a dot) will also produce
33
+ # an old match, just like hidden files.
34
+ return false if path.split(File::SEPARATOR).any? { |s| hidden?(s) }
30
35
 
31
- # Hidden directories (starting with a dot) will also produce an old
32
- # match, just like hidden files. A deprecation warning would be wrong
33
- # for these.
34
- if path.split(File::SEPARATOR).none? { |s| s.start_with?('.') }
35
- issue_deprecation_warning(basename, pattern, config_path)
36
- end
36
+ issue_deprecation_warning(basename, pattern, config_path)
37
37
  end
38
38
  old_match || new_match
39
39
  when Regexp
@@ -50,5 +50,9 @@ module RuboCop
50
50
  warn("Warning: Deprecated pattern style '#{pattern}' in " \
51
51
  "#{config_path}#{instruction}")
52
52
  end
53
+
54
+ def hidden?(path_component)
55
+ path_component =~ /^\.[^.]/
56
+ end
53
57
  end
54
58
  end
@@ -36,8 +36,19 @@ module RuboCop
36
36
  comment_config.cop_disabled_line_ranges
37
37
  end
38
38
 
39
+ # Returns the source lines, line break characters removed, excluding a
40
+ # possible __END__ and everything that comes after.
39
41
  def lines
40
- @lines ||= raw_source.lines.map(&:chomp)
42
+ @lines ||= begin
43
+ all_lines = raw_source.lines.map(&:chomp)
44
+ last_token_line = tokens.any? ? tokens.last.pos.line : all_lines.count
45
+ result = []
46
+ all_lines.each_with_index do |line, ix|
47
+ break if ix >= last_token_line && line == '__END__'
48
+ result << line
49
+ end
50
+ result
51
+ end
41
52
  end
42
53
 
43
54
  def [](*args)
@@ -53,8 +53,8 @@ module RuboCop
53
53
 
54
54
  def full_options
55
55
  [].tap do |result|
56
- result.concat(formatters.map { |f| ['--format', f] }.flatten)
57
- result.concat(requires.map { |r| ['--require', r] }.flatten)
56
+ result.concat(formatters.flat_map { |f| ['--format', f] })
57
+ result.concat(requires.flat_map { |r| ['--require', r] })
58
58
  result.concat(options)
59
59
  result.concat(patterns)
60
60
  end
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '0.29.1'
6
+ STRING = '0.30.0'
7
7
 
8
8
  MSG = '%s (using Parser %s, running on %s %s %s)'
9
9
 
@@ -0,0 +1,145 @@
1
+ Nothing ground-breaking this time around, but the release is pretty exciting non-the-less.
2
+ It packs a whole new category of cops (`Performance`) and a bunch of new Rails cops.
3
+ A lot of the existing cops got new customization options and we squashed a ton of bugs.
4
+
5
+ Thanks to everyone who contributed to this release!
6
+
7
+ ### New features
8
+
9
+ * [#1600](https://github.com/bbatsov/rubocop/issues/1600): Add `line_count_based` and `semantic` styles to the `BlockDelimiters` (formerly `Blocks`) cop. ([@clowder][], [@mudge][])
10
+ * [#1712](https://github.com/bbatsov/rubocop/pull/1712): Set `Offense#corrected?` to `true`, `false`, or `nil` when it was, wasn't, or can't be auto-corrected, respectively. ([@vassilevsky][])
11
+ * [#1669](https://github.com/bbatsov/rubocop/pull/1669): Add command-line switch `--display-style-guide`. ([@marxarelli][])
12
+ * [#1405](https://github.com/bbatsov/rubocop/issues/1405): Add Rails TimeZone and Date cops. ([@palkan][])
13
+ * [#1641](https://github.com/bbatsov/rubocop/pull/1641): Add ruby19_no_mixed_keys style to `HashStyle` cop. ([@iainbeeston][])
14
+ * [#1604](https://github.com/bbatsov/rubocop/issues/1604): Add `IgnoreClassMethods` option to `TrivialAccessors` cop. ([@bbatsov][])
15
+ * [#1651](https://github.com/bbatsov/rubocop/issues/1651): The `Style/SpaceAroundOperators` cop now also detects extra spaces around operators. A list of operators that *may* be surrounded by multiple spaces is configurable. ([@bquorning][])
16
+ * Add auto-correct to `Encoding` cop. ([@rrosenblum][])
17
+ * [#1621](https://github.com/bbatsov/rubocop/issues/1621): `TrailingComma` has a new style `consistent_comma`. ([@tamird][])
18
+ * [#1611](https://github.com/bbatsov/rubocop/issues/1611): Add `empty`, `nil`, and `both` `SupportedStyles` to `EmptyElse` cop. Default is `both`. ([@rrosenblum][])
19
+ * [#1611](https://github.com/bbatsov/rubocop/issues/1611): Add new `MissingElse` cop. Default is to have this cop be disabled. ([@rrosenblum][])
20
+ * [#1602](https://github.com/bbatsov/rubocop/issues/1602): Add support for `# :nodoc` in `Documentation`. ([@lumeet][])
21
+ * [#1437](https://github.com/bbatsov/rubocop/issues/1437): Modify `HashSyntax` cop to allow the use of hash rockets for hashes that have symbol values when using ruby19 syntax. ([@rrosenblum][])
22
+ * New cop `Style/SymbolLiteral` makes sure you're not using the string within symbol syntax unless it's needed. ([@bbatsov][])
23
+ * [#1657](https://github.com/bbatsov/rubocop/issues/1657): Autocorrect can be turned off on a specific cop via the configuration. ([@jdoconnor][])
24
+ * New cop `Style/AutoResourceCleanup` suggests the use of block taking versions of methods that do resource cleanup. ([@bbatsov][])
25
+ * [#1275](https://github.com/bbatsov/rubocop/issues/1275): `WhileUntilModifier` cop does auto-correction. ([@lumeet][])
26
+ * New cop `Performance/ReverseEach` to convert `reverse.each` to `reverse_each`. ([@rrosenblum][])
27
+ * [#1281](https://github.com/bbatsov/rubocop/issues/1281): `IfUnlessModifier` cop does auto-correction. ([@lumeet][])
28
+ * New cop `Performance/Detect` to detect usage of `select.first`, `select.last`, `find_all.first`, and `find_all.last` and convert them to use `detect` instead. ([@palkan][], [@rrosenblum][])
29
+ * [#1728](https://github.com/bbatsov/rubocop/pull/1728): New cop `NonLocalExitFromIterator` checks for misused `return` in block. ([@ypresto][])
30
+ * New cop `Performance/Size` to convert calls to `count` on `Array` and `Hash` to `size`. ([@rrosenblum][])
31
+ * New cop `Performance/Sample` to convert usages of `shuffle.first`, `shuffle.last`, and `shuffle[Fixnum]` to `sample`. ([@rrosenblum][])
32
+ * New cop `Performance/FlatMap` to convert `Enumerable#map...Array#flatten` and `Enumerable#collect...Array#flatten` to `Enumerable#flat_map`. ([@rrosenblum][])
33
+ * [#1144](https://github.com/bbatsov/rubocop/issues/1144): New cop `ClosingParenthesisIndentation` checks the indentation of hanging closing parentheses. ([@jonas054][])
34
+ * New Rails cop `FindBy` identifies usages of `where.first` and `where.take`. ([@bbatsov][])
35
+ * New Rails cop `FindEach` identifies usages of `all.each`. ([@bbatsov][])
36
+ * [#1342](https://github.com/bbatsov/rubocop/issues/1342): `IndentationConsistency` is now configurable with the styles `normal` and `rails`. ([@jonas054][])
37
+
38
+ ### Bugs fixed
39
+
40
+ * [#1705](https://github.com/bbatsov/rubocop/issues/1705): Fix crash when reporting offenses of `MissingElse` cop. ([@gerry3][])
41
+ * [#1659](https://github.com/bbatsov/rubocop/pull/1659): Fix stack overflow with JRuby and Windows 8, during initial config validation. ([@pimterry][])
42
+ * [#1694](https://github.com/bbatsov/rubocop/issues/1694): Ignore methods with a `blockarg` in `TrivialAccessors`. ([@bbatsov][])
43
+ * [#1617](https://github.com/bbatsov/rubocop/issues/1617): Always read the html output template using utf-8. ([@bbatsov][])
44
+ * [#1684](https://github.com/bbatsov/rubocop/issues/1684): Ignore symbol keys like `:"string"` in `HashSyntax`. ([@bbatsov][])
45
+ * Handle explicit `begin` blocks in `Lint/Void`. ([@bbatsov][])
46
+ * Handle symbols in `Lint/Void`. ([@bbatsov][])
47
+ * [#1695](https://github.com/bbatsov/rubocop/pull/1695): Fix bug with `--auto-gen-config` and `SpaceInsideBlockBraces`. ([@meganemura][])
48
+ * Correct issues with whitespace around multi-line lambda arguments. ([@zvkemp][])
49
+ * [#1579](https://github.com/bbatsov/rubocop/issues/1579): Fix handling of similar-looking blocks in `BlockAlignment`. ([@lumeet][])
50
+ * [#1676](https://github.com/bbatsov/rubocop/pull/1676): Fix auto-correct in `Lambda` when a new multi-line lambda is used as an argument. ([@lumeet][])
51
+ * [#1656](https://github.com/bbatsov/rubocop/issues/1656): Fix bug that would include hidden directories implicitly. ([@jonas054][])
52
+ * [#1728](https://github.com/bbatsov/rubocop/pull/1728): Fix bug in `LiteralInInterpolation` and `AssignmentInCondition`. ([@ypresto][])
53
+ * [#1735](https://github.com/bbatsov/rubocop/issues/1735): Handle trailing space in `LineEndConcatenation` autocorrect. ([@jonas054][])
54
+ * [#1750](https://github.com/bbatsov/rubocop/issues/1750): Escape offending code lines output by the HTML formatter in case they contain markup. ([@jonas054][])
55
+ * [#1541](https://github.com/bbatsov/rubocop/issues/1541): No inspection of text that follows `__END__`. ([@jonas054][])
56
+ * Fix comment detection in `Style/Documentation`. ([@lumeet][])
57
+ * [#1637](https://github.com/bbatsov/rubocop/issues/1637): Fix handling of `binding` calls in `UnusedBlockArgument` and `UnusedMethodArgument`. ([@lumeet][])
58
+
59
+ ### Changes
60
+
61
+ * [#1397](https://github.com/bbatsov/rubocop/issues/1397): `UnneededPercentX` renamed to `CommandLiteral`. The cop can be configured to enforce using either `%x` or backticks around command literals, or using `%x` around multi-line commands and backticks around single-line commands. The cop ignores heredoc commands. ([@bquorning][])
62
+ * [#1020](https://github.com/bbatsov/rubocop/issues/1020): Removed the `MaxSlashes` configuration option for `RegexpLiteral`. Instead, the cop can be configured to enforce using either `%r` or slashes around regular expressions, or using `%r` around multi-line regexes and slashes around single-line regexes. ([@bquorning][])
63
+ * [#1734](https://github.com/bbatsov/rubocop/issues/1734): The default exclusion of hidden directories has been optimized for speed. ([@jonas054][])
64
+ * [#1673](https://github.com/bbatsov/rubocop/issues/1673): `Style/TrivialAccessors` now requires matching names by default. ([@bbatsov][])
65
+
66
+ [@bbatsov]: https://github.com/bbatsov
67
+ [@jonas054]: https://github.com/jonas054
68
+ [@yujinakayama]: https://github.com/yujinakayama
69
+ [@dblock]: https://github.com/dblock
70
+ [@nevir]: https://github.com/nevir
71
+ [@daviddavis]: https://github.com/daviddavis
72
+ [@sds]: https://github.com/sds
73
+ [@fancyremarker]: https://github.com/fancyremarker
74
+ [@sinisterchipmunk]: https://github.com/sinisterchipmunk
75
+ [@vonTronje]: https://github.com/vonTronje
76
+ [@agrimm]: https://github.com/agrimm
77
+ [@pmenglund]: https://github.com/pmenglund
78
+ [@chulkilee]: https://github.com/chulkilee
79
+ [@codez]: https://github.com/codez
80
+ [@emou]: https://github.com/emou
81
+ [@skanev]: http://github.com/skanev
82
+ [@claco]: http://github.com/claco
83
+ [@rifraf]: http://github.com/rifraf
84
+ [@scottmatthewman]: https://github.com/scottmatthewman
85
+ [@ma2gedev]: http://github.com/ma2gedev
86
+ [@jeremyolliver]: https://github.com/jeremyolliver
87
+ [@hannestyden]: https://github.com/hannestyden
88
+ [@geniou]: https://github.com/geniou
89
+ [@jkogara]: https://github.com/jkogara
90
+ [@tmorris-fiksu]: https://github.com/tmorris-fiksu
91
+ [@mockdeep]: https://github.com/mockdeep
92
+ [@hiroponz]: https://github.com/hiroponz
93
+ [@tamird]: https://github.com/tamird
94
+ [@fshowalter]: https://github.com/fshowalter
95
+ [@cschramm]: https://github.com/cschramm
96
+ [@bquorning]: https://github.com/bquorning
97
+ [@bcobb]: https://github.com/bcobb
98
+ [@irrationalfab]: https://github.com/irrationalfab
99
+ [@tommeier]: https://github.com/tommeier
100
+ [@sfeldon]: https://github.com/sfeldon
101
+ [@biinari]: https://github.com/biinari
102
+ [@barunio]: https://github.com/barunio
103
+ [@molawson]: https://github.com/molawson
104
+ [@wndhydrnt]: https://github.com/wndhydrnt
105
+ [@ggilder]: https://github.com/ggilder
106
+ [@salbertson]: https://github.com/salbertson
107
+ [@camilleldn]: https://github.com/camilleldn
108
+ [@mcls]: https://github.com/mcls
109
+ [@yous]: https://github.com/yous
110
+ [@vrthra]: https://github.com/vrthra
111
+ [@SkuliOskarsson]: https://github.com/SkuliOskarsson
112
+ [@jspanjers]: https://github.com/jspanjers
113
+ [@sch1zo]: https://github.com/sch1zo
114
+ [@smangelsdorf]: https://github.com/smangelsdorf
115
+ [@mvz]: https://github.com/mvz
116
+ [@jfelchner]: https://github.com/jfelchner
117
+ [@janraasch]: https://github.com/janraasch
118
+ [@jcarbo]: https://github.com/jcarbo
119
+ [@oneamtu]: https://github.com/oneamtu
120
+ [@toy]: https://github.com/toy
121
+ [@Koronen]: https://github.com/Koronen
122
+ [@blainesch]: https://github.com/blainesch
123
+ [@marxarelli]: https://github.com/marxarelli
124
+ [@katieschilling]: https://github.com/katieschilling
125
+ [@kakutani]: https://github.com/kakutani
126
+ [@rrosenblum]: https://github.com/rrosenblum
127
+ [@mattjmcnaughton]: https://github.com/mattjmcnaughton
128
+ [@huerlisi]: https://github.com/huerlisi
129
+ [@volkert]: https://github.com/volkert
130
+ [@lumeet]: https://github.com/lumeet
131
+ [@mmozuras]: https://github.com/mmozuras
132
+ [@d4rk5eed]: https://github.com/d4rk5eed
133
+ [@cshaffer]: https://github.com/cshaffer
134
+ [@eitoball]: https://github.com/eitoball
135
+ [@iainbeeston]: https://github.com/iainbeeston
136
+ [@pimterry]: https://github.com/pimterry
137
+ [@palkan]: https://github.com/palkan
138
+ [@jdoconnor]: https://github.com/jdoconnor
139
+ [@meganemura]: https://github.com/meganemura
140
+ [@zvkemp]: https://github.com/zvkemp
141
+ [@vassilevsky]: https://github.com/vassilevsky
142
+ [@gerry3]: https://github.com/gerry3
143
+ [@ypresto]: https://github.com/ypresto
144
+ [@clowder]: https://github.com/clowder
145
+ [@mudge]: https://github.com/mudge