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: disable
todas 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,
C0302
es ahoratoo-many-lines
. Pero la 'C' nos dice quetoo-many-lines
es 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
disable
opció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=W
Para 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-newlines
mensaje 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,R
Aparte del mensaje antes mencionado para rastrear nuevas líneas, esto hizo exactamente lo que necesitaba.
fuente
Sí, puede especificarlo
# pylint: skip-file
en 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-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: def __init__(self): self.foo_x = self.bar_x # pylint: enable=no-member class C456: def __init__(self): self.foo_x = self.bar_x
fuente
disable=locally-disabled
se puede agregar al archivo pylintrc.Otra opción es usar la
--ignore
opción de línea de comando para omitir el análisis de algunos archivos.fuente
Mi caso de uso es ejecutar
pylint *.py
para procesar todos los archivos en un directorio, excepto que quiero omitir un archivo en particular.Agregar
#pylint: skip-file
causó que pylint fallaraI: 8, 0: Ignoring entire file (file-ignored)
. Agregar#pylint: disable=file-ignored
no soluciona eso. Presumiblemente, es un error global en lugar de uno específico de archivo.La solución fue incluir
--disable=file-ignored
en las opciones del comando pylint. Me tomó demasiado tiempo darme cuenta de esto; no debería haber unfile-ignored
error cuando ignora explícitamente un archivo.fuente
pylintrc
archivo de configuración, no en una opción de comando.