Як сказати Rubocop ігнорувати певний каталог або файл


82

Мій проект поширює класи з відкритим кодом на сторонній дорогоцінний камінь, який ми не хочемо дотримуватись тих самих стандартів кодування, що і наш власний код. Рефакторинг коду дорогоцінного каменя не є життєздатним варіантом. Ми просто хочемо, щоб Rubocop ігнорував скопійований код.

Як я можу доручити Rubocop повністю ігнорувати файл чи каталог?



1
Чому ви скопіювали вихідний код самоцвіту в папку вашого проекту?
spickermann

1
spickermann, тому що нам потрібно змінити деякі методи класу, і наш технічний керівник сказав, що нам заборонено використовувати мавпові патчі для цього.
наждак

Окрім того, чому Rubocop підбирає вихідний код Gem? Ви групово встановили дорогоцінний камінь у підкаталог вашого проекту?
меагар

2
Розділ керівництва, на який посилається коментар @ orde, тепер знаходиться на rubocop.readthedocs.io/en/latest/configuration/…, а не на головній сторінці github.
Девід Моул

Відповіді:


101

Відповідно до коментаря ордеру із посиланням на посібник, я знайшов .rubocop.yml і додав наступне:

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

де шлях відносно .rubocop.yml


4
Це, мабуть, повинна бути прийнятою відповіддю, оскільки вона коротка. Одне важливе зауваження, з яким я щойно зіткнувся: це замінить за замовчуванням AllCops.Excludes, що принаймні в режимі Rails завадить rubocop перевіряти node_modulesта vendor. Тож ви, ймовірно, захочете також додати їх до своїх виключень.
Рамфьорд,

1
Зверніть увагу, що ви можете зробити це і для конкретних копів. Наприклад, Metrics/BlockLength: \n Exclude: \n - 'Rakefile' \n - '**/*.rake' \n - 'factories/**/*.rb' \n - 'spec/**/*.rb'я бажаю, щоб ви могли робити нові рядки у фрагментах коду для суб-коментарів.
stwr667


16

Для вашої зручності, ось файл .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:
Бені Чернявський-Паскін

моєму конфігурації потрібні лапки навколо каталогу або імені файлу
Natus Drew

ПРИМІТКА. Щоб ігнорувати всі підкаталоги та файли в каталозі, використовуйте щось подібне - tmp/**/*.
Джошуа Пінтер

6

Також може розглядати коментарі до одного файлу. Чудово підходить для ігнорування лінтера для швидкого і брудного тимчасового завдання.

# rubocop:disable all

module TempTask
  ...
end

# rubocop:enable all
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.