rubocop你如何修复失踪的魔法评论

时间:2017-10-31 00:24:22

标签: ruby rubygems rubocop frozen

我有一个ruby代码库,并且要查找我运行的缺陷

$ rubocop

我得到了

$ rubocop
Inspecting 153 files
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCWCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCWCCCCCCCWWCCCCC

Offenses:

Gemfile:1:1: C: Missing magic comment # frozen_string_literal: true.
source "https://rubygems.org"

我的Gemfile需要进行哪些修改才能让rubocop不抱怨?

4 个答案:

答案 0 :(得分:13)

添加

# frozen_string_literal: true

到每个Ruby文件的第一行。或者运行

rubocop -a

允许Rubocop自动修复所有可以修复的攻击。<​​/ p>

顺便说一下。我喜欢Rubocop并自己使用它,但我不会把它找到的东西称为缺陷。我看到这份清单更像是与同事讨论的建议或理由。

答案 1 :(得分:2)

如果您想更具体一点,并且仅对 rubocop运行# frozen_string_literal: true,则可以使用--only标志选项:

  

只运行指定部门中的指定警察和/或警察。

要查看这些文件,请执行以下操作:

rubocop --only Style/FrozenStringLiteralComment

要自动更正那些特定文件,请使用-a标志(如上一个答案中所述):

rubocop --only Style/FrozenStringLiteralComment -a

您可以在Rubocop的基本用法部分中查看更多Command-line flags

答案 2 :(得分:1)

尝试使用-D选项运行Rubocop:

rubocop -D
Inspecting 1 file
C

Offenses:

spec/rails_helper.rb:1:1: C: Style/FrozenStringLiteralComment: Missing magic comment # frozen_string_literal: true.
require 'spec_helper'
^

添加-D会导致Rubocop打印违反警察的名称,在本例中为Style/FrozenStringLiteralComment。然后,您可以在Rubocop文档中搜索该警察:

http://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/FrozenStringLiteralComment

  

此警察旨在帮助升级到Ruby 3.0。它会将注释# frozen_string_literal: true添加到文件顶部以启用冻结字符串文字。在Ruby 3.0中,冻结的字符串文字将是默认的。评论将添加到shebang和编码评论下面。冻结的字符串文字注释仅在Ruby 2.3 +中有效。

答案 3 :(得分:0)

如果您想忽略它,请添加到您的.rubocop.yml

Style/FrozenStringLiteralComment:
  Enabled: false

但是也许您想了解what "Magic comment" is,尤其是在使用Ruby 2.x的情况下