2010-12-09 36 views
26

pyLint parece una buena herramienta para ejecutar análisis de código python. Sin embargo, nuestro principal objetivo es detectar cualquier posible error y no la convención de codificación. Habilitar todas las comprobaciones de pyLint parece generar mucho ruido. ¿Alguna sugerencia sobre un conjunto de características de pyLint que utiliza y es efectiva?Mejores prácticas de PyLint?

Respuesta

23

Puede bloquear todas las advertencias/errores que no le gusta, a través de:

pylint --disable = [Error, error]

He bloqueado éstos (descripción de http://www.logilab.org/card/pylintfeatures

W0511: Se usa cuando se detecta una nota de advertencia como FIXME o XXX

W0142: Usado * o * magic * Se usa cuando se llama a una función o método usando * args o ** kwargs para enviar argumentos. Esto no mejora la legibilidad y debe usarse con cuidado.

W0141: Función integrada utilizada% r Se utiliza cuando se utiliza una función incorporada listada en negro (consulte la opción de función incorrecta). Las funciones habituales en la lista negra son las de mapa o filtro, donde Python ofrece ahora una alternativa más limpia como la comprensión de listas.

R0912: Demasiadas ramificaciones (% s /% s) Se usa cuando una función o método tiene demasiadas ramificaciones, lo que dificulta su seguimiento.

R0913: Demasiados argumentos (% s /% s) Se usa cuando una función o método toma demasiados argumentos.

R0914: Demasiadas variables locales (% s /% s) Se utiliza cuando una función o método tiene demasiadas variables locales.

R0903: Demasiados métodos públicos (% s /% s) Se usa cuando la clase tiene muy pocos métodos públicos, así que asegúrese de que realmente lo vale.

W0212: Acceso a un miembro protegido% s de una clase de cliente Se usa cuando un miembro protegido (es decir, miembro de clase con un nombre que comienza con un guión bajo) tiene acceso fuera de la clase o un descendiente de la clase donde está definido.

W0312: Indentación encontrada con% ss en vez de% ss Se usa cuando hay pestañas y espacios mixtos en un módulo.

C0111: Doctring faltante Se usa cuando un módulo, función, clase o método no tiene docstring. Algunos métodos especiales, como init, no requieren necesariamente una docstring.

C0103: Nombre no válido "% s" (debe coincidir con% s) Se utiliza cuando el nombre no coincide con la expresión regular asociada a su tipo (constante, variable, clase ...).

+2

La descripción de deshabilitar determinados tipos de mensaje es correcta, pero creo que algunas de las opciones específicas de errores suprimidos son controvertidas. Cosas como "Demasiadas variables locales/ramas" es una gran bandera roja. –

+0

La opción '-d, --disable' no es una lista de Python con caracteres' [] '; es solo una lista delimitada por comas. Entonces no '--disable = [C0111, R0912]'; use '--disable = C0111, R0912'. – DrStrangepork

7

-E solo marcará lo que piense que es un error (es decir, sin advertencias, sin convenciones ...)

8

Para advertencias y convenciones persistentemente con deficiencia:

  1. Crear un archivo ~/.pylintrc ejecutando pylint --generate-rcfile > ~/.pylintrc
  2. Editar ~/.pylintrc
  3. Descomentar disable= y cambiar esa línea para disable=W,C
2

usando grep como :

pylint my_file.py | grep -v "^C"