Jump to content

NDepend

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 197.224.209.231 (talk) at 14:56, 6 September 2016. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

NDepend
Developer(s)NDepend
Stable release
6.3.0.8686 / April 29, 2016; 8 years ago (2016-04-29)
Operating systemWindows
TypeSoftware quality
LicenseCommercial, Proprietary
Websitendepend.com

NDepend is a static analysis tool for .NET managed code. This tool supports a large number of code metrics, allows for visualization of dependencies using directed graphs and dependency matrix. The tools also performs code base snapshots comparison, and validation of architectural and quality rules. User-defined rules can be written using LINQ queries. This possibility is named CQLinq. The tool also comes with a large number of predefined CQLinq code rules. Code rules can be checked automatically in Visual Studio or during continuous integration.

Features

The main features of NDepend are:

New features since V6.0

  • Integration with Visual Studio 2015
  • Enhanced Visual Studio Integration
  • Colored Code Metric View
  • Intuitive display of Code Coverage percentage
  • Rule Files Shareable amongst Projects
  • Default Rules Description and HowToFix
  • Default Rules Less False Positives
  • Compiler Generated Code Removal
  • Async Support
  • Integration with TFS
  • Integration with SonarQube
  • Integration with TeamCity
  • Support Visual Studio Themes
  • Support for high DPI resolution

Code rules through LINQ queries (CQLinq)

CQLinq editor and query result displayed

Since NDepend version 4 released in May 2012, the tool proposes live code queries and code rules through LINQ queries. This is one of the innovations of NDepend. For example:

- Base class should not use derivatives:

// <Name>Base class should not use derivatives</Name>
warnif count > 0 
from baseClass in JustMyCode.Types
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 JustMyCode.Methods 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,
}

In addition, the tool proposes a live CQLinq query editor with code completion and embedded documentation.

See also

NDepend reviewed by the .NET community

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)