Jump to content

NDepend

From Wikipedia, the free encyclopedia
NDepend
Developer(s)NDepend
Stable release
2024.1
Operating systemWindows
TypeSoftware quality
LicenseCommercial, Proprietary
Websitendepend.com

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

[edit]
NDepend Report Source Files List
NDepend Report Source Files List
NDepend Dependency Graph


The main features of NDepend are:

Code rules through LINQ queries (CQLinq)

[edit]
NDepend Code Querying CQLinq

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 }
 // <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

[edit]
[edit]

NDepend reviewed by the .NET community

[edit]

Books that mention NDepend

[edit]
  • 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)