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

eme*_*ery 62 ruby rubocop

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

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

eme*_*ery 79

根据orde的评论与手册的链接我找到了.rubocop.yml并添加了以下内容:

AllCops:
  Exclude:
    - 'path/to/excluded/file.rb'
Run Code Online (Sandbox Code Playgroud)

路径相对于.rubocop.yml

  • 因为很短,这可能应该是公认的答案。我刚遇到的一个重要注意事项是:它将覆盖默认的AllCops.Excludes(至少在Rails模式下将阻止rubocop检查`node_modules`和`vendor`)。因此,您可能还希望将这些添加到排除对象中。 (3认同)
  • 请注意,您也可以对**特定**警察执行此操作。例如 `Metrics/BlockLength: \n 排除: \n - 'Rakefile' \n - '**/*.rake' \n - 'factories/**/*.rb' \n - 'spec/**/* .rb'` 我希望您可以在代码片段中为子注释添加换行符。 (3认同)

Dor*_*ian 20

来自rubocop/default.yml:

AllCops:
  Exclude:
    - 'node_modules/**/*'
    - 'vendor/**/*'
Run Code Online (Sandbox Code Playgroud)


Den*_*nis 14

也可以考虑对单个文件的注释。非常适合在快速而肮脏的临时任务中忽略 linter。

# rubocop:disable all

module TempTask
  ...
end

# rubocop:enable all
Run Code Online (Sandbox Code Playgroud)


小智 11

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

见.rubocop.yml的正式解释这里.

AllCops:
  Exclude:
    - Berksfile
    - recipes/basic.rb
    - attributes/*.rb

# Customize rules
Metrics/LineLength:
  Max: 95

MethodLength:
  Max: 35

Metrics/AbcSize:
   Enabled: false

BlockLength:
  Max: 70
Run Code Online (Sandbox Code Playgroud)

我不断碰到rubocop错误和警告.因此我发表了这篇文章.

常见的Rubocop错误:提高您的Ruby代码质量

  • 根据说明链接,它是`Exclude:`而不是`Excludes:` (2认同)