La Caja - Presentación / Ndepend (Analyze Code/Structure Tool!) / Artículo Recomendado

Presentación
Buenas, tal como habia comentado en un post anterior, la idea de esta sección es (no, no es copiar ToolBox de Msdn Magazine) comentar algunos recursos que he encontrado ya sea por investigacion, necesidad o conversación entre amigos.
Entre recursos podemos considerar, herramientas, enlaces, libros... si, es la misma idea de la sección ToolBox del Msdn Magazine (no, no es copiar ToolBox de Msdn Magazine), pero claro... salvando todas las distancias (es que, no soy Scott Mitchell)
Por ello, a manera de homenaje (no, no es una copia!), le puse "La Caja"
A ver que sale.

NDepend: Herramienta de Analisis de Codigo / Estructuras / Dependencias / Buenas Prácticas / Todo!
El buen Patrick Smacchia nos menciona en su blog como es que se usó NDepend para mostrar las diferencias entre el Framework 3.5 y su respectivo Service Pack.
Pues bien, como habia mencionado anteriormente ese analisis me impactó.
Por ello aqui una breve revision de que lo que ofrece:

Luego descargar la herramienta procedemos con la instalación sobre nuestro ambiente de desarrollo, en este caso VS2008. Si queremos, podemos indicarle la ruta en la que tenemos el Reflector (quizá muchos sepamos que es, pero, a ver si lo ponemos en una proxima edición de La Caja). En tales casos, la instalacón es de a lo mas un click.

ndepend001 

Para realizar analisis de código, pues obvio que necesitamos al menos una clase!
Por ello, que tenemos la siguiente libreria:

ndepend005 

Como puede notarse, la librería tiene todas las capas que uno se pueda imaginar.
A lo cual debo agregar:
1.- Esto es un ejemplo, todo es a propósito.
2.- Trabaja en base a namespaces, la descomposición es sencilla.

La idea de esta librería es entregar los métodos base de mantenimiento (Registrar/Actualizar/Eliminar), asi que, luego de construir, sobre el proyecto, click derecho...

ndepend002 

Indicamos con que Assembly queremos trabajar
ndepend006 

Continuamos y la barra de mensajes comienza a poblarse...
ndepend007 

Lo primero que veremos será lo siguiente:
ndepend008

Luego de una inspección, podemos listar las siguientes vistas:
- Metricas:
ndepend009
Debo confesar que la primera vez que me encontré con este gráfico no comprendía por completo a que se refería, pero pasando el mouse puedes darte una idea, mas aun si el tamaño del gráfico tiene relacion directa con la cantidad de líneas de código. Muy importante aspecto si se busca entendimiento ý/o modularidad.

- Dependencias:
ndepend010

Esta vista me parece muy buena, mas aun si te interesa conocer de que manera se relacionan los objetos entre diferentes librerias. Los números que aparecen entre las celdas indican en este caso, la cantidad de métodos usados; por ejemplo 6 métodos del tipo Registro usan objetos que pertenecen al namespace DO.
Si se busca mayor especificación, el arbol de dependencias puede extenderse a detalle, o en todo caso, se puede hacer click sobre la celda y se obtiene lo siguiente:
ndepend011 

A mi me gustó esta característica. Mas aun si de la misma manera, puede generarse un gráfico con las dependencias, a nivel de librería.

- CQL Queries:
ndepend012 
Esta vista de por si tiene muchas cosas que pueden explotarse, mas aun si viene con un lenguaje de consultas, que te permite entre otras cosas, saber cuantos metodos de tipo string con mas de 50 lineas de código, métodos que por cierto, nunca llamas!
En la vista se puede observar por ejemplo, que las consultas por defecto que te muestra son, Restricciones de Calidad de Código, Restricciones de nombre (las cuales, se puede personalizar), Diseño, Performance, Código que nunca usas!, etc.
Estoy algo contento con algunos resultados pues a pesar que el ejemplo fue construido "al vuelo", pasó algunas de las pruebas (suerte, le dicen).

La herramienta te permite realizar tus propias consultas CQL, el cual es intuitivo, aquí un ejemplo rápido, contaremos las líneas de código de cada objeto.
ndepend013 

La consulta es simple, no se ha agregado codificación de alerta (WARN IF), por eso mi ejemplo tiene ícono verde.
ndepend014

Click sobre la consulta creada, la vista de Query result me muestra lo siguiente:
ndepend015 

Y si quiero mas detalle de cada objeto, pues click, y pasamos a la vista Info.

- Info:
ndepend016 

- Class Browser:
Esta vista es similar a la presentada por el Visual Studio, en ambos casos, se recomienda el uso del click derecho para encontrar funcionalidad que nos servirá de mucho.
ndepend017 

- Resumen NDepend
Bien, este fue un muy breve resumen del uso de NDepend, aquí pueden encontrar mas características.
Un resumen general, a manera de ppt, disponible desde el sitio oficial en este enlace.
La seccion de tips y el blog de Patrick les servirá de mucho!

Artículo Recomendado
Revisando mis feeds descubro con que el Cazador de Mitos Carlos Walzer acaba de publicar la cuarta parte de su bloque de artículos denominados Antiprácticas, esta vez mostrandonos el manejo de los Datos a nivel memoria (es decir, cuanto cuesta a nivel de bytes usar tal o cual método), usando herramientas como .net Memory Profiler, JetBrains y CLR Profiler (Potenciales candidatos para La Caja).

Solo para darles una idea, les muestro una imagen tomada del blog de Carlos:
 

De lectura muy recomendada. Luego de esto, dan ganas de usar el CLR Profiler, y eso que a veces da miedo.

Sin mas me despido.

Saludos[at]Cama
Cross from here

Published 24/5/2008 17:45 por Jersson
Archivado en:
Comparte este post:

Comentarios

# Buenas noticias: Tenemos NDepend!

Sunday, May 13, 2012 7:01 AM por Jersson on Geeks·ms

Hola amigos! Les cuento que al iniciar la semana los amigos de NDepend me escribieron para confirmarme