vscode visual studio run linter disable code python pylint

python - visual - Pylint desactiva todas las advertencias para un archivo



run pylint visual studio code (5)

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 una manera fácil de pylint: disable en la pylint: disable todas las advertencias de un módulo?


De las preguntas frecuentes de PyLint

Con Pylint <0.25, agregue

# pylint: disable-all

al comienzo del módulo.

Pylint 0.26.1 y posteriores han cambiado el nombre de esa directiva a

# pylint: skip-file

(pero la primera versión se mantendrá para compatibilidad con versiones anteriores).

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.


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 produjo un error en 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 del comando pylint. Tomó demasiado tiempo para resolver esto; no debe haber un error file-ignored cuando ignora explícitamente un archivo.


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


PyLint tiene cinco "categorías" para mensajes (de los cuales 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 ahora es too-many-lines . Pero la ''C'' nos dice que too-many-lines es un mensaje de la Convención . Esto es confuso, porque los mensajes de la Convención frecuentemente 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 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 los nombres de mensajes de Advertencia 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 enteras de mensajes. Entonces, para desactivar todas las Advertencias , harías:

disable=W

Esto se puede usar 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 de 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 funcionará para el alcance en el que se coloca:

# pylint: disable=W

Para deshabilitarlo para un archivo completo, lo mejor es ponerlo en la parte superior del archivo. Sin embargo, incluso en la parte superior del archivo, descubrí que todavía recibía el mensaje de advertencia de los trailing-newlines (técnicamente una advertencia de convención , 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 desactivar todos los mensajes de Advertencia , Convención y Refactorización para este único archivo colocando el siguiente comando de PyLint en la primera línea:

# pylint: disable=W,C,R

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


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

Si desea desactivar 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: def __init__(self): self.foo_x = self.bar_x # pylint: enable=no-member class C456: def __init__(self): self.foo_x = self.bar_x