Pylint disabilita tutti gli avvisi per un file


90

Stiamo usando pylint nel nostro sistema di build. Abbiamo un pacchetto python all'interno della nostra base di codice che ha codice usa e getta e vorrei disabilitare temporaneamente tutti gli avvisi per un modulo in modo da poter smettere di disturbare gli altri sviluppatori con questi messaggi superflui. Esiste un modo semplice per pylint: disabletutti gli avvisi per un modulo?

Risposte:


127

Dalle FAQ di PyLint

Con Pylint <0,25, aggiungi

# pylint: disable-all

all'inizio del modulo.

Pylint 0.26.1 e versioni successive hanno rinominato tale direttiva in

# pylint: skip-file

(ma la prima versione verrà mantenuta per compatibilità con le versioni precedenti).

Per facilitare la ricerca di quali moduli vengono ignorati, viene emesso un messaggio a livello di informazione I0013. Con le versioni recenti di Pylint, se si utilizza la vecchia sintassi, viene emesso un messaggio I0014 aggiuntivo.


2
Nota: questo disabiliterà tutti gli avvisi e tutti gli errori . Se stai cercando un modo per disabilitare solo gli avvisi, vedi la mia risposta in questa pagina.
eatcrayons

32

PyLint ha cinque "categorie" per i messaggi (di cui sono a conoscenza).

Queste categorie erano molto ovvie in passato, ma i messaggi numerati di Pylint sono stati ora sostituiti da nomi. Ad esempio, C0302è adesso too-many-lines. Ma la "C" ci dice che too-many-linesè un messaggio della Convenzione . Ciò crea confusione, perché i messaggi di Convenzione spesso vengono visualizzati solo come avvertimenti, poiché molti sistemi (come Syntastic ) sembrano classificare tutto come avvertimento o come errore. Tuttavia, il rapporto PyLint suddivide ancora le cose in queste categorie, quindi è ancora decisamente supportato.

La tua domanda si riferisce specificamente agli avvisi e tutti i nomi dei messaggi di avviso di PyLint iniziano con "W".

È stato un po 'difficile per me rintracciarlo, ma questa risposta alla fine mi ha portato alla risposta. PyLint supporta ancora la disabilitazione di intere categorie di messaggi. Quindi, per disabilitare tutti gli avvisi , dovresti fare:

disable=W

Questo può essere utilizzato dalla riga di comando:

$ pylint --disable=W myfile.py

Oppure puoi inserirlo nel tuo file pylintrc:

[MESSAGES CONTROL]
disable=W

Nota: potresti già avere l' disableopzione nel tuo file rc, nel qual caso dovresti aggiungere la "W" a questo elenco.

Oppure puoi metterlo in linea nel tuo codice, dove funzionerà per l'ambito in cui è inserito:

# pylint: disable=W

Per disabilitarlo per un intero file, è meglio metterlo all'inizio del file. Tuttavia, anche all'inizio del file, ho scoperto che ricevevo ancora il trailing-newlinesmessaggio di avviso (tecnicamente un avviso di convenzione , ma ci sto arrivando).

Nel mio caso, avevo una libreria scritta da qualcuno molto tempo fa. Funzionava bene, quindi non c'era davvero bisogno di preoccuparsi della moderna convenzione di Python, ecc. Tutto quello che mi interessava erano gli errori che avrebbero probabilmente danneggiato il mio codice.

La mia soluzione era disabilitare tutti i messaggi di avviso , convenzione e refactoring per questo file solo inserendo il seguente comando PyLint sulla prima riga:

# pylint: disable=W,C,R

A parte il suddetto messaggio per le nuove righe finali, questo ha fatto esattamente quello di cui avevo bisogno.


17

Sì, è possibile specificare # pylint: skip-filenel file, ma è una cattiva pratica disabilitare tutti gli avvisi per un file.

Se vuoi disabilitare solo avvisi specifici, puoi farlo aggiungendo un commento come # pylint: disable=message-namedisabilitare il messaggio specificato per il resto del file, o almeno fino a # pylint: enable=message-name.

Esempio:

# pylint: disable=no-member
class C123:
    def __init__(self):
        self.foo_x = self.bar_x
# pylint: enable=no-member

class C456:
    def __init__(self):
        self.foo_x = self.bar_x

Per evitare che ti venga detto che un avviso specifico è stato disabilitato, è disable=locally-disabledpossibile aggiungere al pylintrc.
Colonnello Fazackerley

7

Un'altra opzione consiste nell'usare l' --ignoreopzione della riga di comando per saltare l'analisi per alcuni file.


0

Il mio caso d'uso è eseguire pylint *.pyper elaborare tutti i file in una directory, tranne per il fatto che voglio saltare un file particolare.

L'aggiunta ha #pylint: skip-filecausato il fallimento del pilastro I: 8, 0: Ignoring entire file (file-ignored). L'aggiunta #pylint: disable=file-ignorednon lo risolve. Presumibilmente, è un errore globale piuttosto che specifico del file.

La soluzione era includere --disable=file-ignorednelle opzioni di comando pylint. Ci è voluto troppo tempo per capirlo; non dovrebbe esserci un file-ignorederrore quando ignori esplicitamente un file.


1
Più idealmente, mettilo in un pylintrcfile di configurazione, non in un'opzione di comando.
Acumenus
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.