NDepend
![]() | |
Developer(s) | NDepend |
---|---|
Stable release | 2024.1 |
Operating system | Windows |
Type | Software quality |
License | Commercial, Proprietary |
Website | ndepend |
NDepend is a static analysis tool for C# and .NET code to manage code quality and security. The tool proposes a large number of features, from CI/CD Web Reporting to Quality Gate and Dependencies Visualization. For that reason, the community refers to it as the "Swiss Army Knife" for .NET Developers.
Features
![NDepend Report Source Files List](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/ReportBig2023-Issue.png/220px-ReportBig2023-Issue.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/ReportBig2023-Source.png/220px-ReportBig2023-Source.png)
![NDepend Dependency Graph](http://upload.wikimedia.org/wikipedia/commons/thumb/6/68/ClassDependents2.png/220px-ClassDependents2.png)
The main features of NDepend are:
- Interactive Web Reports about all Aspects of .NET Code Quality and Security Sample Reports Here. Reports can be built on any platform: Windows, Linux and MacOS
- [Roslyn Analyzers Issues Import https://www.ndepend.com/docs/reporting-roslyn-analyzers-issues]
- Quality Gates
- CI/CD Integration with Azure DevOps, GitHub Action,Bamboo, Jenkins, TeamCity, AppVeyor
- Dependency Visualization (using dependency graphs, and dependency matrix)
- Smart Technical Debt Estimation
- Declarative code rule over C# LINQ query (CQLinq).
- Software Metrics (NDepend currently supports more than 100 code metrics: Cyclomatic complexity; Afferent and Efferent Coupling; Relational Cohesion; Google page rank of .NET types; Percentage of code covered by tests, etc.)
- Code Coverage data import from Visual Studio coverage, dotCover, OpenCover, NCover, NCrunch.
- All results are compared against a baseline allowing the user to focus on newly identified issues.
- Integration with Visual Studio 2022, 2019, 2017, 2015, 2013, 2012, 2010, or can run as a standalone through VisualNDepend.exe, side by side with JetBrains Rider or Visual Studio Code.
Code rules through LINQ queries (CQLinq)
![NDepend Code Querying CQLinq](http://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/CQLinq_Overview.png/220px-CQLinq_Overview.png)
Live code queries and code rules through LINQ queries is the backbone of NDepend, all features use it extensively. Here are some sample code queries:
- Base class should not use derivatives:
// <Name>Base class should not use derivatives</Name> warnif count > 0 from baseClass in JustMyCodeTypes where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization! let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass) where derivedClassesUsed.Count() > 0 select new { baseClass, derivedClassesUsed }
- Avoid making complex methods even more complex (source code cyclomatic complexity):
// <Name>Avoid making complex methods even more complex (source code cyclomatic complexity)</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, }
Additionally, the tool provides a live CQLinq query editor with code completion and embedded documentation.
See also
- Design Structure Matrix
- List of tools for static code analysis
- Software visualization
- Sourcetrail
External links
- Official website
NDepend reviewed by the .NET community
- Exiting The Zone Of Pain: Static Analysis with NDepend.aspx (Program Manager, Microsoft) discusses NDepend
- Stack Overflow discussion: use of NDepend
- Abhishek Sur, on NDepend
- NDepend code metrics by Andre Loker
- Static analysis with NDepend by Henry Cordes
- Hendry Luk discusses Continuous software quality with NDepend
- Jim Holmes (Author of the book "Windows Developer Power Tools"), on NDepend.
- Mário Romano discusses Metrics and Dependency Matrix with NDepend
- Nates Stuff review
- Scott Mitchell (MSDN Magazine), Code Exploration using NDepend
- Travis Illig on NDepend
Books that mention NDepend
- Girish Suryanarayana, Ganesh Samarthyam, and Tushar Sharma. Refactoring for Software Design Smells: Managing Technical Debt (2014)
- Marcin Kawalerowicz and Craig Berntson. Continuous Integration in .NET (2010)
- James Avery and Jim Holmes. Windows developer power tools (2006)
- Patrick Cauldwell and Scott Hanselman. Code Leader: Using People, Tools, and Processes to Build Successful Software (2008)
- Yogesh Shetty and Samir Jayaswal. Practical .NET for financial markets (2006)
- Paul Duvall. Continuous Integration (2007)
- Rick Leinecker and Vanessa L. Williams. Visual Studio 2008 All-In-One Desk Reference For Dummies (2008)
- Patrick Smacchia. Practical .Net 2 and C# 2: Harness the Platform, the Language, the Framework (2006)