SlideShare uma empresa Scribd logo
1 de 76
Baixar para ler offline
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
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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, . . .
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, . . .
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.
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.
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.
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.
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.
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.
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 !=
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 !=
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 !=
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 !=
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.
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.
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.
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.
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.
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, . . .
Análisis estático del código fuente en Python
   Reportes




Número de módulos procesados




       Ejemplo
       Report
       ======
       1895 statements analysed.
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
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
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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 !
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]
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.
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.
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()
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()
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 !
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.
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
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
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
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
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

Mais conteúdo relacionado

Destaque

Estudio de Consumo de Medios Online (Sexta edición)
Estudio de Consumo de Medios Online (Sexta edición)Estudio de Consumo de Medios Online (Sexta edición)
Estudio de Consumo de Medios Online (Sexta edición)IAB México
 
Enfermedad pelvica inflamatoria
Enfermedad pelvica inflamatoriaEnfermedad pelvica inflamatoria
Enfermedad pelvica inflamatoriaEnder Lima
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较Adam Lu
 
Mediacion escolar(2)
Mediacion escolar(2)Mediacion escolar(2)
Mediacion escolar(2)jessica
 
MODELOS DE PROTOCOLO EN BOGOTA
MODELOS DE PROTOCOLO EN BOGOTAMODELOS DE PROTOCOLO EN BOGOTA
MODELOS DE PROTOCOLO EN BOGOTAOscar Castillo
 
Tabla comparativa acerca de los diversos tipos de licencias de software
Tabla comparativa acerca de los diversos tipos de licencias de softwareTabla comparativa acerca de los diversos tipos de licencias de software
Tabla comparativa acerca de los diversos tipos de licencias de softwareAguilarO
 
Oil & Gas Magazine Noviembre 2016
Oil & Gas Magazine Noviembre 2016Oil & Gas Magazine Noviembre 2016
Oil & Gas Magazine Noviembre 2016Oil & Gas Magazine
 
Ciencia , progreso, calidad de vida
Ciencia , progreso, calidad de vidaCiencia , progreso, calidad de vida
Ciencia , progreso, calidad de vidaHenry Muyulema
 
Relaciones colectivas de trabajo
Relaciones colectivas de trabajoRelaciones colectivas de trabajo
Relaciones colectivas de trabajoReyes Campos
 
Antropologia Visual
Antropologia VisualAntropologia Visual
Antropologia VisualAthos
 
A estrategia do_oceano_azul
A estrategia do_oceano_azulA estrategia do_oceano_azul
A estrategia do_oceano_azulThais Muniz
 
Garment industry
Garment industryGarment industry
Garment industryManasa S
 
Teorías del aprendizaje y mediación sus relaciones y aportes 2
Teorías del aprendizaje  y mediación sus relaciones y aportes 2Teorías del aprendizaje  y mediación sus relaciones y aportes 2
Teorías del aprendizaje y mediación sus relaciones y aportes 2piasigno
 

Destaque (20)

Estudio de Consumo de Medios Online (Sexta edición)
Estudio de Consumo de Medios Online (Sexta edición)Estudio de Consumo de Medios Online (Sexta edición)
Estudio de Consumo de Medios Online (Sexta edición)
 
Enfermedad pelvica inflamatoria
Enfermedad pelvica inflamatoriaEnfermedad pelvica inflamatoria
Enfermedad pelvica inflamatoria
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较
 
Taller para padres
Taller para padresTaller para padres
Taller para padres
 
Mediacion escolar(2)
Mediacion escolar(2)Mediacion escolar(2)
Mediacion escolar(2)
 
200505 - Modelado de Software con UML
200505 - Modelado de Software con UML200505 - Modelado de Software con UML
200505 - Modelado de Software con UML
 
MODELOS DE PROTOCOLO EN BOGOTA
MODELOS DE PROTOCOLO EN BOGOTAMODELOS DE PROTOCOLO EN BOGOTA
MODELOS DE PROTOCOLO EN BOGOTA
 
Tabla comparativa acerca de los diversos tipos de licencias de software
Tabla comparativa acerca de los diversos tipos de licencias de softwareTabla comparativa acerca de los diversos tipos de licencias de software
Tabla comparativa acerca de los diversos tipos de licencias de software
 
Oil & Gas Magazine Noviembre 2016
Oil & Gas Magazine Noviembre 2016Oil & Gas Magazine Noviembre 2016
Oil & Gas Magazine Noviembre 2016
 
Ciencia , progreso, calidad de vida
Ciencia , progreso, calidad de vidaCiencia , progreso, calidad de vida
Ciencia , progreso, calidad de vida
 
Relaciones colectivas de trabajo
Relaciones colectivas de trabajoRelaciones colectivas de trabajo
Relaciones colectivas de trabajo
 
BOLETÍN INFORMATIVO
BOLETÍN INFORMATIVOBOLETÍN INFORMATIVO
BOLETÍN INFORMATIVO
 
Antropologia Visual
Antropologia VisualAntropologia Visual
Antropologia Visual
 
U2
U2U2
U2
 
"El terremoto y tsunami del 27 de febrero en chile. Crónica y lecciones apren...
"El terremoto y tsunami del 27 de febrero en chile. Crónica y lecciones apren..."El terremoto y tsunami del 27 de febrero en chile. Crónica y lecciones apren...
"El terremoto y tsunami del 27 de febrero en chile. Crónica y lecciones apren...
 
A estrategia do_oceano_azul
A estrategia do_oceano_azulA estrategia do_oceano_azul
A estrategia do_oceano_azul
 
Garment industry
Garment industryGarment industry
Garment industry
 
Teorías del aprendizaje y mediación sus relaciones y aportes 2
Teorías del aprendizaje  y mediación sus relaciones y aportes 2Teorías del aprendizaje  y mediación sus relaciones y aportes 2
Teorías del aprendizaje y mediación sus relaciones y aportes 2
 
Scala类型系统
Scala类型系统Scala类型系统
Scala类型系统
 
Análisis factores riesgo hd final
Análisis factores riesgo hd finalAnálisis factores riesgo hd final
Análisis factores riesgo hd final
 

Semelhante a Análisis estático Python Pylint

Diseño Digital 8° - Python - Elearning.pptx
Diseño Digital 8° - Python - Elearning.pptxDiseño Digital 8° - Python - Elearning.pptx
Diseño Digital 8° - Python - Elearning.pptxAlmostScire
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxjgs07
 
Introduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfIntroduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfFranciaMascarell
 
Introducción a Python
Introducción a Python Introducción a Python
Introducción a Python Eddie Malca
 

Semelhante a Análisis estático Python Pylint (9)

Diseño Digital 8° - Python - Elearning.pptx
Diseño Digital 8° - Python - Elearning.pptxDiseño Digital 8° - Python - Elearning.pptx
Diseño Digital 8° - Python - Elearning.pptx
 
Introduccion-a-Python.pdf
Introduccion-a-Python.pdfIntroduccion-a-Python.pdf
Introduccion-a-Python.pdf
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptx
 
¿Qué es Python?
¿Qué es Python?¿Qué es Python?
¿Qué es Python?
 
Introduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfIntroduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdf
 
Sesion8_Python.pptx
Sesion8_Python.pptxSesion8_Python.pptx
Sesion8_Python.pptx
 
poopython.pdf
poopython.pdfpoopython.pdf
poopython.pdf
 
Tutorial python3
Tutorial python3Tutorial python3
Tutorial python3
 
Introducción a Python
Introducción a Python Introducción a Python
Introducción a Python
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 

Último (16)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 

Análisis estático Python Pylint

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Análisis estático del código fuente en Python Reportes Número de módulos procesados Ejemplo Report ====== 1895 statements analysed.
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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