Customize NDepend Report

If you are new to NDepend reporting, before digging into report customization, it is recommended to:

  • Consult standard Reports made by NDepend on popular open-source projects.
  • Download NDepend trial, analyze your code base, and explore the report produced (from downloading NDepend trial, until report exploration, this won't take more than 5 minutes ).

Report Sections

Report can be customized through the VisualNDepend or Visual Studio Extension > Project Properties > Report sub-panel. You can choose to activate many pre-defined sections like, Application and Assemblies metrics, some diagrams (dependencies, metrics, abstractness vs.instability…), CQLinq rules violation, and more.

ndepend report sections flags

Reporting Code Rules Violations

On the main page, the report contains a section titled Rules Summary.

rule summary in the ndepend report

For each CQLinq rule you can choose whether you want to display violation in report (Active tickbox). In case of violation you can choose if you want to display list of items selected in report, statistics about this list of items, and a selection view of items selected. The fourth check button is related to making a CQLinq rule critical or not.

ndepend report flags for code query

Here is what a CQLinq rule violated looks like in report:

code query in ndepend report

Reporting groups of CQLinq Queries

Reporting the set of rules violated is useful, but it is also interesting to report some result sets of a few CQLinq queries. For example, you might want to write CQLinq queries to ask for methods and types added or refactored since the last release. And you might want to list these methods and types added or refactored in the report.

To do so, NDepend make possible to append extra report sections that lists these CQLinq queries. In the CQLinq Query Explorer panel, a particular CQLinq group reported is bordered with an orange rectangle.

ndepend report defining a code queries and rules section

And here are the extra report sections:

ndepend report a code queries and rules section

Avoiding too large report

It is recommended to de-activate the Type Metrics and Type Dependencies sections since they can become pretty large if you have more than a thousand types in your application. Typically, browsing type metrics and dependencies is a scenario better addressed through the interactive UI.

By default, NDepend sets a few flags on Project Properties to avoid too large reports:

ndepend report flags to avoid too large report

Code Rules formatting

You can decide how to format code rules shown in the report (see the section Rules bodies in the secreenshot above).

The rule source code contains the description in comments tags <Description>...</Description> and <HowToFix>...</HowToFix> (more info on description tag usage can be found here).

Hence showing rule source code is more informative, but also more verbose, since it contains also the logic applied to execute the rule.

Rule description is formatted and takes less space than the rule source code. It is also more readable for non-developers team members.

Notice that if a rule has no description, the source code is shown by default.

Report Xml files

You can choose to build your own customized report by providing your own XSL sheet. It can be inspired from the one in $NDepend Install Dir$/BuildProcessResources/ReportXsl/NDependReport.xsl. Input information can be taken from the following XML files outputted by the analysis in the $AnalysisOutputDir$\XmlFilesUsedToBuildReport folder:

  • ApplicationMetrics.xml
  • Dashboard.xml
  • AssembliesBuildOrder.xml
  • AssembliesDependencies.xml
  • AssembliesMetrics.xml
  • NamespacesMetrics.xml
  • NamespacesDependencies.xml
  • TypesDependencies.xml
  • TypesMetrics.xml
  • InfoWarnings.xml
  • CodeRuleResult.xml
  • CodeRuleCriticalResult.xml
  • CodeQueryResult.xml

The tickbox VisualNDepend or Visual Studio extension > Project Properties > Analysis > Keep XML files used to build reports and store warnings must be ticked, else these XML files get deleted by NDepend after the report is built.