如何告诉 Rubocop 忽略特定目录或文件

How to tell Rubocop to ignore a specific directory or file

我的项目正在扩展来自第三方 gem 的开源 类,我们不想与我们自己的代码保持相同的编码标准。重构 gem 代码不是一个可行的选择。我们只是想让 Rubocop 忽略复制的代码。

如何指示 Rubocop 完全忽略文件或目录?

根据订单对 link 到 the manual 的评论,我找到了 .rubocop.yml 并添加了以下内容:

AllCops:
  Exclude:
    - 'path/to/excluded/file.rb'

路径相对于.rubocop.yml

为方便起见,这里是我经常使用的。rubocop.yml。

参见 .rubocop.yml here.

的正式解释
AllCops:
  Exclude:
    - Berksfile
    - recipes/basic.rb
    - attributes/*.rb

# Customize rules
Metrics/LineLength:
  Max: 95

MethodLength:
  Max: 35

Metrics/AbcSize:
   Enabled: false

BlockLength:
  Max: 70

我经常遇到 rubocop 错误和警告。因此我发布了这个 post.

Common Rubocop Errors: Improve Your Ruby Code Quality

来自rubocop/default.yml

AllCops:
  Exclude:
    - 'node_modules/**/*'
    - 'vendor/**/*'

也可以考虑对单个文件的评论。非常适合忽略 linter 以执行快速而肮脏的临时任务。

# rubocop:disable all

module TempTask
  ...
end

# rubocop:enable all

当通过 Visual Studio 使用 Rubocop 时,我无法得到以前的答案。

我最终注意到 Rubocop 实际上并不是从我的项目文件的根目录执行的,而是从我自己的根目录执行的,因此使用:

# Doesn't work :(
AllCops:
  Exclude:
    - db/schema.rb

失败,因为 db 不在 Rubocop 寻找它的同一目录中。

然后我改成了

# Works :)
AllCops:
  Exclude:
    - */schema.rb

而且效果很好。请注意,文件名两边没有引号。

我正在使用较新的版本,每次我添加 Exclude rubocop 都会挂起。结果我需要告诉我如何合并 Exclude。这可能对你有用

require:
  - rubocop-rails
inherit_mode:
  merge:
    - Exclude
AllCops:
  Exclude:
    - 'node_modules/**/*'
    - 'vendor/**/*'
  NewCops: disable