Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AnalisisEstaticoCodigo PDF
AnalisisEstaticoCodigo PDF
Imagen: http://www.flickr.com/photos/scott_waterman/178367110/
Qu es el Anlisis Esttico del Cdigo?
ndice
Sobre el autor 03
Sobre la licencia 03
Conclusiones 10
PMD 13
CPD 14
Checkstyle 15
Findbugs 16
Otras herramientas 16
Codenarc 18
Pgina 2 de 19
Qu es el Anlisis Esttico del Cdigo?
Sobre el autor
Ral Expsito es un ingeniero en informtica residente en Getafe (Madrid) a
quien le gusta materializar ideas, la creatividad, el diseo, el cuidado de los
detalles y la simplicidad, definindose por tanto como una persona con
vocacin tcnica pero a la vez creativa y con inquietudes.
Podis encontrarle en su pgina web:
http://raulexposito.com/
Sobre la licencia
Este documento se publica bajo la licencia Creative Commons 3.0 de
Reconocimiento-No comercial-Sin obras derivadas, lo que significa que
puedes realizar y distribuir copias siempre que:
reconozcas la autora de estos textos,
no haya un beneficio comercial en tu distribucin de las copias y
no modifiques el contenido.
Pgina 3 de 19
Qu es el Anlisis Esttico del Cdigo?
Pgina 4 de 19
Qu es el Anlisis Esttico del Cdigo?
Es, por tanto, una tcnica que se aplica directamente sobre el cdigo
fuente tal cual, sin transformaciones previas ni cambios de ningn tipo. La
idea es que, en base a ese cdigo fuente, podamos obtener informacin que
nos permita mejorar la base de cdigo manteniendo la semntica
original.
reducir el rendimiento,
provocar errores en el software,
complicar el flujo de datos,
tener una excesiva complejidad,
suponer un problema en la seguridad.
Pgina 5 de 19
Qu es el Anlisis Esttico del Cdigo?
Podramos decir que existen dos. Por un lado est el anlisis automtico
que realiza un programa de ordenador sobre nuestro cdigo y por otro est
el anlisis manual que realiza una persona. Cada uno de estos anlisis
persigue unos objetivos concretos:
Ahora que conocemos las ventajas del anlisis esttico del cdigo, que
sabemos lo til que es, que sabemos que existe el anlisis manual y el
automtico y que sabemos que nos va a ayudar a hacer nuestros
desarrollos cabe preguntarnos cada cunto debo realizar este anlisis?,
Pgina 6 de 19
Qu es el Anlisis Esttico del Cdigo?
todos los das antes de acostarme?, cada vez que escriba una nueva lnea
de cdigo en mi aplicacin?, o una vez al ao que no hace dao?
Pgina 7 de 19
Qu es el Anlisis Esttico del Cdigo?
Sin embargo no tenemos que creernos literalmente lo que nos diga. Puede
que entre sus reglas est determinada una condicin de error concreta que,
en nuestro cdigo en particular, no debera ser etiquetada como tal.
El caso ideal sera integrar nuestro analizador automtico con alguna opcin
de integracin continua o alguna tecnologa que permita generar la
aplicacin a partir de nuestro cdigo fuente. De este modo cada vez que
hagamos algn cambio o que queramos generar nuestra aplicacin se
ejecutar el analizador automtico y este, a su vez, nos har sugerencias.
Pgina 8 de 19
Qu es el Anlisis Esttico del Cdigo?
Sin embargo, a pesar de sus ventajas, los analizadores estticos del cdigo
tienen sus limitaciones:
Pgina 9 de 19
Qu es el Anlisis Esttico del Cdigo?
Conclusiones
Pgina 10 de 19
Qu es el Anlisis Esttico del Cdigo?
Imagen: http://www.flickr.com/photos/ninjaguy82/756138395/
Pgina 11 de 19
Qu es el Anlisis Esttico del Cdigo?
Pgina 12 de 19
Qu es el Anlisis Esttico del Cdigo?
PMD
http://pmd.sourceforge.net/
Es una herramienta muy conocida, tanto por su facilidad de uso como por
su fcil integracin con las tecnologas que estemos utilizando para
desarrollar nuestro proyecto.
Pgina 13 de 19
Qu es el Anlisis Esttico del Cdigo?
CPD:
http://pmd.sourceforge.net/cpd.html
CPD son las siglas de Copy Paste Detector y con ese nombre queda clara
cul es su misin: buscar duplicidades en el cdigo. Todo aquello que
est escrito ms de una vez en nuestro cdigo ser detectado por CPD.
Pero, qu sentido tiene encontrar cdigo que haya sido copiado y pegado?.
Cuando hay cdigo duplicado, triplicado o n-plicado en nuestra aplicacin
nos encontramos con un grave problema: si hay que hacer cambios en
cdigo duplicado de la aplicacin tendremos que recorrer todo el cdigo de
la misma para repercutir ese mismo cambio en todas las copias que
hayamos hecho.
Pgina 14 de 19
Qu es el Anlisis Esttico del Cdigo?
Por suerte puedo crear el tipo Persona, con nombre y DNI, y crear los tipos
Jefe y Empleado que hereden de Persona, de tal modo que estos tipos ya
tengan nombre y DNI por heredar de Persona. As slo tengo que tenerlo
en un nico sitio, en Persona.
Los problemas derivados de la funcin copiar y pegar tienen su solucin
en su funcin hermana: cortar y pegar:
Al igual que PMD, CPD permite devolver los resultados de sus anlisis en
varios formatos, como por ejemplo xml o txt.
Checkstyle
http://checkstyle.sourceforge.net/
Una ventaja que tiene con respecto a PMD es que adems encuentra
errores en la documentacin que podamos haber escrito en el javadoc.
PMD no realiza ningn tipo de validacin mientras que Checkstyle es muy
riguroso en ese sentido.
Pgina 15 de 19
Qu es el Anlisis Esttico del Cdigo?
Findbugs
http://findbugs.sourceforge.net/
Al igual que los dems tiene una serie de categoras donde poder catalogar
dichos errores, y es que segn findbugs estos pueden ser malas prcticas,
mal uso del lenguaje, internacionalizacin, posibles vulnerabilidades, mal
uso de multihilo, rendimiento, seguridad o, directamente, chapuzas.
http://findbugs.sourceforge.net/bugDescriptions.html
Otras herramientas
En esta lista faltara por mencionar Crap4J, que es un producto de Agitar
Software cuya funcin es la de tratar de descubrir qu parte de nuestro
cdigo es muy difcil de modificar:
http://www.crap4j.org/
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=crap4j
Pgina 16 de 19
Qu es el Anlisis Esttico del Cdigo?
http://nemo.sonarsource.org/
Imagen: http://www.flickr.com/photos/dodogoeslr/2858347645/
Pgina 17 de 19
Qu es el Anlisis Esttico del Cdigo?
Codenarc
http://codenarc.sourceforge.net/
http://raulexposito.com/blog/2009/11/analiza-tu-codigo-fuente-groovy-
con-codenarc/
Pgina 18 de 19
Qu es el Anlisis Esttico del Cdigo?
Es por ello que sus reglas son similares a las de los analizadores anteriores,
ya que posee reglas dedicadas a encontrar potenciales problemas en cosas
bsicas del uso del lenguaje, en excepciones, en carga de otras clases, en
cdigo sin utilizar, etc.
Imagen: http://www.flickr.com/photos/tussenpozen/31414294/
Pgina 19 de 19