Cách yêu cầu Rubocop bỏ qua một thư mục hoặc tệp cụ thể


80

Dự án của tôi đang mở rộng các lớp mã nguồn mở từ đá quý của bên thứ ba mà chúng tôi không muốn giữ các tiêu chuẩn mã hóa giống như mã của riêng chúng tôi. Cấu trúc lại mã đá quý không phải là một lựa chọn khả thi. Chúng tôi chỉ muốn Rubocop bỏ qua mã đã sao chép.

Làm cách nào để hướng dẫn Rubocop bỏ qua hoàn toàn một tệp hoặc thư mục?



1
Tại sao bạn lại sao chép mã nguồn của gem vào thư mục của dự án?
spickermann

1
spickermann, bởi vì chúng tôi cần sửa đổi một số phương thức trên lớp và trưởng nhóm công nghệ của chúng tôi cho biết chúng tôi không được phép sử dụng các bản vá khỉ để làm điều đó.
emery

Ngoài ra, tại sao Rubocop lại lấy mã nguồn của Gem? Bạn đã gói-cài đặt gem vào một thư mục con trong dự án của mình chưa?
Meagar

2
Phần thủ công được tham chiếu trong nhận xét của @ orde hiện có tại rubocop.readthedocs.io/en/latest/configuration/… chứ không phải trên trang chính github.
David Moles

Câu trả lời:


100

Theo nhận xét của orde với liên kết đến hướng dẫn sử dụng, tôi đã tìm thấy .rubocop.yml và thêm vào những điều sau:

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

trong đó đường dẫn có liên quan đến .rubocop.yml


4
Đây có lẽ nên là câu trả lời được chấp nhận, vì nó ngắn. Một lưu ý quan trọng mà tôi vừa gặp phải: điều này sẽ ghi đè lên AllCops.Excludes mặc định, ít nhất là trong chế độ Rails, sẽ ngăn rubocop kiểm tra node_modulesvendor. Vì vậy, bạn có thể sẽ muốn thêm những thứ đó vào loại trừ của mình.
Ramfjord

1
Lưu ý rằng bạn cũng có thể làm điều này cho các cảnh sát cụ thể . Ví dụ: Metrics/BlockLength: \n Exclude: \n - 'Rakefile' \n - '**/*.rake' \n - 'factories/**/*.rb' \n - 'spec/**/*.rb'😞 Tôi ước bạn có thể làm các dòng mới trong các đoạn mã cho các bình luận phụ.
stwr667


16

Để thuận tiện cho bạn, đây là .rubocop.yml mà tôi thường xuyên sử dụng.

Xem giải thích chính thức về .rubocop.yml tại đây .

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

# Customize rules
Metrics/LineLength:
  Max: 95

MethodLength:
  Max: 35

Metrics/AbcSize:
   Enabled: false

BlockLength:
  Max: 70

Tôi liên tục gặp phải các lỗi rubocop và cảnh báo. Vì vậy, tôi đã xuất bản bài đăng này.

Các lỗi Rubocop thường gặp: Cải thiện chất lượng mã Ruby của bạn


2
theo link giải thích, đó là Exclude:khôngExcludes:
Beni Cherniavsky-Paskin

cấu hình của tôi cần dấu ngoặc kép quanh các thư mục hoặc tên tập tin
Natus Drew

LƯU Ý: Để bỏ qua tất cả các thư mục con và tệp trong một thư mục, hãy sử dụng một cái gì đó như thế này - tmp/**/*.
Joshua Pinter

5

Cũng có thể xem xét nhận xét cho một tệp duy nhất. Tuyệt vời để bỏ qua linter cho một nhiệm vụ tạm thời nhanh chóng và bẩn thỉu.

# rubocop:disable all

module TempTask
  ...
end

# rubocop:enable all
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.