【发布时间】:2018-08-14 03:47:59
【问题描述】:
我正在从事一个相对较新的项目。我从 Rails 5.1.6 升级到 Rails 5.2。
当我第一次运行 Rubocop 时,我遇到了大约 1800 个“错误”。其中大部分是# frozen_string_literal: true 问题。然后我运行rubocop a,它将字符串插入到所有项目文件的顶部。我知道这是为 Ruby 3 做准备。
我注意到的一件事是,如果我有某些参数,它会删除 : 并在参数前面添加 %i。举个例子,
before_action :set_genre, only: [:show, :edit, :update, :destroy]
改为
before_action :set_genre, only: %i[show edit update destroy]
我有一个哈希的控制器变成了
:avatar,
social_id: [],
social_attributes: %i[site
link
active
facebook
youtube
twitter
我假设这是Rubocop a 产生的错误
问题 1.这是rubocop的异常行为吗? 2. 我是否正确假设我应该将受影响的代码格式化回 rubocop a 之前的位置 3. 我可以在 rubocop 配置中添加什么来避免这种情况,我应该再次运行 rubocop a 吗?
系统
- Ubuntu 16.04 LTS
- Apatana IDE
- ruby 2.4.1p111(2017-03-22 修订版 58053)[x86_64-linux]
- Rails 5.2.0
- rubocop (0.55.0)
【问题讨论】:
-
使用
-D标志运行 Rubocop,它会打印出警察的名字。谷歌这个名字,你会找到警察的文件。这是了解进行了哪些更改以及查看警察可能具有的不同配置的好地方。在你的情况下,警察是Style/SymbolArray。此外,检查 RuboCop 所基于的 Ruby 指南可以帮助理解某些规则,例如collections 描述符号数组。