Análisis estático del código fuente en Python




           Análisis estático del código fuente en Python
               ...
Análisis estático del código fuente en Python




Contenido I
       1     Conceptos
               Análisis estático de c...
Análisis estático del código fuente en Python




Contenido II
                  Otras revisiones


       4     Reportes
...
Análisis estático del código fuente en Python
   Conceptos
     Análisis estático de código


¿Análisis estático de código...
Análisis estático del código fuente en Python
   Conceptos
     Pylint


¿Qué es Pylint?




       Definición
       Su mi...
Análisis estático del código fuente en Python
   Consideraciones
     Labores de revisión manual


Labores de revisión man...
Análisis estático del código fuente en Python
   Consideraciones
     Labores de revisión manual


Labores de revisión man...
Análisis estático del código fuente en Python
   Consideraciones
     Labores de revisión manual


Labores de revisión man...
Análisis estático del código fuente en Python
   Consideraciones
     Labores de revisión manual


Labores de revisión man...
Análisis estático del código fuente en Python
   Consideraciones
     Labores de revisión manual


Labores de revisión man...
Análisis estático del código fuente en Python
   Consideraciones
     Falsos positivos


Falsos positivos


              ...
Análisis estático del código fuente en Python
   Consideraciones
     Falsos positivos


Falsos positivos


              ...
Análisis estático del código fuente en Python
   Consideraciones
     Falsos positivos


Falsos positivos


              ...
Análisis estático del código fuente en Python
   Consideraciones
     Falsos positivos


Falsos positivos


              ...
Análisis estático del código fuente en Python
   Consideraciones
     Falsos positivos


Falsos positivos


              ...
Análisis estático del código fuente en Python
   Revisiones
     Básicas


Revisiones básicas


                Presencia ...
Análisis estático del código fuente en Python
   Revisiones
     Básicas


Revisiones básicas


                Presencia ...
Análisis estático del código fuente en Python
   Revisiones
     Básicas


Revisiones básicas


                Presencia ...
Análisis estático del código fuente en Python
   Revisiones
     Básicas


Revisiones básicas


                Presencia ...
Análisis estático del código fuente en Python
   Revisiones
     Básicas


Revisiones básicas


                Presencia ...
Análisis estático del código fuente en Python
   Revisiones
     Básicas


Revisiones básicas


                Presencia ...
Análisis estático del código fuente en Python
   Revisiones
     Básicas


Revisiones básicas


                Presencia ...
Análisis estático del código fuente en Python
   Revisiones
     Variables


Revisión de variables




                 De...
Análisis estático del código fuente en Python
   Revisiones
     Variables


Revisión de variables




                 De...
Análisis estático del código fuente en Python
   Revisiones
     Variables


Revisión de variables




                 De...
Análisis estático del código fuente en Python
   Revisiones
     Variables


Revisión de variables




                 De...
Análisis estático del código fuente en Python
   Revisiones
     Clases


Revisión de clases




                Métodos s...
Análisis estático del código fuente en Python
   Revisiones
     Clases


Revisión de clases




                Métodos s...
Análisis estático del código fuente en Python
   Revisiones
     Clases


Revisión de clases




                Métodos s...
Análisis estático del código fuente en Python
   Revisiones
     Clases


Revisión de clases




                Métodos s...
Análisis estático del código fuente en Python
   Revisiones
     Diseño


Revisión de diseño




                Número de...
Análisis estático del código fuente en Python
   Revisiones
     Diseño


Revisión de diseño




                Número de...
Análisis estático del código fuente en Python
   Revisiones
     Importaciones


Revisión de importaciones




           ...
Análisis estático del código fuente en Python
   Revisiones
     Importaciones


Revisión de importaciones




           ...
Análisis estático del código fuente en Python
   Revisiones
     Importaciones


Revisión de importaciones




           ...
Análisis estático del código fuente en Python
   Revisiones
     Importaciones


Revisión de importaciones




           ...
Análisis estático del código fuente en Python
   Revisiones
     Conflictos de estilos


Conflictos entre viejo/nuevo estilo...
Análisis estático del código fuente en Python
   Revisiones
     Conflictos de estilos


Conflictos entre viejo/nuevo estilo...
Análisis estático del código fuente en Python
   Revisiones
     Formato


Revisiones de formato




                Const...
Análisis estático del código fuente en Python
   Revisiones
     Formato


Revisiones de formato




                Const...
Análisis estático del código fuente en Python
   Revisiones
     Formato


Revisiones de formato




                Const...
Análisis estático del código fuente en Python
   Revisiones
     Formato


Revisiones de formato




                Const...
Análisis estático del código fuente en Python
   Revisiones
     Otras revisiones


Otras revisiones



                No...
Análisis estático del código fuente en Python
   Revisiones
     Otras revisiones


Otras revisiones



                No...
Análisis estático del código fuente en Python
   Revisiones
     Otras revisiones


Otras revisiones



                No...
Análisis estático del código fuente en Python
   Revisiones
     Otras revisiones


Otras revisiones



                No...
Análisis estático del código fuente en Python
   Revisiones
     Otras revisiones


Otras revisiones



                No...
Análisis estático del código fuente en Python
   Reportes




Reportes




       Posterior a los mensajes de análisis mos...
Análisis estático del código fuente en Python
   Reportes




Número de módulos procesados




       Ejemplo
       Repor...
Análisis estático del código fuente en Python
   Reportes




Duplicación de código fuente




                           ...
Análisis estático del código fuente en Python
   Reportes




Estadísticas por tipo




         type                numbe...
Análisis estático del código fuente en Python
   Reportes




Errores y advertencias por módulo



         module        ...
Análisis estático del código fuente en Python
   Reportes




Número de mensajes por categorías




            type      ...
Análisis estático del código fuente en Python
   Reportes




Tipos de categorías de los mensajes



       Refactorizació...
Análisis estático del código fuente en Python
   Reportes




Tipos de categorías de los mensajes



       Refactorizació...
Análisis estático del código fuente en Python
   Reportes




Tipos de categorías de los mensajes



       Refactorizació...
Análisis estático del código fuente en Python
   Reportes




Tipos de categorías de los mensajes



       Refactorizació...
Análisis estático del código fuente en Python
   Reportes




Tipos de categorías de los mensajes



       Refactorizació...
Análisis estático del código fuente en Python
   Reportes




Formato de salida



       El formato de salida del ejemplo...
Análisis estático del código fuente en Python
   Reportes




Formato de salida



       El formato de salida del ejemplo...
Análisis estático del código fuente en Python
   Reportes




Formato de salida



       El formato de salida del ejemplo...
Análisis estático del código fuente en Python
   Reportes




Formato de salida



       El formato de salida del ejemplo...
Análisis estático del código fuente en Python
   Reportes




Total de ocurrencias de errores


       El reporte ordena l...
Análisis estático del código fuente en Python
   Puntuación




Puntuación


       Si usted ejecuta Pylint varias veces s...
Análisis estático del código fuente en Python
   Proceso de corrección
     Instalación


Instalación en Debian GNU/Linux
...
Análisis estático del código fuente en Python
   Proceso de corrección
     Ejecución


Ejecución de Pylint




       Eje...
Análisis estático del código fuente en Python
   Proceso de corrección
     Conociendo el detalle del error


Conozca que ...
Análisis estático del código fuente en Python
   Proceso de corrección
     Conociendo el detalle del error


Se ha encont...
Análisis estático del código fuente en Python
   Proceso de corrección
     Conociendo el detalle del error


Se corrige l...
Análisis estático del código fuente en Python
   Proceso de corrección
     Primer avance


Resultado




       Ejemplo

...
Análisis estático del código fuente en Python
   Proceso de corrección
     Segundo avance


Segundo avance



       Ejem...
Análisis estático del código fuente en Python
   Proceso de corrección
     Segundo avance




       Ejemplo
       # Inc...
Análisis estático del código fuente en Python
   Proceso de corrección
     Segundo avance


Enlaces de interés




      ...
Análisis estático del código fuente en Python
   Proceso de corrección
     Segundo avance


Enlaces de interés




      ...
Análisis estático del código fuente en Python
   Proceso de corrección
     Segundo avance


Enlaces de interés




      ...
Análisis estático del código fuente en Python
   Proceso de corrección
     Segundo avance


Enlaces de interés




      ...
Próxima SlideShare
Cargando en…5
×

Pylint: Análisis estático del código fuente en Python

5.481 visualizaciones

Publicado el

Se describe el concepto detrás del análisis estático del código, se indican los pasos a seguir para la detección de errores mediante la herramienta Pylint, se exponen sus funcionalidades, reportes y se muestran ejemplos para corregir los errores encontrados por la herramienta.

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
5.481
En SlideShare
0
De insertados
0
Número de insertados
2.779
Acciones
Compartido
0
Descargas
36
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Pylint: Análisis estático del código fuente en Python

  1. 1. Análisis estático del código fuente en Python Análisis estático del código fuente en Python Pylint Milton Mazzarri <milmazz@gmail.com> Marzo, 2010
  2. 2. Análisis estático del código fuente en Python Contenido I 1 Conceptos Análisis estático de código Pylint 2 Consideraciones Labores de revisión manual Falsos positivos 3 Revisiones Básicas Variables Clases Diseño Importaciones Conflictos de estilos Formato
  3. 3. Análisis estático del código fuente en Python Contenido II Otras revisiones 4 Reportes 5 Puntuación 6 Proceso de corrección Instalación Ejecución Conociendo el detalle del error Primer avance Segundo avance
  4. 4. Análisis estático del código fuente en Python Conceptos Análisis estático de código ¿Análisis estático de código? Definición El análisis estático del código se refiere al proceso de evaluación del código fuente sin ejecutarlo, en base a este análisis se obtendrá información que nos permita mejorar la línea base de nuestro proyecto, sin alterar la semántica original de la aplicación.
  5. 5. Análisis estático del código fuente en Python Conceptos Pylint ¿Qué es Pylint? Definición Su misión es analizar código en Python en busca de errores o síntomas de mala calidad en el código fuente. Cabe destacar que por omisión, la guía de estilo a la que se trata de apegar Pylint es la descrita en el PEP-8.
  6. 6. Análisis estático del código fuente en Python Consideraciones Labores de revisión manual Labores de revisión manual Pylint no sustituye las labores de revisión continua de alto nivel: Estructura. Arquitectura. Comunicación con elementos externos como bibliotecas. Diseño.
  7. 7. Análisis estático del código fuente en Python Consideraciones Labores de revisión manual Labores de revisión manual Pylint no sustituye las labores de revisión continua de alto nivel: Estructura. Arquitectura. Comunicación con elementos externos como bibliotecas. Diseño.
  8. 8. Análisis estático del código fuente en Python Consideraciones Labores de revisión manual Labores de revisión manual Pylint no sustituye las labores de revisión continua de alto nivel: Estructura. Arquitectura. Comunicación con elementos externos como bibliotecas. Diseño.
  9. 9. Análisis estático del código fuente en Python Consideraciones Labores de revisión manual Labores de revisión manual Pylint no sustituye las labores de revisión continua de alto nivel: Estructura. Arquitectura. Comunicación con elementos externos como bibliotecas. Diseño.
  10. 10. Análisis estático del código fuente en Python Consideraciones Labores de revisión manual Labores de revisión manual Pylint no sustituye las labores de revisión continua de alto nivel: Estructura. Arquitectura. Comunicación con elementos externos como bibliotecas. Diseño.
  11. 11. Análisis estático del código fuente en Python Consideraciones Falsos positivos Falsos positivos Pylint puede arrojar falsos positivos Puede entenderse al recibir una alerta de algún cambio que usted realizó conscientemente. Algunas de las advertencias encontradas pueden ser peligrosas en algunos contextos, pero en otros puede no aplicar. Se hacen revisiones de declaraciones que a usted realmente no le importan. Informe al revisor para ajustar la configuración de Pylint para no ser informado acerca de ciertos tipos de advertencias o errores.
  12. 12. Análisis estático del código fuente en Python Consideraciones Falsos positivos Falsos positivos Pylint puede arrojar falsos positivos Puede entenderse al recibir una alerta de algún cambio que usted realizó conscientemente. Algunas de las advertencias encontradas pueden ser peligrosas en algunos contextos, pero en otros puede no aplicar. Se hacen revisiones de declaraciones que a usted realmente no le importan. Informe al revisor para ajustar la configuración de Pylint para no ser informado acerca de ciertos tipos de advertencias o errores.
  13. 13. Análisis estático del código fuente en Python Consideraciones Falsos positivos Falsos positivos Pylint puede arrojar falsos positivos Puede entenderse al recibir una alerta de algún cambio que usted realizó conscientemente. Algunas de las advertencias encontradas pueden ser peligrosas en algunos contextos, pero en otros puede no aplicar. Se hacen revisiones de declaraciones que a usted realmente no le importan. Informe al revisor para ajustar la configuración de Pylint para no ser informado acerca de ciertos tipos de advertencias o errores.
  14. 14. Análisis estático del código fuente en Python Consideraciones Falsos positivos Falsos positivos Pylint puede arrojar falsos positivos Puede entenderse al recibir una alerta de algún cambio que usted realizó conscientemente. Algunas de las advertencias encontradas pueden ser peligrosas en algunos contextos, pero en otros puede no aplicar. Se hacen revisiones de declaraciones que a usted realmente no le importan. Informe al revisor para ajustar la configuración de Pylint para no ser informado acerca de ciertos tipos de advertencias o errores.
  15. 15. Análisis estático del código fuente en Python Consideraciones Falsos positivos Falsos positivos Pylint puede arrojar falsos positivos Puede entenderse al recibir una alerta de algún cambio que usted realizó conscientemente. Algunas de las advertencias encontradas pueden ser peligrosas en algunos contextos, pero en otros puede no aplicar. Se hacen revisiones de declaraciones que a usted realmente no le importan. Informe al revisor para ajustar la configuración de Pylint para no ser informado acerca de ciertos tipos de advertencias o errores.
  16. 16. Análisis estático del código fuente en Python Revisiones Básicas Revisiones básicas Presencia de cadenas de documentación (docstring). Nombres de módulos, clases, funciones, métodos, argumentos, variables. Número de argumentos, variables locales, retornos y sentencias en funciones y métodos. Atributos requeridos para módulos. Valores por omisión no recomendados como argumentos. Redefinición de funciones, métodos, clases. Uso de declaraciones globales.
  17. 17. Análisis estático del código fuente en Python Revisiones Básicas Revisiones básicas Presencia de cadenas de documentación (docstring). Nombres de módulos, clases, funciones, métodos, argumentos, variables. Número de argumentos, variables locales, retornos y sentencias en funciones y métodos. Atributos requeridos para módulos. Valores por omisión no recomendados como argumentos. Redefinición de funciones, métodos, clases. Uso de declaraciones globales.
  18. 18. Análisis estático del código fuente en Python Revisiones Básicas Revisiones básicas Presencia de cadenas de documentación (docstring). Nombres de módulos, clases, funciones, métodos, argumentos, variables. Número de argumentos, variables locales, retornos y sentencias en funciones y métodos. Atributos requeridos para módulos. Valores por omisión no recomendados como argumentos. Redefinición de funciones, métodos, clases. Uso de declaraciones globales.
  19. 19. Análisis estático del código fuente en Python Revisiones Básicas Revisiones básicas Presencia de cadenas de documentación (docstring). Nombres de módulos, clases, funciones, métodos, argumentos, variables. Número de argumentos, variables locales, retornos y sentencias en funciones y métodos. Atributos requeridos para módulos. Valores por omisión no recomendados como argumentos. Redefinición de funciones, métodos, clases. Uso de declaraciones globales.
  20. 20. Análisis estático del código fuente en Python Revisiones Básicas Revisiones básicas Presencia de cadenas de documentación (docstring). Nombres de módulos, clases, funciones, métodos, argumentos, variables. Número de argumentos, variables locales, retornos y sentencias en funciones y métodos. Atributos requeridos para módulos. Valores por omisión no recomendados como argumentos. Redefinición de funciones, métodos, clases. Uso de declaraciones globales.
  21. 21. Análisis estático del código fuente en Python Revisiones Básicas Revisiones básicas Presencia de cadenas de documentación (docstring). Nombres de módulos, clases, funciones, métodos, argumentos, variables. Número de argumentos, variables locales, retornos y sentencias en funciones y métodos. Atributos requeridos para módulos. Valores por omisión no recomendados como argumentos. Redefinición de funciones, métodos, clases. Uso de declaraciones globales.
  22. 22. Análisis estático del código fuente en Python Revisiones Básicas Revisiones básicas Presencia de cadenas de documentación (docstring). Nombres de módulos, clases, funciones, métodos, argumentos, variables. Número de argumentos, variables locales, retornos y sentencias en funciones y métodos. Atributos requeridos para módulos. Valores por omisión no recomendados como argumentos. Redefinición de funciones, métodos, clases. Uso de declaraciones globales.
  23. 23. Análisis estático del código fuente en Python Revisiones Variables Revisión de variables Determina si una variable o import no está siendo usado. Variables indefinidas. Redefinición de variables proveniente de módulos builtins o de ámbito externo. Uso de una variable antes de asignación de valor.
  24. 24. Análisis estático del código fuente en Python Revisiones Variables Revisión de variables Determina si una variable o import no está siendo usado. Variables indefinidas. Redefinición de variables proveniente de módulos builtins o de ámbito externo. Uso de una variable antes de asignación de valor.
  25. 25. Análisis estático del código fuente en Python Revisiones Variables Revisión de variables Determina si una variable o import no está siendo usado. Variables indefinidas. Redefinición de variables proveniente de módulos builtins o de ámbito externo. Uso de una variable antes de asignación de valor.
  26. 26. Análisis estático del código fuente en Python Revisiones Variables Revisión de variables Determina si una variable o import no está siendo usado. Variables indefinidas. Redefinición de variables proveniente de módulos builtins o de ámbito externo. Uso de una variable antes de asignación de valor.
  27. 27. Análisis estático del código fuente en Python Revisiones Clases Revisión de clases Métodos sin self como primer argumento. Acceso único a miembros existentes vía self Atributos no definidos en el método __init__ Código inalcanzable.
  28. 28. Análisis estático del código fuente en Python Revisiones Clases Revisión de clases Métodos sin self como primer argumento. Acceso único a miembros existentes vía self Atributos no definidos en el método __init__ Código inalcanzable.
  29. 29. Análisis estático del código fuente en Python Revisiones Clases Revisión de clases Métodos sin self como primer argumento. Acceso único a miembros existentes vía self Atributos no definidos en el método __init__ Código inalcanzable.
  30. 30. Análisis estático del código fuente en Python Revisiones Clases Revisión de clases Métodos sin self como primer argumento. Acceso único a miembros existentes vía self Atributos no definidos en el método __init__ Código inalcanzable.
  31. 31. Análisis estático del código fuente en Python Revisiones Diseño Revisión de diseño Número de métodos, atributos, variables locales, . . . Tamaño, complejidad de funciones, métodos, . . .
  32. 32. Análisis estático del código fuente en Python Revisiones Diseño Revisión de diseño Número de métodos, atributos, variables locales, . . . Tamaño, complejidad de funciones, métodos, . . .
  33. 33. Análisis estático del código fuente en Python Revisiones Importaciones Revisión de importaciones Dependencias externas. imports relativos o importe de todos los métodos, variables vía * (wildcard). Uso de imports cíclicos. Uso de módulos obsoletos.
  34. 34. Análisis estático del código fuente en Python Revisiones Importaciones Revisión de importaciones Dependencias externas. imports relativos o importe de todos los métodos, variables vía * (wildcard). Uso de imports cíclicos. Uso de módulos obsoletos.
  35. 35. Análisis estático del código fuente en Python Revisiones Importaciones Revisión de importaciones Dependencias externas. imports relativos o importe de todos los métodos, variables vía * (wildcard). Uso de imports cíclicos. Uso de módulos obsoletos.
  36. 36. Análisis estático del código fuente en Python Revisiones Importaciones Revisión de importaciones Dependencias externas. imports relativos o importe de todos los métodos, variables vía * (wildcard). Uso de imports cíclicos. Uso de módulos obsoletos.
  37. 37. Análisis estático del código fuente en Python Revisiones Conflictos de estilos Conflictos entre viejo/nuevo estilo Uso de property, __slots__, super. Uso de super.
  38. 38. Análisis estático del código fuente en Python Revisiones Conflictos de estilos Conflictos entre viejo/nuevo estilo Uso de property, __slots__, super. Uso de super.
  39. 39. Análisis estático del código fuente en Python Revisiones Formato Revisiones de formato Construcciones no autorizadas Sangrado estricto del código Longitud de la línea Uso de <> en vez de !=
  40. 40. Análisis estático del código fuente en Python Revisiones Formato Revisiones de formato Construcciones no autorizadas Sangrado estricto del código Longitud de la línea Uso de <> en vez de !=
  41. 41. Análisis estático del código fuente en Python Revisiones Formato Revisiones de formato Construcciones no autorizadas Sangrado estricto del código Longitud de la línea Uso de <> en vez de !=
  42. 42. Análisis estático del código fuente en Python Revisiones Formato Revisiones de formato Construcciones no autorizadas Sangrado estricto del código Longitud de la línea Uso de <> en vez de !=
  43. 43. Análisis estático del código fuente en Python Revisiones Otras revisiones Otras revisiones Notas de alerta en el código como FIXME, XXX. Código fuente con caracteres non-ASCII sin tener una declaración de encoding. PEP-263 Búsqueda por similitudes o duplicación en el código fuente. Revisión de excepciones. Revisiones de tipo haciendo uso de inferencia de tipos.
  44. 44. Análisis estático del código fuente en Python Revisiones Otras revisiones Otras revisiones Notas de alerta en el código como FIXME, XXX. Código fuente con caracteres non-ASCII sin tener una declaración de encoding. PEP-263 Búsqueda por similitudes o duplicación en el código fuente. Revisión de excepciones. Revisiones de tipo haciendo uso de inferencia de tipos.
  45. 45. Análisis estático del código fuente en Python Revisiones Otras revisiones Otras revisiones Notas de alerta en el código como FIXME, XXX. Código fuente con caracteres non-ASCII sin tener una declaración de encoding. PEP-263 Búsqueda por similitudes o duplicación en el código fuente. Revisión de excepciones. Revisiones de tipo haciendo uso de inferencia de tipos.
  46. 46. Análisis estático del código fuente en Python Revisiones Otras revisiones Otras revisiones Notas de alerta en el código como FIXME, XXX. Código fuente con caracteres non-ASCII sin tener una declaración de encoding. PEP-263 Búsqueda por similitudes o duplicación en el código fuente. Revisión de excepciones. Revisiones de tipo haciendo uso de inferencia de tipos.
  47. 47. Análisis estático del código fuente en Python Revisiones Otras revisiones Otras revisiones Notas de alerta en el código como FIXME, XXX. Código fuente con caracteres non-ASCII sin tener una declaración de encoding. PEP-263 Búsqueda por similitudes o duplicación en el código fuente. Revisión de excepciones. Revisiones de tipo haciendo uso de inferencia de tipos.
  48. 48. Análisis estático del código fuente en Python Reportes Reportes Posterior a los mensajes de análisis mostrados, Pylint despliega una serie de reportes, cada uno de ellos enfocándose en un aspecto particular del proyecto, como el número de mensajes por categorias, dependencias de módulos, . . .
  49. 49. Análisis estático del código fuente en Python Reportes Número de módulos procesados Ejemplo Report ====== 1895 statements analysed.
  50. 50. Análisis estático del código fuente en Python Reportes Duplicación de código fuente now previous difference nb duplicated lines 274 NC NC percent duplicated lines 5.591 NC NC
  51. 51. Análisis estático del código fuente en Python Reportes Estadísticas por tipo type number %documented %badname module 14 85.71 57.14 class 12 100.00 66.67 method 145 85.52 83.45 function 1 100.00 0.00
  52. 52. Análisis estático del código fuente en Python Reportes Errores y advertencias por módulo module error warning refactor convention tests.test_cheese 75.00 1.93 9.09 20.48 tests.test_spam 25.00 1.86 4.55 27.01 tests.test_main 0.00 78.97 33.33 4.17 tests.test_eggs 0.00 2.35 4.55 28.94 tests.test_ham 0.00 1.89 4.55 4.11 tests.common 0.00 1.86 9.09 3.56
  53. 53. Análisis estático del código fuente en Python Reportes Número de mensajes por categorías type number previous difference convention 1655 NC NC refactor 66 NC NC warning 28339 NC NC error 4 NC NC
  54. 54. Análisis estático del código fuente en Python Reportes Tipos de categorías de los mensajes Refactorización Violación en alguna buena práctica. Convención Violación al estándar de codificación. Advertencia Problemas de estilo o errores de programación menores. Error Errores de programación importantes, es probable que se trate de un bug. Fatal Errores que no permiten a Pylint avanzar en su análisis.
  55. 55. Análisis estático del código fuente en Python Reportes Tipos de categorías de los mensajes Refactorización Violación en alguna buena práctica. Convención Violación al estándar de codificación. Advertencia Problemas de estilo o errores de programación menores. Error Errores de programación importantes, es probable que se trate de un bug. Fatal Errores que no permiten a Pylint avanzar en su análisis.
  56. 56. Análisis estático del código fuente en Python Reportes Tipos de categorías de los mensajes Refactorización Violación en alguna buena práctica. Convención Violación al estándar de codificación. Advertencia Problemas de estilo o errores de programación menores. Error Errores de programación importantes, es probable que se trate de un bug. Fatal Errores que no permiten a Pylint avanzar en su análisis.
  57. 57. Análisis estático del código fuente en Python Reportes Tipos de categorías de los mensajes Refactorización Violación en alguna buena práctica. Convención Violación al estándar de codificación. Advertencia Problemas de estilo o errores de programación menores. Error Errores de programación importantes, es probable que se trate de un bug. Fatal Errores que no permiten a Pylint avanzar en su análisis.
  58. 58. Análisis estático del código fuente en Python Reportes Tipos de categorías de los mensajes Refactorización Violación en alguna buena práctica. Convención Violación al estándar de codificación. Advertencia Problemas de estilo o errores de programación menores. Error Errores de programación importantes, es probable que se trate de un bug. Fatal Errores que no permiten a Pylint avanzar en su análisis.
  59. 59. Análisis estático del código fuente en Python Reportes Formato de salida El formato de salida del ejemplo utilizado está en modo texto, usted puede elegir entre: Coloreado Texto MSVS (Visual Studio) HTML.
  60. 60. Análisis estático del código fuente en Python Reportes Formato de salida El formato de salida del ejemplo utilizado está en modo texto, usted puede elegir entre: Coloreado Texto MSVS (Visual Studio) HTML.
  61. 61. Análisis estático del código fuente en Python Reportes Formato de salida El formato de salida del ejemplo utilizado está en modo texto, usted puede elegir entre: Coloreado Texto MSVS (Visual Studio) HTML.
  62. 62. Análisis estático del código fuente en Python Reportes Formato de salida El formato de salida del ejemplo utilizado está en modo texto, usted puede elegir entre: Coloreado Texto MSVS (Visual Studio) HTML.
  63. 63. Análisis estático del código fuente en Python Reportes Total de ocurrencias de errores El reporte ordena los resultados por el id del mensaje. message id occurences W0612 11010 W0621 10837 W0614 6169 C0301 1133 C0103 346 W0105 103 C0324 100
  64. 64. Análisis estático del código fuente en Python Puntuación Puntuación Si usted ejecuta Pylint varias veces sobre el mismo código, podrá ver el puntaje de la corrida previa junto al resultado de la corrida actual, de esta manera puede saber si ha mejorado la calidad de su código o no. Ejemplo Global evaluation ----------- Your code has been rated at -148.73/10 You have to do something quick !
  65. 65. Análisis estático del código fuente en Python Proceso de corrección Instalación Instalación en Debian GNU/Linux Ejemplo # aptitude install pylint $ pylint -version pylint 0.19.0, astng 0.19.3, common 0.48.1 Python 2.5.5 (r255:77872, Mar 16 2010, 01:44:35) [GCC 4.4.3]
  66. 66. Análisis estático del código fuente en Python Proceso de corrección Ejecución Ejecución de Pylint Ejemplo $ cd montecarlo $ export PYTHONPATH=$PWD $ pylint -rcfile=pylintrc -f html -files-output=y scia/tests/ El resumen del reporte lo podrá encontrar en pylint_global.html.
  67. 67. Análisis estático del código fuente en Python Proceso de corrección Conociendo el detalle del error Conozca que produjo el error Ejemplo $ pylint -help-msg=W0612 :W0612: *Unused variable %r* Used when a variable is defined but not used. This message belongs to the variables checker.
  68. 68. Análisis estático del código fuente en Python Proceso de corrección Conociendo el detalle del error Se ha encontrado la falla Ejemplo # scia.tests.test_main.py def test_ham(self): from scia.tests.common import * cheese = TestSpam(self.main, self.delayKey, ... cheese.test_spam_method()
  69. 69. Análisis estático del código fuente en Python Proceso de corrección Conociendo el detalle del error Se corrige la falla Ejemplo # scia.tests.test_main.py def test_ham(self): from scia.tests.common import TestSpam cheese = TestSpam(self.main, self.delayKey, self.delayMouse, self.delayThread, self.app) cheese.test_spam_method()
  70. 70. Análisis estático del código fuente en Python Proceso de corrección Primer avance Resultado Ejemplo Global evaluation ----------- Your code has been rated at -33.18/10 You have to do something quick !
  71. 71. Análisis estático del código fuente en Python Proceso de corrección Segundo avance Segundo avance Ejemplo $ pylint -help-msg=W0614 :W0614: *Unused import %s from wildcard import* Used when an imported module or variable is not used from a ’from X import *’ style import. This message belongs to the variables checker.
  72. 72. Análisis estático del código fuente en Python Proceso de corrección Segundo avance Ejemplo # Incorrecto from PyQt4.QtCore import * # Correcto from PyQt4.QtCore import QTimer, QPoint, SIGNAL
  73. 73. Análisis estático del código fuente en Python Proceso de corrección Segundo avance Enlaces de interés Pylint: Análisis estático del código en Python Mensajes en Pylint Características de Pylint Tutorial de Pylint
  74. 74. Análisis estático del código fuente en Python Proceso de corrección Segundo avance Enlaces de interés Pylint: Análisis estático del código en Python Mensajes en Pylint Características de Pylint Tutorial de Pylint
  75. 75. Análisis estático del código fuente en Python Proceso de corrección Segundo avance Enlaces de interés Pylint: Análisis estático del código en Python Mensajes en Pylint Características de Pylint Tutorial de Pylint
  76. 76. Análisis estático del código fuente en Python Proceso de corrección Segundo avance Enlaces de interés Pylint: Análisis estático del código en Python Mensajes en Pylint Características de Pylint Tutorial de Pylint

×