2010-07-28 16 views
13

Un amigo me contó sobre Pylint y solo por curiosidad, lo ejecuté contra algunos de los módulos estándar de la biblioteca. Para mi sorpresa, las calificaciones fueron bajas. Aquí hay algunas pistas:Motivo de las bajas clasificaciones de Pylint del código de la biblioteca estándar de Python

os.py 
Your code has been rated at 3.55/10 

random.py 
Your code has been rated at 4.74/10 

lo corrió en algunos más módulos y el encontrado la calificación para ser ~ 6 - 7.

Me preguntaba la razón detrás de esto? ¿Se rompió Pylint o hay más factores en la calificación de los que tengo conocimiento? Estoy haciendo esta pregunta porque soy nuevo en Python y dependía de Pylint para ayudarme a mejorar mi estilo de codificación :)

Respuesta

12

Los valores predeterminados de Pylint son bastante estrictos y se quejan de cosas que no deberían. Por ejemplo, si usa foo(**kwargs), recibirá un mensaje sobre el uso de "magia". A veces parece que pylint está mirando a Python desde el punto de vista de un programador de Java.

Tendría que mirar los mensajes específicos y decidir si está de acuerdo con ellos.

Otros problemas incluyen no poder hacer condicionales específicos de la plataforma. En os.py, se queja:

F:119: Unable to import 'riscos' 
+0

Aah ya veo. No he visto los informes tan profundamente, estoy de acuerdo. ¡Fue la calificación lo que me sorprendió! – Joshua

6

Pylint fue escrito mucho después de la stdlib. Y el stdlib no se adhiere a las convenciones de nomenclatura estrictas, por ejemplo (PEP008 es reciente, wrt python). Los factores clave para conseguir "buenas" calificaciones pylint:

  • asegúrese de que su estilo de escritura de código es conforme a lo que está a la espera Pylint (o sintonizar Pylint para que coincida con su estilo/convenciones). Esto incluye funciones, variables, clases, nombres de métodos, espacios en varios lugares, etc.

  • escribe el código de Python de una manera estática y conveniente, y evita los trucos dinámicos.

  • docstrings escritura

Obviamente, la biblioteca estándar no está escrita para optimizar las calificaciones de los módulos de pylint.

El uso de Pylint no necesariamente mejorará su "estilo de codificación". Sin embargo, en varios casos hará que su código sea más fácil de entender, a veces a costa de cierta "pitonicidad".

+0

También hay muchos casos en los que seguir las sugerencias de PyLint con la configuración predeterminada hará que su código _harder_ sea comprensible. Si te encuentras haciendo que el código sea menos legible para satisfacer a PyLint, es una buena señal de que deberías ajustar la configuración de PyLint. La configuración predeterminada es muy estricta; esto es razonable porque desactivar las cosas es más obvio que habilitarlas. –

Cuestiones relacionadas