Advanced Documentation

Some facts revealed by NDepend by analyzing some .NET code bases

Using NDepend on large project, a success story
Getting rid of spaghetti code in the real-world: a Case Study
A quick analyze of the .NET Fx v4.0 Beta1
The big picture of the SharpDevelop code base
NDepend and the quality of the Cruise Control .NET code base
Lessons learned from the NUnit code base
Mono vs. .NET Framework: Public API Compatibility
Comparing Silverlight and the .NET Framework
NHibernate 2.0: Changes Overview
.NET 3.5 SP1: Changes Overview

Conventions / Rules / Constraints

Write Active Conventions on your Code Base: Enumerate potential conventions that can be written on your code base with CQL.
Rules on .NET Framework usage
Rules for CLR Add-Ins Contract and View Assemblies
Agile behavior: Nurture Knowledge Database

Code Structure, Design, Dependencies

Exploring Existing Code Architecture in Visual Studio through Dependency Graph
Dependency Structure Matrix
Two White Books on partitioning .NET code through assembly and namespace
Deconstructing software structure: Explains how to use NDepend to know about layering and dependencies issues in your code base.
Keep your code structure clean: Explains how to use NDepend to prevent design erosion of your code base.
Fighting Fabricated Complexity Explains why you should care about fabricated complexity and how to reduce it effectively.
Layering and the Level metric: Details the Level metric definition and usage.
Hints on how to componentize existing code
Dependencies and Concerns
All Paths from A to B
Re-factoring, Re-Structuring and the cost of Levelizing
Evolutionary Design and Acyclic componentization
Understanding Code: Static vs Dynamic Dependencies

Build comparison

Avoid API breaking changes Explain how to use some Build Comparison features in order to write rules that detect API breaking changes.
How to avoid regression bugs while adding new features Explain how to use the Build Comparison feature in order to focus code review on code that have been changed and added since the last release.
Ensure the quality of the code that will be developed this year Explain how to use the Build Comparison feature in order to focus quality review on code that have been changed and added since a certain milestone.
Are you sure added and refactored code is covered by tests? Explain how to use both Build Comparison and Coverage features to detect when new or refactored code is poorly covered by tests.
Reporting Code Diff


Mythical man month : 10 lines per developer day
Why is it useful to count the number of Lines Of Code (LOC) ?
How do you count your number of Lines Of Code (LOC) ?: Explains the algorithm used by NDepend to count the number of lines of .NET code.
A simple trick to code better and to increase testability: Explains how to use the ILNestingDepth metric, not only to increase readability but also testability.
Code metrics on Coupling, Dead Code, Design flaws and Re-engineering: Details how to use effectively the NDepend metrics on coupling (Afferent/Efferent coupling and ranking).
Interview of our Lead Developer by Scott Hanselman about Metrics (35mn)

Code Coverage

Make the most of your test coverage data: Explains how to harness NCover or Visual Studio test coverage data from NDepend and why this facility opens a wide range of new possibilities. Since this post was written, support for NCrunch, dotCover and OpenCover have been added.
Are you sure your added and refactored code is covered by tests?: Explains how to use NDepend to check coverage of the most risky code: the one that has been added and refactored recently.
Dealing with code uncoverable by tests
High Test Coverage Ratio is a good thing, Anyway!

Build Process / CI integration

NDepend.Console.exe command line arguments
NDepend Analysis
Customize NDepend Report
Sample NDepend Reports
Critical Rules and Build Failure
NDepend Analysis Inputs: Detailled explanations about what are NDepend analysis inputs and how NDepend process them.
Source Files Rebasing: Explains how to rebase files analyzed by NDepend.

Integrate NDepend with TFS
Integrate NDepend with CruiseControl.NET
Integrate NDepend with Team City
Integrate NDepend with FinalBuilder


Top 5 development practices you should care for
Immutable types: understand their benefits and use them: Explains the concept and benefits of immutability and the various facilities provided by NDepend to care about it.
Efficiently Searching Code Elements by Name: Easy search by name thanks to the NDepend Search panel.
Drastically leverage your Code Reviews: Explain how to seamlessly reviews evolutions in your code.
Controlling the usage of libraries: Explains how to harness information on how librariries are used by your code base.
Optimal encapsulation: Explains how to use NDepend to making sure that every methods, fields and types have an optimal visibility.
How to isolate your integration tests from your unit tests ?: Explains how to use NDepend to segregate between integration and unit test.
Attributes as a mean to partition code: Explains how to use attributes and NDepend conjointly.
Rambling on the sealed keyword: Explains how to optimize the usage of the sealed keyword.
Analyze and explore the evolution of .NET Framework by yourself

Usability and Ergonomy ramblings

Where we explain how we design the VisualNDepend UI.
The Visual Studio Look and Feel.
UI matters (Revisited): Menus and ToolBars vs. Office 2007 Ribbons.
UI matters: Menus and ToolBars vs. Office 2007 Ribbons.

.NET Performances

Where we explain .NET performances lessons learn during the development of NDepend.
Lessons learned from a real-world focus on performance.
An easy and efficient way to improve .NET code performances.
Micro- optimization tips to increase performance.
Do we need Micro-Optimization?.