Ist es möglich, eine einzelne bestimmte Zeile mit Pylint zu ignorieren?

150

Ich habe die folgende Zeile in meiner Kopfzeile:

import config.logging_settings

Dies ändert tatsächlich meine Python-Protokollierungseinstellungen, aber Pylint hält es für einen nicht verwendeten Import. Ich möchte unused-importWarnungen im Allgemeinen nicht entfernen. Ist es also möglich, diese eine bestimmte Zeile einfach zu ignorieren?

Es würde mir nichts ausmachen, eine .pylintrcfür dieses Projekt zu haben, daher werden Antworten, die eine Konfigurationsdatei ändern, akzeptiert.

Ansonsten wird auch so etwas geschätzt:

import config.logging_settings # pylint: disable-this-line-in-some-way
Die Unfun Cat
quelle

Antworten:

227

Die Pylint-Nachrichtensteuerung ist im Pylint-Handbuch dokumentiert :

Ist es möglich, eine bestimmte Nachricht lokal zu deaktivieren?

Ja, diese Funktion wurde in Pylint 0.11 hinzugefügt. Dies kann durch Hinzufügen
# pylint: disable=some-message,another-one
auf der gewünschten Blockebene oder am Ende der gewünschten Codezeile erfolgen

Sie können den Nachrichtencode oder die symbolischen Namen verwenden.

Beispielsweise

def test():
    # Disable all the no-member violations in this function
    # pylint: disable=no-member
    ...
global VAR # pylint: disable=global-statement

Das Handbuch enthält auch weitere Beispiele .

Es gibt ein Wiki , das alle Pylint-Nachrichten und ihre Codes dokumentiert.

jomo
quelle
Ich mag flake8 s # noqa. Ich möchte nicht so viele Kommentare im Code sehen. # nolintwäre noch klarer.
Nils Lindemann
61
import config.logging_settings # pylint: disable=W0611

Das war einfach und ist spezifisch für diese Linie.

Wie sthenault freundlicherweise betonte, können und sollten Sie die besser lesbare Form verwenden:

import config.logging_settings # pylint: disable=unused-import
Die Unfun Cat
quelle
Woher erhalten Sie das explizite Nachrichtensymbol? Mein Linter (der in Spyder) meldet es nicht und das in Jomos Antwort verlinkte Wiki listet es auch nicht auf.
Joooeey
Du meinst unused-import? Ich glaube, mein Linter hat mich gewarnt, als ich W0611 verwendet habe, aber es war> 3 Jahre, also erinnere ich mich nicht: / Sorry
The Unfun Cat
4

Ich glaube, was Sie suchen, ist ...

import config.logging_settings  # @UnusedImport

Beachten Sie das doppelte Leerzeichen vor dem Kommentar, um zu vermeiden, dass andere Formatierungswarnungen angezeigt werden.

Abhängig von Ihrer IDE (falls Sie eine verwenden) gibt es wahrscheinlich eine Option zum Hinzufügen der richtigen Ignorierregel (z. B. beim Drücken Ctrl1der Sonnenfinsternis, während sich der Cursor über der Warnung befindet, wird automatisch eine Warnung vorgeschlagen@UnusedImport

Basic
quelle
2
Dies funktioniert möglicherweise für einige IDEs, funktioniert jedoch nicht für emacs/flycheck. Vielen Dank. Bitte behalten Sie die Antwort, da sie jemand anderem helfen könnte.
Die Unfun Cat
Dies funktioniert nicht beim Ausführen pylintoder flake8über die Befehlszeile.
Jacob Tomlinson
@ JacobTomlinson Interessant, danke. Es ist das, was Pydev akzeptiert und ich hatte den Eindruck, dass Pyclipse einfach zu Pylint geschält wurde. Muss entweder leicht angepasst sein oder Eclipse verarbeitet diese Anweisungen und unterdrückt die Ausgabe.
Basic
4

Überprüfen Sie die Dateien unter https://github.com/PyCQA/pylint/tree/master/pylint/checkers . Ich habe keinen besseren Weg gefunden, um den Fehlernamen aus einer Nachricht zu erhalten, als entweder Strg + F-fing dieser Dateien oder die Github-Suchfunktion zu verwenden:

Wenn die Meldung "Kein Name ... im Modul ..." lautet, verwenden Sie die Suche:

No name %r in module %r repo:PyCQA/pylint/tree/master path:/pylint/checkers

Oder um weniger Ergebnisse zu erzielen:

"No name %r in module %r" repo:PyCQA/pylint/tree/master path:/pylint/checkers

Github wird Ihnen zeigen:

"E0611": (
    "No name %r in module %r",
    "no-name-in-module",
    "Used when a name cannot be found in a module.",

Sie können dann tun:

from collections import Sequence # pylint: disable=no-name-in-module
Loxaxe
quelle
1
Sie finden sie alle in den Dokumenten
Esteban
Danke, es ist viel besser als die Quelle durchzugehen. Ich habe zwei weitere Spiegel für das Pylint-Dokument gefunden. Anscheinend ist readthedoc der offizielle Spiegel. Der andere ist pylint.org
loxaxs