Estamos usando pylint dentro de nuestro sistema de construcción. Tenemos un paquete de Python dentro de nuestra base de código que tiene código desechable, y me gustaría deshabilitar todas las advertencias de un módulo temporalmente para poder dejar de molestar a los otros desarrolladores con estos mensajes superfluos. ¿Existe una forma sencilla de acceder a pylint: disabletodas las advertencias de un módulo?
86

PyLint tiene cinco "categorías" para mensajes (de las que soy consciente).
Estas categorías eran muy obvias en el pasado, pero los mensajes Pylint numerados ahora han sido reemplazados por nombres. Por ejemplo,
C0302es ahoratoo-many-lines. Pero la 'C' nos dice quetoo-many-lineses un mensaje de la Convención . Esto es confuso, porque los mensajes de la Convención con frecuencia aparecen como una advertencia, ya que muchos sistemas (como Syntastic ) parecen clasificar todo como una advertencia o un error. Sin embargo, el informe de PyLint todavía divide las cosas en estas categorías, por lo que definitivamente es compatible.Su pregunta se refiere específicamente a las advertencias , y todos los nombres de los mensajes de advertencia de PyLint comienzan con 'W'.
Fue un poco difícil para mí rastrear esto, pero esta respuesta finalmente me llevó a la respuesta. PyLint todavía admite la desactivación de categorías completas de mensajes. Entonces, para deshabilitar todas las advertencias , haría lo siguiente:
Esto se puede usar en la línea de comandos:
O puede ponerlo en su archivo pylintrc:
Nota: es posible que ya tenga la
disableopción en su archivo rc, en cuyo caso debe agregar la 'W' a esta lista.O puede ponerlo en línea en su código, donde funcionará para el alcance en el que se coloca:
# pylint: disable=WPara deshabilitarlo para un archivo completo, es mejor ponerlo en la parte superior del archivo. Sin embargo, incluso en la parte superior del archivo, descubrí que todavía recibía el
trailing-newlinesmensaje de advertencia (técnicamente una advertencia de la convención , pero estoy llegando a eso).En mi caso, tenía una biblioteca escrita por alguien de hace mucho tiempo. Funcionó bien, por lo que realmente no había necesidad de preocuparse por la convención moderna de Python, etc. Lo único que realmente me importaba eran los errores que probablemente romperían mi código.
Mi solución fue deshabilitar todos los mensajes de Advertencia , Convención y Refactorización para este archivo solo colocando el siguiente comando de PyLint en la primera línea:
# pylint: disable=W,C,RAparte del mensaje antes mencionado para rastrear nuevas líneas, esto hizo exactamente lo que necesitaba.
fuente
Sí, puede especificarlo
# pylint: skip-fileen el archivo, pero es una mala práctica desactivar todas las advertencias de un archivo.Si solo desea deshabilitar advertencias específicas, puede hacerlo agregando un comentario como
# pylint: disable=message-namepara deshabilitar el mensaje especificado para el resto del archivo, o al menos hasta# pylint: enable=message-name.Ejemplo:
# 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_xfuente
disable=locally-disabledse puede agregar al archivo pylintrc.Otra opción es usar la
--ignoreopción de línea de comando para omitir el análisis de algunos archivos.fuente
Mi caso de uso es ejecutar
pylint *.pypara procesar todos los archivos en un directorio, excepto que quiero omitir un archivo en particular.Agregar
#pylint: skip-filecausó que pylint fallaraI: 8, 0: Ignoring entire file (file-ignored). Agregar#pylint: disable=file-ignoredno soluciona eso. Presumiblemente, es un error global en lugar de uno específico de archivo.La solución fue incluir
--disable=file-ignoreden las opciones del comando pylint. Me tomó demasiado tiempo darme cuenta de esto; no debería haber unfile-ignorederror cuando ignora explícitamente un archivo.fuente
pylintrcarchivo de configuración, no en una opción de comando.