how c# .net ndepend

c# - how to use ndepend



¿Usas NDepend? (6)

En realidad, esta herramienta es útil si, por ejemplo, tiene una interfaz que está siendo utilizada por otra parte de la aplicación desarrollada por una persona / proveedor diferente. Cada vez que desee cambiar la interfaz, debe averiguar quién está utilizando la interfaz para evitar romper su código (el ensamblaje no se construirá). Esto es aplicable para proyectos más grandes.

He estado probando NDepend , NDepend estado leyendo algunos artículos sobre el tema e incluso escuché un podcast. Creo que NDepend puede ser una herramienta realmente útil, pero todavía no veo dónde lo usaría.

¿Como lo usas? ¿Lo usas, por qué? Por qué no?

Me gustaría escuchar sobre algunos ejemplos del mundo real realistas.


Esta herramienta es útil cuando su aplicación tiene una gran cantidad de ensamblajes. Me ayuda a descubrir las dependencias del código y los cambios entre versiones.


He usado NDepend ampliamente en los últimos años. Básicamente, es una herramienta de análisis de dependencia, por lo que esto puede ayudarlo con muchos problemas relacionados con la dependencia.

Una de las principales cosas para las que lo uso es para examinar las dependencias entre mis conjuntos, tipos y métodos. Esto me ayuda a tener una idea de si el acoplamiento entre tipos está fuera de control y también me ayuda a detectar oportunidades de refactorización.

Al embarcarse en un refactor masivo, p. Ej., Extraer tipos de movimiento a otros ensamblajes, esto le permite ver qué depende de lo que no tiene que hacer el viejo "mover mis tipos a otro ensamblaje, luego intente compilar y ver qué rupturas "

NDepend también tiene una gran matriz visual para ver este tipo de información.

Además, tiene un lenguaje de consulta fantástico, CQL, que le permite escribir consultas personalizadas. Estas pueden ser cosas simples como "muéstreme todos los métodos que llaman a este método", a las consultas para resaltar el código muerto, las consultas sobre la complejidad de la tecnología, el acoplamiento, etc., y mucho más.

A su vez, puede integrarse en un proceso de compilación, por lo que puede tener advertencias / fallas de compilación basadas en consultas CQL, como "falla la compilación si un método tiene más de 100 líneas de código pero no comentarios" (este es un ejemplo - No estoy sugiriendo que esta métrica en particular sea una buena cosa).

También puede importar datos de cobertura de código y brindarle una representación visual de áreas con poca cobertura de código, así como permitirle ejecutar consultas de CQL contra información de cobertura de código (por ejemplo, métodos de mostrarme con menos del 70% de cobertura de código)

También puede cargar su compilación actual de su proyecto, y una compilación anterior, y ejecutar consultas entre ellos, como "Mostrar todos los tipos nuevos que tienen una cobertura de código de <70%": esto le ayuda a introducir reglas más estrictas en las bases de código existentes.

Esta es una herramienta fantástica, y no es demasiado difícil de aprender. Da miedo al principio, solo por el gran volumen de información que le proporciona, pero es altamente recomendable.


Me ha resultado útil visualizar los cambios entre versiones de ensamblajes. Incluso para una instantánea de los cambios en un lanzamiento dado ...

Creo que brilla en un entorno de integración continua donde puede configurar las consultas de CQL para medir las métricas de código que le interesan (Complejidad ciclomática, Métodos largos, etc.) y luego puede medir su mejora en esas áreas a lo largo del tiempo.


También estoy usando NDepend para comparar dos versiones de algún ensamblaje. NDepend tiene esta característica excelente. Eso me da una visión sobre los cambios y el progreso del trabajo en el ensamblaje, los métodos que se han agregado, los métodos eliminados y muchos más.


También me parece inestimable para comprender la estructura de las llamadas a métodos complicados. Puedo llamar a todos los métodos de forma transitiva utilizando un método o campo en particular, por ejemplo, y puedo ver si hay posibles problemas con las llamadas circulares, las dependencias no deseadas o las rutas más complicadas de lo necesario, etc.

El gráfico de dependencia ahora también es interactivo, por lo que puedo eliminar métodos que no me interesan actualmente y mover a otros para dar una buena visualización de lo que está sucediendo.