我的项目正在从第三方 gem 扩展开源类,我们不想与我们自己的代码保持相同的编码标准。重构 gem 代码不是一个可行的选择。我们只是希望 Rubocop 忽略复制的代码。
如何指示 Rubocop 完全忽略文件或目录?
根据orde对手册链接的评论,我找到了 .rubocop.yml 并添加了以下内容:
AllCops:
Exclude:
- 'path/to/excluded/file.rb'
路径相对于 .rubocop.yml
AllCops:
Exclude:
- 'node_modules/**/*'
- 'vendor/**/*'
为了您的方便,这里是我经常使用的 .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 错误和警告。因此我发表了这篇文章。
也可以考虑单个文件的注释。非常适合忽略 linter 进行快速而肮脏的临时任务。
# rubocop:disable all
module TempTask
...
end
# rubocop:enable all
我正在使用较新的版本,每次添加Exclude
rubocop 都会挂起。原来我需要告诉如何合并Exclude
。这可能对你有用
require:
- rubocop-rails
inherit_mode:
merge:
- Exclude
AllCops:
Exclude:
- 'node_modules/**/*'
- 'vendor/**/*'
NewCops: disable
通过 Visual Studio 使用 Rubocop 时,我无法获得以前的答案。
我最终注意到 Rubocop 实际上并不是从我的项目文件的根目录执行,而是从我自己的根目录执行,因此使用:
# Doesn't work :(
AllCops:
Exclude:
- db/schema.rb
失败是因为db
它不在 Rubocop 正在寻找的目录中。
然后我将其更改为
# Works :)
AllCops:
Exclude:
- */schema.rb
它工作正常。请注意,文件名周围没有引号。