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


78

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

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



1
为什么将gem的源代码复制到项目的文件夹中?
spickermann '16

1
spickermann,因为我们需要在类上修改一些方法,而我们的技术负责人说,我们不允许使用猴子补丁来做到这一点。
金刚砂

顺便说一句,为什么Rubocop会选择宝石的源代码?您是否将gem捆绑安装到项目中的子目录中?
meagar

2
@orde注释中引用的手册部分现在位于rubocop.readthedocs.io/en/latest/configuration / ...而不是github主页上。
大卫·摩尔

Answers:


98

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

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

路径相对于.rubocop.yml的位置


4
因为很短,这可能应该是公认的答案。我刚遇到的一个重要说明:这将覆盖默认的AllCops.Excludes,至少在Rails模式下,它将阻止rubocop检查node_modulesvendor。因此,您可能还希望将这些添加到排除对象中。
Ramfjord

1
请注意,您也可以针对特定警察进行此操作。例如,Metrics/BlockLength: \n Exclude: \n - 'Rakefile' \n - '**/*.rake' \n - 'factories/**/*.rb' \n - 'spec/**/*.rb'😞希望您可以在代码段中添加换行符以用于子注释。
stwr667


15

为方便起见,这是我经常使用的.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

我不断被rubocop的错误和警告所困扰。因此,我发表了这篇文章。

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


2
根据解释链接,Exclude:不是Excludes:
Beni Cherniavsky-Paskin

我的配置需要在目录或文件名周围加引号
Natus Drew

注意:要忽略目录中的所有子目录和文件,请使用类似this的名称- tmp/**/*
约书亚·品特

4

也可以考虑单个文件的注释。非常适合无视短绒棉而进行的快速而肮脏的临时任务。

# rubocop:disable all

module TempTask
  ...
end

# rubocop:enable all
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.