viernes, enero 08, 2010

Python Code Checkers

He encontrado que hay disponibles los siguientes analizadores de código.
pylint, pep8, pyflakes, pychecker

El objetivo de todas ellas es de mejora la calidad del código. Bien por detectar errores antes de llegar a la etapa de ejecución, bien por indicarnos errores obvios, o bien por corregirnos el estilo de codificación.

Ejemplo típico de error detectado: uso de varibles no definidas previamente.

Veamoslos uno a uno, brevemente (no va a ser un análisis profundo ni mucho menos.... es un vistazo rápido)

pep8
Analiza el estilo del codigo para que se conforme al pep8.
Ejemplo de uso: pep8 cs_example.py --show-pep8 --ignore=E501
En el ejemplo anterior le estamos indicando que cuando nos de un error, muestre el texto completo del pep8 que se inclumple y que nos ignore el error E501.
Si no tenemos un estilo que se adapte al pep8 pero similar, puede sernos útile gracias a la posibilidad de ignorar los errores.

Por defecto solo muestra un error de cada tipo.
Con -h nos muestra la ayuda.

Conclusión: Está muy bien, pero puede ser un poco pesado con algunas cosillas. Eso si como las podemos ignorar...
Eso si, sólo para comprobar estilo.


pychecker
Sus dos principales características son:
  • a diferencia del resto ejecuta el código
  • no comprueba estilo
Al igual que el anterior con -h nos muestra la ayuda (tiene muchas opciones).
Si sólo queremos parsear el fichero pasado se le debe indicar pasar el flag --only.
Por defecto ejecuta código de módulos importado, por lo que puede generar mucho ruido. Por fortuna se puede desactivar el análisis de módulos determinados por configuración.

pyflakes
Analisis estático
No chequea estilo
Limitado número de errores tratados.
Sólo analiza ficheros o directorios pasados por linea de comando.
No tiene ayuda en linea

pylint
Es la herramienta mas completa (basta con ver la ayuda (-h), permitiendo ademas el ser extendida mediante pluggins.
Hace sugerencias sobre como mejorar el código.

Conclusiones
Tras haber echado un vistazo rápido a ellos, y haber visto lo que se dice de ellos, parece que pylint es el mas completo.
El mas flojo parece que es pyflakes.
pep8 es curioso y tiene su utilidad ya que es muy estricto en el chequeo de las reglas.
pychecker por la forma de hacer el análisis podría detectar cosas que pylint no, pero habría que estudiarlo mas a fondo.... Y a pesar de ello no se si merecerá la pena. A priori diría que no.


Referencias:

No hay comentarios: