Pregunta

He estado probando NDepend, estado leyendo un par de blogposts sobre ella, e incluso escuchado un podcast.Creo que NDepend podría ser una herramienta muy útil, pero todavía no veo donde lo usaría.

¿Cómo se utiliza?Usted lo utiliza, por qué?¿Por qué no?

Me gustaría saber acerca de algunos de los de abajo-a-tierra ejemplos del mundo real.

¿Fue útil?

Solución

He usado NDepend ampliamente en los últimos años.Básicamente es una dependencia de la herramienta de análisis, y por lo que esto puede ayudar a mucha de la dependencia de cuestiones relacionadas.

Una de las principales cosas que lo uso es para examinar las dependencias entre mis asambleas, tipos y métodos.Esto me ayuda a mantener un punto de vista de si el acoplamiento entre los tipos de la mano, y me ayuda también a punto de refactorización de oportunidades.

A la hora de embarcarse en una enorme refactorizar, por ejemplo,la extracción.mover a otros tipos de asambleas, esto le permite ver lo que depende de lo que usted no tiene que hacer el viejo "mover mi tipo a otro de la asamblea, y luego tratar de compilar y ver lo que se rompe"

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

Además, tiene un fantástico lenguaje de consulta CQL, que le permite escribir consultas personalizadas.Estos pueden ser cosas tan sencillas como "mostrar todos los métodos que llamar a este método", a las consultas para resaltar código muerto, consultas en cylcomatic complejidad, de acoplamiento, etc, y mucho más.

A su vez, puede ser integrado en un proceso de construcción, de forma que pueda construir advertencias/errores basado en CQL consultas, tales como "no a la acumulación si un método tiene más de 100 líneas de código, pero no hay comentarios" (este es un ejemplo - no estoy sugiriendo que esta métrica en particular es una buena cosa).

También puede importar los datos de cobertura y dar una representación visual de las áreas con poca cobertura de código, así como lo que le permite ejecutar CQL consultas en el código de la cobertura de la información (por ejemplo,show me métodos con menos de 70% de cobertura de código)

También puede cargar su versión actual de su proyecto, y una anterior, construir y ejecutar consultas entre ellos, tales como "muéstrame todos nuevo los tipos que tienen <El 70% de cobertura de código" - esto le ayuda a introducir normas más estrictas en los actuales códigos base.

Esta es una fantástica herramienta, y no es demasiado difícil de aprender.Es aterrador al principio, justo debido al enorme volumen de información que te da, pero es muy recomendable.

Otros consejos

También resulta muy valiosa para comprender la estructura de las llamadas a métodos complicados. Puedo llamar a todos los métodos transitiva usando un método o campo determinado, por ejemplo, y puedo ver si hay posibles problemas con las llamadas circulares, o dependencias no deseadas, o caminos que son más complicado de lo necesario, etc.

El gráfico de la dependencia también es ahora interactivos, así que puede eliminar métodos que no estoy interesado en la actualidad, y mover a otros en torno a dar una buena visualización de lo que está pasando.

He encontrado que es útil para visualizar los cambios entre las versiones de los conjuntos. Incluso para una instantánea de los cambios en un comunicado dado ...

Creo que brilla en un entorno de integración continua donde se puede configurar consultas CQL para medir métricas de código que le interesan (Ciclomática complejidad, los métodos de largo, etc.), y luego se puede medir su mejora en aquellas áreas más tiempo.

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

Esta herramienta es útil cuando la aplicación tiene un gran número de conjuntos. Me ayuda a averiguar las dependencias de código y así como los cambios entre versiones

También estoy usando NDepend para comparar dos versiones de un poco de montaje. NDepend tienen esta característica excelente. Eso me da punto de vista sobre los cambios y el progreso del trabajo en el montaje, los métodos que se han añadido, eliminado métodos y muchos más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top