webentwicklung-frage-antwort-db.com.de

Wie deaktiviere ich nicht verwendete pylint-Importfehlermeldungen in vs-Code?

Wie kann ich deaktivieren, dass diese Fehlernachrichten in der Problembox in vs-Code angezeigt werden?

 error messages

5
Turtle Gurgle
"python.linting.pylintArgs": [
    "--disable=C0111"
],

Sie können auch nach Nachrichtentyp deaktivieren, z. B. --disable=W.

Eine gute Referenz ist www.pylintcode.info mit einer Liste von Nachrichten-IDs und Nachrichtentypen.

5
joepitz1

In Ihren VS-Code-Einstellungen (CTRL+COMMA)

"python.linting.pylintArgs": [
    "--disable=W0614"
],

Für weitere Ideen: https://github.com/DonJayamanne/pythonVSCode/issues/570

2
Patrick

Wie bereits erwähnt, können Sie ein Deaktivierungsargument angeben, um eine bestimmte Nachricht zu deaktivieren. Ich wollte darauf näher eingehen.

  1. Hier ist die Syntax für das Deaktivieren mehrerer Nachrichten und für das Bereitstellen mehrerer Argumente, was für mich nicht sofort offensichtlich war, wenn man es googelte:

    "python.linting.pylintArgs": [
        "--max-line-length=80",
        "--disable=W0142,W0403,W0613,W0232,R0903,R0913,C0103,R0914,C0304,F0401,W0402,E1101,W0614,C0111,C0301"
    ]
    
  2. Sie haben angegeben, dass Sie nach dem Deaktivieren dieser einen Nachricht deutlich mehr Fehler gefunden haben. Das könnte laut der Dokumentation tatsächlich sinnvoll sein:

    Python in Visual Studio-Code ist standardmäßig für die Verwendung einer Gruppe von .__ konfiguriert. Linting-Regeln, die für die größte Anzahl von Python geeignet sind Entwickler:

    • Aktivieren Sie alle Fehlermeldungen (E) und Fatal (F).
    • Deaktivieren Sie alle Meldungen für Konvention (C) und Refaktor (R). 
    • Deaktivieren Sie alle Warnmeldungen (W) mit Ausnahme der folgenden:
      • nicht erreichbar (W0101): Nicht erreichbarer Code
      • duplikatschlüssel (W0109): Schlüssel% r im Wörterbuch duplizieren
      • unnötiges Semikolon (W0301): Unnötiges Semikolon
      • globale Variable nicht zugewiesen (W0602): Verwendung von global für% r, es wird jedoch keine Zuweisung vorgenommen
      • nicht verwendete Variable (W0612): Nicht verwendete Variable% r
      • ausnahme für binäre Operation (W0711): Die Ausnahme für catch ist das Ergebnis einer binären "% s" -Operation
      • zeichenfolge für ungültiges Format (W1302): Ungültige Formatzeichenfolge
      • anomalous-Backslash-in-String (W1401): Anomaler Backslash in der Zeichenfolge
      • bad-Open-Modus (W1501): "% s" ist kein gültiger Modus für das Öffnen

    Diese Regeln werden durch die folgenden Standardargumente angewendet, die an Pylint übergeben werden:

    --disable=all
    --enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode
    

    Diese Argumente werden immer dann übergeben, wenn der python.linting.pylintUseMinimalCheckers ist auf true (Standardeinstellung) gesetzt . Wenn Sie in pylintArgs einen Wert angeben oder eine Pylint-Konfiguration verwenden Datei (siehe nächster Abschnitt), dann ist pylintUseMinimalCheckers implizit auf false gesetzt.

    Mit anderen Worten, PyLint ist in VS Code standardmäßig ziemlich locker und zeigt nur Fehlermeldungen für Fehler und einige handverlesene Warnungen an. Wenn Sie jedoch pylintArgs manuell auf etwas einstellen, wird pylintUseMinimalCheckers ignoriert und die Flutentore für alle Nachrichten geöffnet. Möglicherweise führte das Deaktivieren einer Nachricht dazu, dass mehr Nachrichten angezeigt werden. Ich bin mir jedoch nicht sicher, warum Sie überhaupt Meldungen über nicht verwendete Importe gesehen haben, da sie laut Dokumentation standardmäßig unterdrückt werden sollten.

  3. Eigentlich funktioniert das derzeit nicht:python.linting.pylintUseMinimalCheckers": true (für mich zu diesem Zeitpunkt, aber hoffentlich funktioniert es gut für Sie, zukünftige Leser). Um den gleichen Effekt zu erzielen, musste pylintArgs manuell auf den Wert gesetzt werden, den es automatisch festlegen sollte:

    "python.linting.pylintArgs": [
        "--disable=all",
        "--enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode"
    ]
    
  4. BONUS: Hier ist eine Erklärung der Liste der deaktivierten Nachrichten, die ich verwende, wie oben in Punkt 1 gezeigt. Es wird hauptsächlich aus hier genommen:

    # Disabled messages
    #    Pointless
    #       W0142 = *args and **kwargs support
    #       W0403 = Relative imports
    #       W0613 = Unused argument
    #       W0232 = Class has no __init__ method
    #       R0903 = Too few public methods
    #       R0913 = Too many arguments
    #       C0103 = Invalid name
    #       R0914 = Too many local variables
    #       C0304 = Final newline missing
    #
    #    PyLint's module importation is unreliable
    #       F0401 = Unable to import module
    #       W0402 = Uses of a deprecated module
    #       E1101 = Module x has no y member
    #
    #    Already an error when wildcard imports are used
    #       W0614 = Unused import from wildcard
    #
    #    Stricter messages that can be disabled until everything else has been fixed
    #       C0111 = Missing docstring
    #       C0301 = Line too long
    
1
MarredCheese