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
Pyflakes debe servir para su propósito.
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 ...).
-E solo marcará lo que piense que es un error (es decir, sin advertencias, sin convenciones ...)
Para advertencias y convenciones persistentemente con deficiencia:
- Crear un archivo
~/.pylintrc
ejecutandopylint --generate-rcfile > ~/.pylintrc
- Editar
~/.pylintrc
- Descomentar
disable=
y cambiar esa línea paradisable=W,C
usando grep como :
pylint my_file.py | grep -v "^C"
- 1. Mejores prácticas de NAnt
- 2. mejores prácticas de ctags
- 3. Mejores prácticas de CoreData
- 4. Mejores prácticas de LDAP
- 5. ¿Mejores prácticas de Flex?
- 6. Mejores prácticas de Lucene.Net
- 7. Mejores prácticas de ActionListener
- 8. Mejores prácticas de Maven
- 9. Mejores prácticas de Sitecore
- 10. ¿Mejores prácticas de PHP?
- 11. Mejores prácticas de transacciones
- 12. Mejores prácticas de Javascript
- 13. DTO: mejores prácticas
- 14. Node.js + mejores prácticas repetitivo
- 15. Selenium, Nunit ¿Mejores prácticas?
- 16. CONEXIÓN SQL mejores prácticas
- 17. NSDateFormatter compartido: ¿mejores prácticas?
- 18. UITableView Mejores prácticas
- 19. NamedQuery: Mejores prácticas
- 20. GWT Mejores prácticas compuestas
- 21. Android strings.xml ¿Mejores prácticas?
- 22. CSS Esquema mejores prácticas
- 23. Java enumeración mejores prácticas
- 24. Integración continua: mejores prácticas
- 25. DataReader mejores prácticas
- 26. Mejores prácticas para C#
- 27. ¿Mejores prácticas de búsqueda inversa?
- 28. Guía de mejores prácticas: Swing
- 29. Mejores prácticas de Eclipse Workspace
- 30. 2.0 modelos de mejores prácticas
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. –
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