2014-09-28 8 views
6

Sto usando il puntatore in un progetto e qualcosa mi dà fastidio.Pylint: disabilita l'avviso per sottoclasse

Ad esempio, creo un test di unità (sottoclasse di unittest.TestCase). Questa classe genitore ha un sacco di metodi, per cui pylint dice "R0904: Troppi metodi pubblici". Per "risolvere" questo avviso, disabilito localmente questo controllo.

Ma ho bisogno di scrivere un sacco di unit test e mi infastidisce disabilitare ogni volta questo controllo.

Quindi sto cercando un modo per disabilitare questo controllo per tutte le sottoclassi di unittest.TestCase. In un file di configurazione di pylint potrebbe essere, ma non ho trovato nulla.

Hai qualche idea per farlo?

Grazie mille per il vostro aiuto.

+0

Speriamo che ci sia un'opzione più semplice, ma se no ... puoi sempre scrivere un plugin che sottoclassi (o monkeypatches, ma sottoclasse sembra più pulito qui) il controllore del design. Lo farei aggiungendo una nuova opzione 'ignore-test-classes' e usiamola per saltare il controllo' max-public-methods' per qualsiasi classe che eredita da una delle classi ignorate. (Il codice che gestisce i 'ignore-iface-methods' del correttore di classe dovrebbe essere un buon modello.) In effetti, sembra che possa essere di uso sufficientemente generale da poterlo inviare upstream se lo si fa. – abarnert

+2

Non ti porta lì, ma puoi sempre rilasciare un 'pylintrc' in un pacchetto (cioè qualsiasi directory con un' __init __. Py' in esso), quindi se hai tutti i tuoi test in una directory 'tests', per esempio, puoi almeno disabilitarlo su una base di progetto, anche se non globalmente. –

+0

Grazie per la risposta. Abarnert, controllerò come creare un plugin per questo. Il mio problema non è solo per la classe unittest. Ad esempio, uso sqlalchemy e per sottoclasse di sqlalchemy.types.TypeDecorator. Proverò a scrivere un plugin generico per aggiungere un'opzione come disable-XXXX = unittest.TestCase, ..., ... –

risposta

2

È possibile definire un file pylintrc ed eseguire pylint utilizzando quello. È possibile farlo come segue:

$ pylint --generate-rcfile > pylintrc 

Ciò genera il file di pilastro predefinito. Questo dovrebbe avere un paragrafo che assomiglia:

# Disable the message, report, category or checker with the given id(s). You 
# can either give multiple identifier separated by comma (,) or put this option 
# multiple time (only on the command line, not in the configuration file where 
# it should appear only once). 
#disable= 

Si desidera aggiungere la seguente riga dopo che il paragrafo (ma entro i messaggi di controllo sezione):

disable=R0904 

o:

disable=too-many-public-methods 

Quindi è necessario eseguire pylint con tale file rc. Questo può essere fatto usando l'argomento --rcfile=<file>.

Problemi correlati