analizando codigo maleado?, tienes que usar NDepend

Entiéndase código maleado, a aquel código que todos los miran pero nadie lo quiere tocar, aquel código en el que actualizas un método, y te das cuenta que tienes que actualizar más del 60% de la aplicación.

El análisis de código, puede ser para entender la arquitectura de una aplicación en particular, para hacer un code review, o para refactorizar proyectos con código maleado.

Para revisar código, y analizar la implementación del mismo podemos usar Reflector, podemos saber que métodos dependen de otro, o que métodos usa, pero no tenemos un mapa del uso de métodos, de clases, de namespaces, etc, hasta pensaba cuando terminé con los drafts del writer hacer un programita para hacer esto. Pero esa es una de las features de NDepend, analizar código.

Vamos a mostrar algunas de las características de NDepend usando mi primera aplicación .Net: Juego de la Vibora (VB.Net) (Jun-2004, 3er año universitario), sin el reto de hacer esa aplicación quizás ahora estuviera escribiendo alrededor de Java. La pantalla de la aplicación es la siguiente, esta tal cual la hice hace 4 años, más detalles sobre la misma en este link.

Gusano .Net

 

Al analizar el ejecutable de esta aplicación usando NDepend obtendremos la siguiente ventana (clic sobre la imagen para ampliar):

NDepend - Gusano.Net

Además genera un reporte Web, con todos los resultados generales. Pero en la interfaz de la herramienta nosotros podemos generar nuevos reportes, y gráficos, por ejemplo podemos ver dependencias no sólo a nivel de Namespaces, si no también de clases y métodos, además de poder hacer consultas dinámicamente a nuestro código. Veamos las ventanas disponibles:

Dependency Graph:

NDepend - Dependency Graph

En este caso estamos viendo el nivel dependencia dentro de la clase Gusano.vb, donde el tamaño de la caja esta determinado por la cantidad de líneas de código.

Dependency Matrix:

http://sergiot2.com/blogimages/2009/01Ene/07-NDepend-Dependency-Matrix.jpg

A diferencia de la anterior ventana de dependencia, en esta ventana vemos la dependencia en números, en la selección, hay 6 métodos de la clase FrmGusano.vb, que están usando 11 miembros del tipo (clase) Gusano.vb.

Metrics:

NDepends - Metrics

Y en esta podemos ver diversas métricas (pre-definidas), de nuestro código. En la selección se esta analizando la métrica Nro de Líneas de código, por método de fondo negro, y las de color azul son el TOP 10, de los métodos con mayor cantidad de líneas de código. Actualmente tiene 82 métricas de código, leer más. Recordar también que ahora VS2008, tiene una herramienta llamada Code Metrics, revisar este artículo del buen amigo, el Bruno: [VS2008] Code Metrics.

CQL Query Edition

http://sergiot2.com/blogimages/2009/01Ene/07-NDepend-CQL-Query.jpg

Y con esta ventanita que se puede hacer de todo, usando: Code Query Language (CQL), que es un lenguaje de consultas contra nuestro código analizado. En la ventana, se puede apreciar las 10 clases con la mayor cantidad de métodos. Otras consultas que podríamos hacer:

  • ¿Qué clases implementan un interface en particular?
    SELECT TYPES WHERE IsClass AND Implements "System.IDisposable"
  • ¿Cuáles son los 10 métodos más complejos, usando la métrica Cyclomatic complexity
    SELECT TOP 10 METHODS ORDER BY CyclomaticComplexity
  • Revisar más opciones de CQL.

Algunos artículos sobre la aplicación de NDepend en algunos escenarios reales, código bien maleado:

También en el blog de Patrick Smacchia, Lead Developer de la herramienta, encontrarán muchas entradas sobre NDepend: Varios artículos de Patrick sobre NDepend. Y la página del producto: http://www.ndepend.com.

Artículos relacionados:

Saludos,

Un comentario en “analizando codigo maleado?, tienes que usar NDepend”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *