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?

Schmirgel
quelle
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

Schmirgel
quelle
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
36

Von rubocop/default.yml:

AllCops:
  Exclude:
    - 'node_modules/**/*'
    - 'vendor/**/*'
Dorian
quelle
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

DennyZhang
quelle
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
Dennis
quelle