2012-04-19 25 views
47

Estamos usando pylint dentro de nuestro sistema de compilación. Tenemos un paquete de Python dentro de nuestra base de código que tiene un código desechable, y me gustaría desactivar todas las advertencias de un módulo temporalmente para que pueda dejar de molestar a los otros desarrolladores con estos mensajes superfluos. ¿Hay alguna manera fácil de pylint: disable de todas las advertencias para un módulo?Pylint desactiva todas las advertencias para un archivo

Respuesta

56

Desde el PyLint FAQ

Con Pylint < 0,25, añadir

# pylint: disable-all 

al inicio del módulo.

Pylint 0.26.1 y hasta han cambiado de nombre dicha Directiva a

# pylint: skip-file 

(pero la primera versión se mantiene la compatibilidad hacia atrás).

Para facilitar la búsqueda de los módulos que se ignoran, se emite un mensaje de nivel de información I0013. Con las versiones recientes de Pylint, si usa la sintaxis anterior, se emite un mensaje I0014 adicional.

+1

Nota: esto deshabilitará todas las advertencias y * todos los errores *. Si está buscando una forma de desactivar * solo * advertencias, consulte mi respuesta en esta página. – eatcrayons

5

Otra opción es utilizar la opción de línea de comando --ignore para omitir el análisis de algunos archivos.

2

Sí, puede especificar # pylint: skip-file, pero es una mala práctica desactivar todas las advertencias de un archivo. El código de descarte no debería existir en una rama que se analiza mediante pylint.

Si desea deshabilitar solo advertencias específicas, puede hacerlo agregando un comentario como # pylint: disable=message-name para deshabilitar el mensaje especificado para el resto del archivo, o al menos hasta # pylint: enable=message-name.

Ejemplo:

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

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

Para evitar que se le diga que se ha inhabilitado una advertencia específica como esta, 'disable = local-disabled' se puede agregar a pylintrc. – ColonelFazackerley

+0

@ColonelFazackerley Sí, pero en ese momento es importante tener un archivo 'pylintrc' para su proyecto. Un ejemplo es [aquí] (https://github.com/impredicative/pyskeleton/blob/master/pylintrc). –

9

pylint tiene five "categories" for messages (de los cuales soy consciente).

Estas categorías solían ser muy obvias, pero los mensajes Pylint numerados ahora han sido reemplazados por nombres. Por ejemplo, C0302 ahora es too-many-lines. Pero la 'C' nos dice que too-many-lines es un mensaje Convención. Esto es confuso, ya que los mensajes de la Convención suelen aparecer como una advertencia, ya que muchos sistemas (como Syntastic) parecen clasificar todo como una advertencia o un error. Sin embargo, el informe de PyLint aún divide las cosas en estas categorías, por lo que definitivamente es compatible.

Su pregunta se refiere específicamente a advertencias, y todos pylint Advertencia nombres de mensajes comienzan con 'W'.

Fue un poco difícil para mí rastrear esto, pero this answer finalmente me llevó a la respuesta. PyLint todavía admite la desactivación de categorías enteras de mensajes.Por lo tanto, para desactivar todas las Advertencias, puede hacer:

disable=W 

Esto se puede utilizar en la línea de comandos:

$ pylint --disable=W myfile.py 

O bien, puede ponerlo en su archivo pylintrc:

[MESSAGES CONTROL] 
disable=W 

Nota: es posible que ya tenga la opción disable en su archivo rc, en cuyo caso debe agregar la 'W' a esta lista.

O bien, puede ponerlo en línea en su código, donde trabajará para el ámbito en el que se coloca:

# pylint: disable=W 

Para desactivarlo para un archivo completo, lo mejor es ponerlo en la parte superior del archivo. Sin embargo, incluso en la parte superior del archivo, encontré que todavía recibía el mensaje de advertencia trailing-newlines (técnicamente una advertencia de , pero estoy llegando a eso).

En mi caso, tuve una biblioteca escrita por alguien de hace mucho tiempo. Funcionó bien, así que realmente no había necesidad de preocuparse por la convención moderna de Python, etc. Todo lo que realmente me importaba eran los errores que probablemente romperían mi código.

Mi solución fue la de desactivar todo el Advertencia, Convención y refactoración mensajes para este archivo sólo colocando el siguiente comando pylint en la primera línea:

# pylint: disable=W,C,R 

Aparte de la el mensaje antes mencionado para las nuevas líneas finales, esto hizo exactamente lo que necesitaba.

0

Mi caso de uso es ejecutar pylint *.py para procesar todos los archivos en un directorio, excepto que quiero omitir un archivo en particular.

Al agregar #pylint: skip-file, falló la falla de la pila con I: 8, 0: Ignoring entire file (file-ignored). Agregar #pylint: disable=file-ignored no soluciona eso. Presumiblemente, es un error global en lugar de un archivo específico.

La solución era incluir --disable=file-ignored en las opciones de comando de la pila. Tomó demasiado tiempo para resolver esto; no debería haber un error file-ignored cuando ignora explícitamente un archivo.

+0

Más idealmente, colóquelo en un archivo de configuración 'pylintrc', no en una opción de comando. –

Cuestiones relacionadas