Mida la calidad de su código .Net con NDepend

La evaluación de la calidad del código de una aplicación suele ser un proceso subjetivo. Es por eso que recurrimos a métricas de código, mediciones cuantitativas que brindan información valiosa sobre el código de nuestra aplicación. Los desarrolladores pueden aprovechar las métricas de código para comprender la calidad del código, hacerse una idea de los problemas potenciales e identificar qué tipos y métodos deben refactorizarse para mejorar la calidad.

Las herramientas de análisis de código estático se utilizan para medir la calidad del código en una aplicación sin tener que ejecutar la aplicación. Hay muchas herramientas de análisis de código estático disponibles para .Net. Estos incluyen FxCop, StyleCop, ReSharper, CodeIt.Right, NDepend, etc. Este artículo presenta una discusión sobre cómo podemos usar NDepend para visualizar la calidad del código y adoptar medidas para mejorarlo.

¿Qué es NDepend y por qué usarlo?

NDepend es un analizador de código estático que se integra muy bien con Visual Studio y proporciona métricas valiosas para determinar la calidad del código. NDepend muestra estas métricas en forma de listas, matrices, gráficos, mapas de árboles y cuadros. Junto con estas métricas, NDepend puede analizar su código e informar infracciones contra una gran base de datos de reglas.

NDepend guarda los resultados de cada análisis, por lo que puede comparar los resultados después de haber mejorado la cobertura o la calidad del código. Se puede ejecutar como una aplicación independiente y como una extensión en Visual Studio. Y puede aprovechar la extensión NDepend Azure DevOps para integrar NDepend con sus proyectos en Azure.

Las siguientes son algunas de las características sorprendentes de NDepend:

  • Gran conjunto de reglas de código para verificar el cumplimiento
  • Muchos gráficos y diagramas para ver métricas de código
  • Se integra muy bien con Visual Studio 2010, 2012, 2013, 2015 y 2017
  • Le permite explorar las dependencias entre módulos
  • Proporciona CQLinq (consulta de código sobre LINQ) para personalizar el análisis
  • Cobertura del código de medidas
  • Identifica códigos difíciles de mantener y estima la deuda técnica 
  • Crea gráficos de tendencias

Empezando con NDepend

Para comenzar a usar NDepend, necesitará descargar e instalar una copia. Puede descargar una copia de prueba de NDepend desde aquí. Se empaquetará como un archivo .zip. 

Una vez que haya descomprimido el archivo .zip del instalador de NDepend, encontrará los siguientes archivos dentro:

  1. NDepend.Console: se utiliza para la integración con el proceso de compilación
  2. NDepend.PowerTools: una colección de analizadores estáticos de código abierto
  3. NDepend.VisualStudioExtension.Installer: instala la extensión de Visual Studio para NDepend
  4. VisualNDepend: un cliente GUI para NDepend

Puede instalar la extensión de Visual Studio de NDepend de una de las dos formas siguientes:

  1. Ejecute NDepend.VisualStudioExtension.Installer
  2. Ejecute VisualNDepend y seleccione "Instalar extensión de Visual Studio"

Una vez que se instala Visual Studio Extension para NDepend, puede aprovechar las métricas, las reglas, los informes, los gráficos, los resultados del analizador y las herramientas desde el IDE de Visual Studio. También puede aprovechar Visual NDepend para analizar sus soluciones y proyectos sin tener que iniciar Visual Studio.

La extensión de Visual Studio para NDepend está disponible para Visual Studio 2010 a través de Visual Studio 2017. Tenga en cuenta que la estoy usando con Visual Studio 2017.

Analizando el código fuente con NDepend

Para comenzar a analizar su código fuente, puede hacer clic en "Analizar soluciones VS y proyectos VS". Las otras opciones disponibles son "Analizar conjuntos .Net en carpeta", "Analizar un conjunto de conjuntos .Net" y "Comparar 2 versiones de una base de código". Esa última opción te permite comparar dos compilaciones, ¡una buena característica!

En aras de la simplicidad, usaré el código fuente de uno de mis artículos recientes aquí ("Cómo usar Lamar en ASP.Net Core"). Una vez que haga clic en "Analizar soluciones VS y proyectos VS", se mostrará una nueva ventana como se muestra en la Figura 1 a continuación.

Ahora puede hacer clic en "Examinar" y especificar el archivo de solución del proyecto que desea que NDepend analice.

Por último, haga clic en "Analizar un solo conjunto .Net" para iniciar el análisis como se muestra en la Figura 3 a continuación.

Esto ejecutará un análisis de código en el proyecto seleccionado. Cuando se complete el análisis, NDepend mostrará una ventana con las siguientes opciones:

  • Ver panel de NDepend
  • Mostrar gráfico interactivo de NDepend
  • Reglas del código NDepend del navegador
  • Cerrar el diálogo

Elijamos ver el panel de NDepend. Así es como se ve la salida: 

NDepend le muestra las líneas de código, información sobre tipos, deudas, comentarios en el código fuente, información de cobertura, complejidad del método, puertas de calidad y las reglas que se han violado y otros problemas.

Funciones de NDepend

Gráfico de dependencia y matriz de dependencia

NDepend también le muestra un gráfico de dependencia y una matriz de dependencia de su código. Mientras que el primero proporciona una vista gráfica de las dependencias en su proyecto, el segundo proporciona una vista tabular de su código organizado por dependencias en espacios de nombres y tipos.

Gráficos de tendencia

Los gráficos de tendencias están disponibles en el tablero. Estos gráficos proporcionan una vista previa de cómo la calidad del código fuente del proyecto ha ido cambiando con el tiempo. También puede crear sus propios gráficos de tendencias personalizados.

Complejidad ciclomática

La complejidad ciclomática es una medida cuantitativa de las rutas linealmente independientes en el código fuente que puede ayudarlo a comprender la complejidad de su programa y mejorar la cobertura del código. Puede aprovechar NDepend para analizar la complejidad ciclomática en el código de su aplicación. Puede leer más sobre la complejidad ciclomática en este artículo.

Consultando usando CQLinq

CQLinq es una de las características más llamativas de NDepend. CQLinq le permite consultar código .Net usando LINQ. Puede aprovechar CQLinq para consultar códigos de deuda, problemas, reglas y puertas de calidad.

Veamos un ejemplo. La siguiente consulta CQLinq muestra los nombres de los métodos y la complejidad ciclomática de los métodos no abstractos que tienen una complejidad ciclomática mayor que 20, ordenados por orden descendente del valor de complejidad ciclomática.

de m en Application.Methods

donde m.CyclomaticComplexity> = 20 &&! m.IsAbstract

orderby m.CyclomaticComplejidad descendente

seleccione nuevo {m, m.CyclomaticComplexity}

Aquí hay otro ejemplo de una consulta CQLinq. Este, cuando se ejecuta, mostrará los nombres de los métodos que tienen más de 100 líneas de código.

de m en Métodos donde m.NbLinesOfCode> 100 seleccione m

Para obtener más información sobre CQLinq, puede consultar la documentación de NDepend aquí. 

NDepend es una herramienta de análisis de código estático que puede brindarle información valiosa sobre el código de su aplicación. Puede ejecutar NDepend como una aplicación independiente o integrada en Visual Studio. Aunque NDepend no es gratuito, tiene un precio razonable teniendo en cuenta sus potentes capacidades y está disponible para todas las versiones recientes de Visual Studio.

Si desea un gran recurso para aprender NDepend, le recomiendo el curso Pluralsight “Practical NDepend” de Eric Dietrich.