NDepend es una herramienta de análisis estático para código C# y .NET que permite gestionar la calidad y la seguridad del código. Ofrece una gran cantidad de funciones, desde informes web de CI/CD hasta la visualización de dependencias y el control de calidad. Por ello, la comunidad la conoce como la "navaja suiza" para desarrolladores .NET.
Características



Las principales características de NDepend son:
- Informes web interactivos sobre todos los aspectos de la calidad y seguridad del código .NET. Ejemplos de informes aquí . Los informes se pueden crear en cualquier plataforma: Windows , Linux y macOS.
- [Importación de problemas de Roslyn Analyzers https://www.ndepend.com/docs/reporting-roslyn-analyzers-issues ]
- Puertas de calidad
- Integración de CI/CD con Azure DevOps , GitHub Actions , Bamboo , Jenkins , TeamCity y AppVeyor.
- Visualización de dependencias (mediante gráficos de dependencias y matrices de dependencias )
- Estimación inteligente de la deuda técnica
- Regla de código declarativa sobre consultas LINQ de C# (CQLinq) .
- Métricas de software (NDepend actualmente admite más de 100 métricas de código: complejidad ciclomática ; acoplamiento aferente y eferente ; cohesión relacional ; posicionamiento en los resultados de búsqueda de Google para tipos .NET; porcentaje de código cubierto por pruebas, etc.)
- Importación de datos de cobertura de código desde Visual Studio coverage, dotCover, OpenCover, NCover, NCrunch.
- Todos los resultados se comparan con una línea de base, lo que permite al usuario centrarse en los problemas recién identificados.
- Integración con Visual Studio 2022, 2019, 2017, 2015, 2013, 2012, 2010, o puede ejecutarse de forma independiente a través de VisualNDepend.exe, junto con JetBrains Rider o Visual Studio Code .
Reglas de código mediante consultas LINQ (CQLinq)

Las consultas de código en tiempo real y las reglas de código mediante consultas LINQ son la base de NDepend; todas sus funcionalidades las utilizan ampliamente. A continuación, se muestran algunos ejemplos de consultas de código:
- La clase base no debe usar clases derivadas:
// <Name>La clase base no debería usar derivados</Name> advertir si count > 0 de baseClass en JustMyCodeTypes donde baseClass . IsClass && baseClass . NbChildren > 0 // <-- ¡para optimización! let derivedClassesUsed = baseClass . DerivedTypes . UsedBy ( baseClass ) donde derivedClassesUsed . Count () > 0 seleccionar nuevo { baseClass , derivedClassesUsed }- Evite hacer que los métodos complejos sean aún más complejos ( complejidad ciclomática del código fuente ):
// <Name>Evite hacer que los métodos complejos sean aún más complejos (complejidad ciclomática del código fuente)</Name> warnif count > 0 from m in JustMyCodeMethods where ! m . IsAbstract && m . IsPresentInBothBuilds () && m . CodeWasChanged () let oldCC = m . OlderVersion (). CyclomaticComplexity where oldCC > 6 && m . CyclomaticComplexity > oldCC select new { m , oldCC , newCC = m . CyclomaticComplexity , oldLoc = m . OlderVersion (). NbLinesOfCode , newLoc = m . NbLinesOfCode , }Además, la herramienta proporciona un editor de consultas CQLinq en tiempo real con autocompletado de código y documentación integrada.
Véase también
Enlaces externos
- Sitio web oficial
NDepend revisado por la comunidad .NET
- Debate en Stack Overflow: uso de NDepend
- Johannes descansa en NDepend
- Del caos a la claridad: Gestionando la complejidad de .NET con NDepend
- Benjamin Wolf en NDepend
- Saliendo de la zona de dolor: Análisis estático con NDepend.aspx (Scott Hanselman, gerente de programa de Microsoft) analiza NDepend.
- Abhishek Sur en NDepend
- Herramientas de análisis estático de programas
- Herramientas de programación .NET
- Métricas de software