So weisen Sie Rubocop an, ein bestimmtes Verzeichnis oder eine bestimmte Datei zu ignorieren


80

Mein Projekt erweitert Open-Source-Klassen von einem Juwel eines Drittanbieters, das wir nicht an dieselben Codierungsstandards wie unseren eigenen Code halten möchten. Das Refactoring des Gem-Codes ist keine praktikable Option. Wir möchten nur, dass Rubocop den kopierten Code ignoriert.

Wie kann ich Rubocop anweisen, eine Datei oder ein Verzeichnis vollständig zu ignorieren?



1
Warum haben Sie den Quellcode des Edelsteins in den Ordner Ihres Projekts kopiert?
Spickermann

1
spickermann, weil wir einige Methoden für die Klasse ändern müssen und unser technischer Leiter sagte, wir dürfen keine Affen-Patches verwenden, um dies zu tun.
Schmirgel

Abgesehen davon, warum greift Rubocop den Quellcode des Edelsteins auf? Haben Sie das Juwel in einem Unterverzeichnis Ihres Projekts gebündelt installiert?
Meagar

2
Der manuelle Abschnitt, auf den in @ ordes Kommentar verwiesen wird, befindet sich jetzt unter rubocop.readthedocs.io/en/latest/configuration/… und nicht mehr auf der Github-Hauptseite.
David Moles

Antworten:


99

Gemäß dem Kommentar von orde mit dem Link zum Handbuch habe ich .rubocop.yml gefunden und Folgendes hinzugefügt:

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

Dabei ist der Pfad relativ zu .rubocop.yml


4
Dies sollte wahrscheinlich die akzeptierte Antwort sein, da sie kurz ist. Eine wichtige Anmerkung Ich lief in aber: dies wird den Standard AllCops.Excludes außer Kraft setzen, die in Rails - Modus zumindest, werden verhindert , dass rubocop von der Überprüfung node_modulesund vendor. Daher möchten Sie diese wahrscheinlich auch zu Ihren Ausschlüssen hinzufügen.
Ramfjord

1
Beachten Sie, dass Sie dies auch für bestimmte Polizisten tun können . ZB Metrics/BlockLength: \n Exclude: \n - 'Rakefile' \n - '**/*.rake' \n - 'factories/**/*.rb' \n - 'spec/**/*.rb'😞 Ich wünschte, Sie könnten Zeilenumbrüche in Codefragmenten für Unterkommentare machen.
stwr667


16

Hier ist die .rubocop.yml, die ich häufig verwendet habe.

Siehe formale Erklärung von .rubocop.yml hier .

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

# Customize rules
Metrics/LineLength:
  Max: 95

MethodLength:
  Max: 35

Metrics/AbcSize:
   Enabled: false

BlockLength:
  Max: 70

Ich stoße ständig auf Rubocop-Fehler und Warnungen. Daher habe ich diesen Beitrag veröffentlicht.

Häufige Rubocop-Fehler: Verbessern Sie die Qualität Ihres Ruby-Codes


2
Laut Erklärungslink ist es Exclude:nichtExcludes:
Beni Cherniavsky-Paskin

Meine Konfiguration benötigt Anführungszeichen um das Verzeichnis oder den Dateinamen
Natus Drew

HINWEIS: Verwenden Sie Folgendes, um alle Unterverzeichnisse und Dateien in einem Verzeichnis zu ignorieren - tmp/**/*.
Joshua Pinter

4

Kann auch Kommentare für eine einzelne Datei berücksichtigen. Ideal, um den Linter für eine schnelle und schmutzige vorübergehende Aufgabe zu ignorieren.

# rubocop:disable all

module TempTask
  ...
end

# rubocop:enable all
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.