Pregunta

Estoy tratando de desactivar la advertencia C0321 ( "más de una sentencia en una sola línea" - A menudo dejo declaraciones if con resultados a corto de una sola línea en la misma línea), en Pylint 0.21.1 (si importa : astng 0.20.1, 0.50.3 común, Python 2.6.6 (R266: 84 292 15 Sep 2010 16:22:56).)

He intentado añadir disable=C0321 en el fichero de configuración Pylint, pero Pylint insiste en la presentación de informes de todos modos. Variaciones sobre esa línea (como disable=0321 o disable=C321) se marcan como errores, por lo Pylint hace reconocer la opción adecuada, es simplemente ignorarlo.

Es esto un error Pylint, o estoy haciendo algo mal? ¿Hay alguna forma de evitar esto? Realmente me gustaría deshacerse de parte de este ruido.

¿Fue útil?

Solución

pylint --generate-rcfile espectáculos de esta manera:

[MESSAGES CONTROL]

# Enable 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.
#enable=

# 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=

Así que parece que su ~/.pylintrc debe tener la línea disable= / s en el interior de una sección [MESSAGES CONTROL].

Otros consejos

I tenía este problema utilizando Eclipse y resuelto como sigue:

en la carpeta pylint (por ejemplo C:\Python26\Lib\site-packages\pylint), desplazamiento de retención, haga clic derecho y elegir abrir las ventanas comando en esa carpeta. Tipo:

lint.py --generate-rcfile > standard.rc

Esto crea el fichero de configuración standard.rc. Abrirlo en el Bloc de notas y bajo [MESSAGES CONTROL], elimine disable= y añadir el identificador del mensaje es que desea desactivar, por ejemplo:.

disable=W0511, C0321

Guardar el archivo, y en en Eclipse> Ventana-> Preferencias-> PyDev-> pylint, en caja de los argumentos, escriba:

--rcfile=C:\Python26\Lib\site-packages\pylint\standard.rc

Ahora debería funcionar ...


También puede añadir un comentario en la parte superior de su código que será interpretado por pylint:

# pylint: disable=C0321

Enlace a todos los pylint códigos de mensajes


Adición por ejemplo --disable-ids=C0321 en el cuadro argumentos no funciona. Todos los mensajes pylint disponibles se almacenan en la _messages diccionario, un atributo de una instancia de la clase pylint.utils.MessagesHandlerMixIn. Cuando se ejecuta con el pylint --disable-ids=... argumento (por lo menos sin un archivo de configuración), este diccionario está inicialmente vacío, levantando una excepción dentro de KeyError pylint (pylint.utils.MessagesHandlerMixIn.check_message_id(). En Eclipse, se puede ver este mensaje-error en la consola de Pylint (ventanas - Ve -. Consola, seleccione la consola Pylint de las opciones de la consola, además del icono de la consola)

A partir de. Pylint v 0.25.3, puede utilizar los nombres simbólicos para desactivar las advertencias en lugar de tener que recordar todos esos números de código . Por ejemplo:.

# pylint: disable=locally-disabled, multiple-statements, fixme, line-too-long

Este estilo es más instructivo que los códigos de error crípticos, y también más práctico ya que las versiones más recientes de Pylint sólo se emite el nombre simbólico, no el código de error.

La correspondencia entre nombres simbólicos y códigos puede consultarse aquí .

Un comentario de bloqueo se puede insertar en su propia línea, aplicando el disable para todo lo que viene después en el mismo bloque. Alternativamente, se puede insertar en el extremo de la línea para la que está destinado a aplicar.

Si las salidas pylint mensajes "Locally disabling", usted puede deshacerse de ellos mediante la inclusión de la locally-disabled desactivar primero como en el ejemplo anterior.

Para desactivar una advertencia a nivel local en un bloque, añadir

# pylint: disable=C0321

para ese bloque.

Hay varias maneras de desactivar las advertencias y errores de Pylint. Cuál de ellos para su uso tiene que ver con la forma global o local que desea aplicar la inutilización -. Una importante decisión de diseño

múltiples enfoques

  1. En uno o más archivos pylintrc.

Esto implica más que el archivo ~/.pylintrc (en el directorio $ HOME) como se describe por Chris Morgan. Pylint buscará los archivos rc, con una precedencia que los valores de los archivos "más cerca" más altamente:

  • Un archivo pylintrc en el directorio de trabajo actual; o

  • Si el directorio de trabajo actual está en un módulo de Python (es decir, que contiene un archivo __init__.py), en busca de la jerarquía de módulos de Python hasta que se encuentre un archivo pylintrc; o

  • El fichero indicado por la variable de entorno PYLINTRC; o

  • Si usted tiene un directorio principal que no es /root:

    • ~/.pylintrc; o

    • ~/.config/pylintrc; o

    • /etc/pylintrc

Tenga en cuenta que la mayoría de estos archivos se denominan pylintrc -. Sólo el archivo en ~ tiene un punto inicial

Para su archivo pylintrc, añadir líneas a mensajes pylint desactivar específicos. Por ejemplo:

[MESSAGES CONTROL]
disable=locally-disabled
  1. adicionales desables desde la línea de comandos pylint, como se describe por Aboo y Cairnarvon. Esto parece pylint --disable=bad-builtin. Repita --disable a elementos adicionales reprimir.

  2. adicionales desables de líneas de código Python individuales, como se describe por Imolit. Estas parecen some statement # pylint: disable=broad-except (comentario adicional en el extremo de la línea fuente original) y sólo se aplican a la línea actual . Mi enfoque es siempre poner estos en el final de otras líneas de código para que no se confundan con el estilo de bloque, véase más adelante.

  3. Otras desactiva definidos para los bloques grandes de código Python, hasta archivos de código fuente completo.

    • Estas parecen # pragma pylint: disable=bad-whitespace (nótese la palabra clave pragma).

    • Estos aplicará a cada línea después de el pragma. Poner un bloque de estos en la parte superior de un archivo hace que las supresiones se aplican a todo el archivo. Poner el mismo bloque inferior en el archivo hace aplican sólo a las líneas siguientes del bloque. Mi enfoque es siempre poner estos en una línea de su propia para que no se confundan con el estilo de una sola línea, véase más arriba.

    • Cuando una supresión sólo debería aplicarse en un lapso de código, el uso # pragma pylint: enable=bad-whitespace (ahora usando enable no disable) cese la represión.

Tenga en cuenta que la desactivación de una sola línea utiliza la sintaxis # pylint mientras que la desactivación de esta línea en adelante utiliza la sintaxis # pragma pylint. Estos son fáciles de confundir, especialmente al copiar y pegar.

Poniendo todo junto

Por lo general utilizan una combinación de estos enfoques.

  • Yo uso ~/.pylintrc para los estándares mundiales absolutamente - muy pocos de estos

  • .
  • Yo uso pylintrc a nivel de proyecto en diferentes niveles dentro de los módulos de Python cuando hay normas específicas del proyecto. Especialmente cuando usted está tomando en el código de otra persona o equipo, es posible que usan las convenciones que no se prefiere, pero no quieren volver a trabajar el código. Manteniendo los ajustes en este nivel no ayuda a difundir esas prácticas a otros proyectos.

  • Yo uso el pragmas estilo de bloque en la parte superior de los archivos de origen individuales. Me gusta pasar las pragmas off (mensajes) cese la represión en pleno desarrollo incluso para los estándares pylint no estoy de acuerdo con (como "muy pocos métodos públicos" - Siempre tengo que alerta sobre las clases de excepción personalizada) - pero es útil para ver más / tal vez todos los mensajes pylint cuando se está creando.De esa manera se pueden encontrar los casos que desea tratar con pragmas de una sola línea (ver más abajo), o simplemente añadir comentarios para el siguiente desarrollador para explicar por qué la advertencia de que está bien en este caso.

  • os dejo algunos de los pragmas de estilo bloque habilitado incluso cuando el código está listo para el registro de entrada. Trato de usar algunos de ellos, pero cuando tiene sentido para el módulo, que está bien hacer como documentación. Sin embargo, yo trato de dejar tan sólo en lo posible, preferiblemente ninguno.

  • Yo uso el estilo de una sola línea a la dirección comentario errores especialmente potentes. Por ejemplo, si hay un lugar donde realmente tiene sentido hacer except Exception as exc, puse el # pylint: disable=broad-except en esa línea en lugar de un enfoque más global, porque se trata de una extraña excepción y tiene que ser llamado a cabo, básicamente, como una forma de documentación.


Como todo lo demás en Python, que puede actuar a diferentes niveles de indirección. Mi consejo es pensar en lo que pertenece a qué nivel por lo que no termina con un enfoque demasiado indulgente con Pylint.

También puede utilizar el siguiente comando:

pylint --disable=C0321  test.py

Mi versión es pylint 0.25.1.

Este es un Preguntas :

  

4.1 ¿Es posible desactivar localmente un mensaje en particular?

     

Sí, esta característica se ha añadido en Pylint 0,11. Esto puede hacerse mediante la   añadiendo
  “#Pylint: disable = algunos-mensaje, otro uno” en el deseado   nivel de bloque o al final de la línea deseada de código.

Puede desactivar los mensajes ya sea por código o por nombre simbólico. Vea la docs (o ejecutar pylint --list-msgs en el terminal) para el pleno lista de los mensajes de pylint.
Los documentos también proporcionan un buen ejemplo de cómo utilizar este característica.

Sólo tienes que añadir una línea a desactivar lo que quiere desactivar. P.ej.

#pylint: disable = line-too-long, too-many-lines, no-name-in-module, import-error, multiple-imports, pointless-string-statement, wrong-import-order

Añadir esta en la posición # 1 en el módulo

En caso de que esto ayude a alguien, si está utilizando código de Visual Studio, se espera que el archivo esté en la codificación UTF8. Para generar el archivo, me encontré pylint --generate-rcfile | out-file -encoding utf8 .pylintrc en PowerShell.

Sintaxis

Python hace permiso de más de una instrucción en una línea, separados por punto y coma (;). Sin embargo, la limitación de cada línea a una declaración hace que sea más fácil para un ser humano a seguir la lógica de un programa cuando se lee a través de él.

Por lo tanto, otra forma de resolver este problema, es entender por qué el mensaje de pelusas esté allí y no poner más de una sentencia en una línea.

Sí, puede que le resulte más fácil escribir varias instrucciones por línea, sin embargo, pylint es para cualquier otro lector de su código no sólo usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top