NDepend Release Notes


Major milestones

29 january 2014     5.2.0Paths support relifted
26 september 2013     5.0.0Dashboard, Trending, UI Relift
23 may 2012     4.0.0CQLinq, NDepend.API, Power Tools
24 november 2010     3.5.0Enhanced reports
15 february 20103.0.0Full Visual Studio integration
27 march 20092.12.0Interactive search based on CQL
1 december 20082.11.0Major performance improvement
9 september 20082.10.0Support for interactive graph
8 april 20082.8.0Support for Code Coverage data importing
10 december 20072.6.0Major ergonomy improvement
16 july 20072.3.0Shallow integration with Visual Studio and Reflector
2 may 20072.2.0Support for Side-Effects detection
28 march 20072.1.0Support for Code Diff
1 february 20072.0.4 RTMFirst public professional release
13 december 20062.0.3 RC1     Support for interactive dependency matrix
4 april 20062.0.1 Beta1     First v2 beta introducing CQL and interactive treemap
26 april 20041.0.0     First public release (OSS)



Version5.3.0.8360
Date17th of June 2014
Description
  • Trend charts exported to HTML+js and trend charts in the report were dated with one month difference, because javascript date months are zero-based while C# date months are 1-based.
  • When trying to open the source-file decl of an auto-property getter or setter method, a not available reason is now shown with the proper description.
  • When the mouse pointer was moving fast over the Dependency Graph elements, the info tooltip wasn't updated properly.
  • When a temporary project was loaded, building a new temporary project (for example by clicking "Analyze a set of .NET assemblies") and running an analysis on it, resulted in the previous temporary project analyzed.
  • In the Trend Chart Edit Form, when deleting a serie row in the DataGridView through a Delete key press, the row was deleted but the serie wasn't suppressed in the series TreeView and in the series Chart.
  • On the StartPage, when left-clicking a project in the recent project list, if the row tooltip was visible and the left-click occured within the tooltip, the project was not loaded.
  • The Code Query generated in the Search panel > Searching Fields by Coupling, was incorrect and didn't compile.
  • When showing the form Analyze .NET assemblies in directory, when setting Recursive child folder on a hierarchy of folders where nested paths exceeded 260 chars, the exception PathTooLongException was thrown. Now, there is no more PathTooLongException but the assemblies with path too long are not shown in such situation.
  • The two Power Tools g) "Code Review Methods Changed" and c) "Public API Changes" starts with a Compare dialog. When clicking cancel button on this Compare Dialog, instead of quiting the PowerTool, the dialog appeared again.
  • The Power Tools that asked for a project through the a) b) c) choice, now handle properly when something else than these 3 letters is typed, and the ESC key can be used to quit the PowerTool.
  • The Power Tool "Find potential Dead Code" doesn't return anymore types that contains only const literal types, that cannot be seen as used by NDepend.
  • A new Power Tool named "Dated Log Trend Values" is now provided to show the various NDepend.API options to log programmatically trend metric values, at any past or future date.





  • Version 5.2.1.8320
    Date26th of February 2014
    Description Bug fixed:
  • When modifiying project properties, if the particular analysis result file to compare with couldn't be resolved, a NullReferenceException could be thrown.
  • When loading an analysis result from a non-existing file, the error shown to the user is now more explicit.
  • Concurrency issue resolved while loading analysis result in the UI.





  • Version 5.2.0.8280
    Date29th of January 2014
    Description
  • A new panel NDepend project Properties > Paths Referenced has been added to let the user manage project paths efficiently.
  • Path referenced from the the NDepend project can now start with an environment variable (like %ENVVAR%\Dir\File.txt).
  • Path referenced from the the NDepend project can now use the UNC absolute path syntax (like \\Server\Share\Dir\File.txt).
  • Path referenced from the the NDepend project can now use a system of path variables (like $(NdProjectDir)\Dir\File.txt) and by default two variables are defined: $(NdProjectDir) and $(NdProjectOutputDir)
  • NDepend.Console.exe can now accept through the command line switch /PathVariables, some path variables values to make project paths redirection easy.
  • NDepend.Console.exe can now accept through the command line switch /TrendStoreDir, to specify the trend store directory.
  • Historic Analysis Results can now be stored with a defined frequency (not more often than...), under the project output directory, but also under a custom directory.
  • NDepend.Console.exe can now accept through the command line switch /HistoricAnalysisResultsDir, to specify the directory where historic analysis results are stored.
  • NDepend.Console.exe can now accept through the command line switch /PersistHistoricAnalysisResult, to force persist historic analysis result once the analysis is done.
  • In NDepend.Console.exe command line arguments, the option /KeepProjectInDirs can now be optionally used just after the option /InDirs to avoid ignoring the input directories specified in the project file.
  • In NDepend.Console.exe command line arguments, the option /KeepProjectCoverageFiles can now be optionally used just after the option /CoverageFiles to avoid ignoring the coverage files specified in the project file.
  • New Visibility code rule: Types that could be declared as private, nested in a parent type
  • Enhanced rules : Fields should be declared as private

  • Ergonomy enhancements:
  • Adoption of VS2013 Code Element Icons.
  • In Project Properties panels, some '*' label have been added to show a detailled view of what project changes haven't been saved yet.
  • In the NDepend project Properties panel > Code to Analyze tab > Directories, several directories can now be selected to be all deleted in a row.
  • In the NDepend project Properties panel > Code to Analyze tab > Directories, when adding one or several new directories, the path mode (absolute/relative/envVar/variable) is kept for the added directories paths (if possible).
  • In the NDepend project Properties panel > Code to Analyze tab > Directories, when a directory couldn't be resolved, on right click the menu 'Open the directory in Windows Explorer', a message box with explanation is now shown.
  • In Project Properties panels, double clicking a textbox that shows a path, let's open Windows Explorer on the path.
  • In Project Properties panels, when changing paths referenced by a baseline for comparison, if possible path mode (absolute/relative/envVar/variable) is kept.
  • In Project Properties panels, when changing custom Trend Store Directory, if possible path mode (absolute/relative/envVar/variable) is kept for the new custom Trend Store Directory.
  • In Project Properties panels, when adding new Coverage Files referenced by the project, if possible path mode (absolute/relative/envVar/variable) is kept for the added coverage files.
  • In code query result panel, the row header and vertical grid appearance have been enhanced.
  • In the main Report menu documentation, a sub-menu to open the Sample Report page on the website has been added.
  • In the dashboard, the # of violations labels descriptions gets its X position adjusted to fit best depending on the width of the # of violations label.
  • In the Analysis Error List panel, some descriptions of how paths are resolved and if they are overridden by command lines arguments, are now shown as info logs.
  • When the user click the button "Project Properties > Analysis > Project File > Save As" and the project references one or several paths relative to the project file location, a warning dialog explaining the potential issue, is shown.
  • When choosing a directory through the directory chooser with intellisense control, when the first character is a backslash '\', available network shared paths are displayed with the UNC path format.
  • The NDepend User Voice page is now linked from the Start Page.
  • Analysis result files now have a dedicated file name extension '.ndar' and their name is formatted this way: NDependAnalysisResult_ProjectName_Date.ndar!

  • Bug fixed:
  • On project with many assemblies (like hundreds), in the NDepend project Properties panel > Code to Analyze tab > Third-Party assemblies, moving some third-party assemblies to application assemblies could take a lot of time.
  • In the NDepend project Properties panel > Code to Analyze tab > Directories, when updating a directory on which the current Windows user don't have the authorizations, an UnauthorizedAccessException was raised.
  • In the NDepend Error List panel, if many (like thousands) of analysis logs were shown, the grid took time (like seconds) to be filled or resized.
  • When running NDepend.Console.exe, when redefining the output directory with the /OutDir command line argument, if the project's trend directory was set to its default value $(NdProjectDir)\TrendMetrics, the specified output directory value wasn't used to infer the trend directory.
  • The OptimalVisibility was seen as private instead of protected, for a protected static method declared in a base class used by a type nested in a derived class.
  • Code Coverage file form had some visual issues when being shown with DPI mode higher than 100%.
  • When DPI was higher than 100%, in the Help panel, sections titles were not drawn properly.
  • When DPI was higher than 100%, Project Properties > Report had some drawing issues.
  • When DPI was higher than 100%, in VisualNDepend.exe closing an Analysis Result Session provoked a NullReferenceException.





  • Version5.1.0.8180
    Date28th of November 2013
    Description
  • New link Help > NDepend User Voice
  • When specifying a code element name in a CQLinq code query, the extension method FromAssembly(string assemblyName) can now be applied to filter only code elements matched from a particular assembly.
  • NDepend.Console.exe can now accept coverage files paths (absolute or relative) as input. In such case, these paths override coverage files paths specified in the project to analyze.

  • Ergonomy enhancements:
  • Executables icons now display nicely in taskbar with 200% DPI setting.
  • When a code element cannot be resolved by name in a code query, the error is now completed with explanations about how to solve the mistmatch.
  • When right-clicking a set of assemblies to analyze, in addition to the menu 'Remove selected assemblies' the menu 'Remove non-selected assemblies' has been added.
  • In VisualStudio addin NDepend Windows, all NDepend panels have been added to make a convenient and intuitive access.
  • If 2/3 of assemblies of a code base share a same version, this version is shown in the UI Dashboard and in the Report header summary.
  • A new option NDepend > Options > NDepend Skin > Visual NDepend menu casing, is now available to set Visual NDepend menus casing.
  • A new Define Baseline for Comparison dialog has been introduced to explain the difference between setting the baseline in the NDepend project, and setting the baseline temporary just for the current session.
  • A new Import Coverage Data dialog has been introduced to explain the difference between referencing the coverage files imported from the NDepend project, and importing the code coverage file(s) into the currently loaded analysis result.
  • When the user clicks a Run Analysis button located out of the Project Properties panel, and if the Project Properties panel contains some unsaved changes, a message box now proposes to the user to save changes and then run analysis, or to just cancel the run analysis operation.

  • Report enhancements and fixes:
  • A new Trend Chart library is used with no offline restriction. Now Trend Charts can be visualized in the report, even if the machine is offline.
  • When analyzing a project for the first time, trend charts in the report were not populated with trend data logged during this first analysis.
  • In report code queries and rules bodies can be now expanded or collapsed. They are all expanded per default and a new Report option let them be all collapsed per default.
  • In report, the 4 diagrams pictures (small version) didn't respected the original aspect ratio.
  • The help about the thresholds settings provided in the report about empty sections Dependencies/Metric for Namespaces/Types, , wasn't clear enough.
  • In Code Queries sections (i.e defined with groups with orange borders in Queries and rules explorer), the query header didn't show a warn or a warn-critical icon if the query was a rule violated (critical or not).
  • In Code Queries section header, a rule violated link pointed to the rule in Rule Violated section instead of the rule in Code Queries section
  • In Code Queries section representing the group 'Code Diff Summary', a quick description of the baseline for comparison is now shown at the beginning.
  • The option 'Project Properties > Report > Allow breaking long code element names' was not taken account when it was set (and per default it is set).
  • In Internet Explorer 11 on Windows 8.1, the CSS of the report wasn't taken acount.
  • In the report now have a valid Mark Of The Web (MOTW) header to make javascript execution supported when browsing the report with Internet Explorer.
  • In the left menu, when some group of rules or queries names were too long without space (like "System.Runtime.InteropServices") a VScroll bar was shown in the corresponding menu.
  • In the left menu, when a parent group contains some children groups that contain violated rules, the number of rules violated gets summed and a hierarchy icon indicates that the parent group contains some children groups.
  • In the report green/yellow/red rules violated numbers, critical rules are now counted with the red color.
  • Some pictures names casing were not respected in report code source, provoking issues in environement like teamCity. This includes "Idea.png", "FilterBlue.png" and "filter.png" that was missing.
  • Warning and Info icons have been added in Analysis Log report section.

  • Bug fixed:
  • If an analysis couldn't be completed properly (because of a file access for example), some menu like 'Run Analysis' or 'Close Project' were enabled instead of remaining disabled.
  • Coverage metrics values (PercentageCoverage, NbLinesOfCodeCovered, NbLinesOfCodeNotCovered) could differ from one unit, depending if the current code base has been obtained just after an analysis or throught loading a persisted analysis result.
  • The default Trend Metric code query '# Lines of Code Added since the Baseline' was throwing an InvalidOperationException if some assemblies PDB files were missing in the older analysis result.
  • In the UI or Report Dashboard, coverage data were erroneous if some analyzed assemblies PDB files were missing. Now the Dashboard shows a detailled explanation.
  • When resizing StartPage, StartPage buttons were not repainted properly and traces appeared.
  • Zooming-in indefinitely on a Trend Chart on Dashboard or in the trend Chart edit form, lead to an OverflowException.
  • On high DPI settings or when the main windows had small height at startup time, on loading the StartPage was shown vertical-scrolled at the bottom.
  • In the 'Add .NET Assemblies in Folder' dialog, stressing the path combo box could result in the list of assemblies being added twice.
  • If since the NDepend UI startup the Queries Explorer Panel was visible with a height of 0, saving a query edited provoqued an exception.
  • When showing the Start Page, the first project in the list of recent project was already selected.
  • When showing the dialog 'Select a project', the first project in the list of recent project was already selected.
  • When running with .NET Fx v2, when doing some click or selection into the main tooltip, very rarely an AccessViolationException could be thrown.
  • The default rule "Avoid duplicating a type definition across assemblies" doesn't match anymore types generated by compiler.
  • Clicking check buttons of the Analysis Error List panel could provoque a NullReferenceException when clicked while no analysis result or no project has been loaded yet.
  • An exception could be thrown while accessing a coverage file currently in use by another process.
  • When cliking the Go button from the Help panel, section Dependency Cycle, an exception was raised if no Analysis Result was loaded.
  • In a UI session where the Dashboard panel hasen't been shown yet, importing the coverage data and then showing the Dahsboard panel lead to duplicatced data on the Dashboard.
  • Running a program using NDepend.API while a debugger was attached to the process could lead to problems.
  • In VS, attaching the currently opened project to the currently opened VS solution, lead to an exception if the project only was opened (ie. no analysis result for the project was loaded).





  • Version 5.0.0.8085
    Date26th of September 2013
    Description
    Bug Fixes
  • In the report trend chart or in the exported trend chart, if there were a single trend metrics log, dots were invisible on chart unless when hovered by the mouse. Dots are now permanently visible.
  • In the dialog Diff > Definer diff > Compare current analysis result with, clicking the button browse provoked an exception.
  • An exception could pop up while loading a v4 project.
  • A NullReferenceException could be thrownw when using the panel Search.







  • Version5.0.0.8041 RC
    Date18th of September 2013
    Description
    Major Features

  • Support for Visual Studio 2013: NDepend v5.0 integrates into Visual Studio 2013, 2012, 2010 and 2008.
  • New Dashboard Panel: NDepend v5.0 proposes a new Dashboard that shows at a glance the state of your code base.
  • Trend Monitoring: NDepend v5.0 can monitor trend metrics and shows trend charts. Default trend metrics and trend charts are proposed and custom ones can be created.
  • Churning Rules and Queries: NDepend v5.0 lets list Rules and Queries according to common criterions. Listing all Rules Violated is now a one click operation.
  • Focusing on Recent Rules Violations: NDepend v5.0 proposes the option to filter only rules violations that occur on code elements added or refactored since a baseline.
  • Redesigned report. The report now includes trend metrics charts. The design has been rethought and more information is shown, especially concerning diff.



  • UI Enhancements

  • Main menus organization relifted both in VisualNDepend and in VisualStudio addin.
  • VS2012/2013 Light/Dark/Blue themes supported.
  • VS2012/2013 UI style for Project Propeties Vertical Tab.
  • VS2012/2013
  • VS2012/2013 UI style for Splash Screen.
  • VS2012/2013 UI style for Start Page.
  • VS2013 Style Icons.
  • Support for using Visual Studio 2013 as a source file compare tool.
  • When showing a dependency graph too complex to be browsed, a note is shown that explain that it is recommended to export the graph to the dependency matrix, better suited to browse large structure.
  • In forms dedicated to choose assemblies set to analyze, the capability to filter assemblies by name has been added and ergonomy has been enhanced.
  • Alt+N keyboard shortcut in VisualStudio now selects the NDepend main menu.
  • In Matrix/Graph/Metric view, the Context Sensitive Help is not located anymore in the way that it could overlap the element currently hovered.
  • The .NET Reflector addin install form is now smarter and can find the Reflector.exe path, if .NET Reflector has been installed through a .MSI file.
  • Pan is now the default grab mode of the Graph.
  • New pan cursor in Graph, Treemap and Matrix.
  • On Vista OS and above, NDepend now uses the modern Folder browser dialog.
  • On Right-click menus, the double click action menu is now bold.
  • When double-clicking a class to open its source file declarations, the class being declared in two source files, the second being a ".designer." file, NDepend jumps directly to the source declaration of the type without proposing to open one of the two declarations.
  • In Search panel, search code elements by change, when changing the kind of code element searched, the currently checked button remain checked if it is not disabled.
  • In the Rules explorer panel, when selecting a group that doesn't have direct rules/queries children, NDepend expands its children groups!
  • When double-clicking the critical rules violated warning in the Error List panel, the list of Critical Rules Violated is shown.
  • When open a project, without analyis result, shows in the error list the last analysis (if any) logs
  • In Search panel, query generated are now executed asynchronously which leads to improved UI responsivness when searching on large code base.
  • In Search panel, search code elements by change now generates more sophisticated code queries that provide more details.
  • In Search panel, search code elements by coupling now generates more sophisticated code queries that provide more details.



  • New Default Rules and Changes

  • New rule in the group "Visibility": "Event handler methods should be declared private"
  • New rule in the group "Purity - Immutability - Side-Effects": "Don't assign a field from many methods"
  • New rule in the group "Purity - Immutability - Side-Effects": "Array fields should not be read only"
  • New rule in the group "API Breaking Changes": "Avoid changing enumerations Flags status"
  • "Types that could have a lower visibility" has been modified to take account of the fact that a type used by an interface that has the same visibility, cannot have its visibility decreased, else a compilation error occurs!
  • The rule "Types that could have a lower visibility" has been modified to not match static types without methods (except the class constructor) with only literal or readonly static fields.
  • The rule "Classes that are candidate to be turned into structures" has been modified to now avoid matching classes that implement one or several interfaces.



  • NDepend.API Additions and Changes

  • New interfaces IReadOnlyCollection<T> IReadOnlyList<T> in the namespace NDepend.Helpers. They will be changed to .NET Fx 4 versions once NDepend will buid against .NET 4.
  • New extension methods: ToReadOnlyWrappedCollection() ToReadOnlyClonedCollection() ToReadOnlyWrappedList() ToReadOnlyClonedList() in ExtensionMethodsEnumerable.
  • Most collections returned by API methods are now cloned IReadOnlyList<T>.
  • IQuery, IGroup, IGroupOfGroups and IController object in NDepend.CodeQuery namespace, are not thread-bounded anymore.
  • New boolean get/set property IProjectBaseline.FocusOnRecentRulesViolations/
  • ICodeNoden<T> became ICodeNode, implemented by ICodeElement and ICodeBase, to get an easier access than ICodeNode<T> on ICompareContext operations.
  • It is now possible to run several analysis simulteanously on several threads in the same AppDomain, through run analysis API in ExtensionMethodsProjectAnalysis.



  • Bug Fixes

  • When NDepend was hosted in Visual Studio 2012, the Horizontal and Vertical scrollbars of the dependency matrix were not drawn properly.
  • Drag & Dropping the directory "C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies" to the list of folders in the NDepend Project > Code to Analyze panel didn't work, and adding through the Browse button threw an exception.
  • Opening an URL in the default browser on Windows 8 with Chrome set as default browser could lead to a System.ComponentModel.Win32Exception.
  • Interfaces names in Info panel were prefixed with "abstract".
  • When the first column of a query result was not typed with IMethod, IField, IMethod, IType, INamespace and IAssembly, a misleading error message was shown.
  • When exporting the query result to HTML, XSL or XML from the "Queries and Rules Edit" panel, if the first column of the query result contained some code elements duplicated, in the exported document, it might happen that for some rows the first column value didn't match the other values of the row.
  • When only two large assemblies (> 4MB each) were analyzed, when analyzing assemblies with the option "Run Analysis Concurrent", the number of LoC provided could vary from one analysis to another due to a concurrency bug now fixed.
  • When comparing assemblies compiled by different versions of the compiler, the 'nop' IL operations could be changed and NDepend was reporting such method as CodeWasChanged, while it was not.
  • In VisualNDepend.exe, the bar and panel layout was not persisted, if the project was closed and a new analysis result was loaded.
  • In NDepend UI, when showing the graph but haven't shown yet the matrix, when righ-clicking a dependency and selecting "Open this dependency on Matrix (focus on sub-dependencies changed)", a crahs occured.
  • When running a full analysis, dependency matrix commands were frozen.
  • When taking a snapshot of the dependency matrix, the option 'Display only blue cells or all cells' was ignored.
  • When exporting a set of code elements to the vertical header of the dependency matrix, if the code elements set contained some third-party assemblies, it might happened that in the vertical header some third-party code elements appeared before the applicatio code elements.
  • A query prefixed with 'notmycode' was still considered as active even if one of its parent groups was disabled.
  • When opening a project without any analysis result loaded, when hovering an assembly, its description wasn't displayed in the info panel.
  • In Query Edit panel, when a query with long text (provoking VScrollBar visible) was displayed, but never focused, clicking in query edition header (just above the query edition textbox) provoked the VScrollBar to go to the bottom.
  • When drag and dropping a query or a group in the Queries and Rules Explorer panel, provokes cancellation of the edition of concerned queries in the Query Edit panel.
  • Before converting CQL code queries from a group in Queries Explorer, if some of these CQL queries are edited, the user is prompted to close their edition first. Doing so, avoid some queries synchronisation problems.
  • A sub-part of the hierarchy of namespaces of an assembly could be flat, when it makes sense to make it hierarchical.
  • When a public class had public derived classes, the optimal visibility flags of its methods (flags CouldBeInternal, CouldBeProtected, CouldBePrivate), might not be infered properly.
  • When comparing builds from the older build perspective, when the metric view hasn't been shown yet in session, when right clicking a node in newer build, the menu 'View on metric view' wasn't disabled and clicking it lead to an exception.
  • In Queries edition textBox, when the completion box is shown, pressing Tab now select the current item.
  • In Queries execution result, when sorting rows by clicking a column header, row selected was not preserved.
  • In Queries and Rules Explorer panel, when expanding or collapsing a group and then moving the mouse, a group hovered by the mouse could then be selected.
  • In Search Panel, when dealing with very large code base, if the search code query generated took too long for execution, an exception was thrown instead of showing the query as time-out.
  • From Project Properties > Code to Analyze > Third-Party assemblies DataGridView, right click menu on assembly 'Pin description in Info View' was not working.
  • In NDepend Project Properties, when hovering an application or third-party assembly with the mouse, its description didn't appeared properly in the tooltip.
  • The NDepend.API method ExtensionMethodsProjectAnalysis.GetAnalysisResultRefToCompareWith() could return null if no analysis result representing the baseline can be found. This method had a wrong contract avoiding to return null. To avoid any confusion, this method has been renamed TryGetAnalysisResultRefToCompareWith() and now returns a bool, and the analysis result reference as a out parameter.
  • When a property name started with "Item", the getter and setter of the property didn't have the flag IsPropertyGetter or IsPropertySetter set.
  • In Metric View, when double clicking outside of the treemap rectangle, a MessageBox was shown.
  • In Metric View, when double clicking near to top or bottom or treemap rectangle, the selected code element was inaccurate.
  • In Metric view, pan was possible on right mouse button, and consecutive right mouse click were provoking treemap translations.
  • In Metric view, when using the feature 'selecting top XXX' in configuration Fields/# Fields, Methods/# Methods, Types/# Types, Namespaces/# Namespaces, a non-compiling CQLinq query was generated.
  • In Matrix view, when double-clicking a cell to dig inside the dependency through the matrix, the transition animation interpolate between the previous/previous states instead of the previous/next states!
  • When creating a new temporary project with a name similar to a previous temporary project, previous session context persisted state could interfer with the new temporary project session context state.
  • In VisualStudio solution explorer panel, when right-clicking some folders to generate a code query, sometime the underlying namespace could not be found and the anonymous namespace was choosen instead.
  • In VisualStudio solution explorer panel, when right-clicking a project, some NDepend menus might not be well ordered.
  • In Visual Studio, when a solution (with no NDepend project attached) was loaded, and a NDepend analysis was running, when hovering the progress circle with the mouse, the progressing control was not shown.
  • In very rare occurence, Visual Studio crashed at startup because of a NDepend exception.
  • In the situation of editing a query with the completion box and eventually the documentation box visible, when switching to another panel through a keyboard shortcut, the completion box wasn't hidden.
  • When loading an Analysis Result with code element previously selected, click the button select Back (code element) and then the button Forward raised an exception.
  • In report opened on chrome, the left menu unfolded were shown under the grid view in the results.
  • When the .NET Reflector addin install form was shown from a right-click menu, the dialog wasn't modal.
  • When the NDepend install dir contains an ampersand '&' character, the NDepend Visual Studio addin couldn't be properly installed.
  • When NDepend was installed in a directory with a sharp character '#' in the path, full analysis was unable to locate assemblies to analyze.
  • When adding a coverage file to a project through the NDepend.API method IProjectCoverage.AddCoverageFile(), its CoverageFileMergeMode was CoverageFileMergeMode.None instead of the default value CoverageFileMergeMode.Or.
  • When two processes (VisualNDepend or VisualStudio) were showing the same NDepend project, changing something in the project in one process lead to ask the user to reload the project in the other process when its Windows was reactivated. In case the other process shows a modal dialog, we don't ask the user anymore to reload the project because this could lead to buggy situations.









  • Version4.1.0.6871
    Date12th of December 2012
    Description
    Features

  • Supports for WinRT (Windows Store) applications and .winmd files.
  • Introduce the notion of .NET Profiles (.NET Fx, Silverlight, WinRT...) concerning directories of a NDepend project, containing .NET framework assemblies.
  • The right .NET Profile of a new NDepend project is now infered automatically from application assemblies references.
  • Introduce the new enumeration NDepend.DotNet.DotNetProfile, that replaces NDepend.DotNet.DotNetFrameworkVersion.
  • The interface NDepend.DotNet.IDotNetManager has been enhanced to take account of .NET Profiles.
  • More VS2012 look and fell.



  • Bug Fixes

  • When NDepend was hosted in Visual Studio 2012, the Horizontal and Vertical scrollbars of the dependency matrix were not drawn properly.
  • A bug has been fixed in Mono.cecil, that made NDepend analysis crashes on some special assemblies.
  • When analyzing thousands of assemblies, an exception could popup because the analysis log relating assemblies resolving could be too large.
  • In the Queries Explorer panel, the queries DataGridView horizontal scroll bar, was shown even if it was not needed.
  • With high DPI Windows parameters, in the search panel, the query generated textbox size didn't have maximum width.





  • Version4.0.2.6750
    Date11th of July 2012
    Description
    Default Code Rules set

  • New Code Rule: Collection properties should be read only
  • New Code Rule: Avoid publicly visible constant fields
  • Rules 'Potentially dead Types', 'Wrong usage of IsNotDeadCodeAttribute', 'Types that could have a lower visibility' and 'Wrong usage of CannotDecreaseVisibilityAttribute' have been adapted to avoid matching static types that have only literal (const) fields. Indeed, these types cannot be seen as used in IL code.
  • Take account of types and methods tagged with 'System.Diagnostics.DebuggerNonUserCodeAttribute' to define the set JustMyCode in default queries: 'Discard generated Types from JustMyCode' and 'Discard generated and designer Methods from JustMyCode'.



  • Bug Fixes

  • In VS 2012, 2010 context, when opening the panel 'Queries and Rules Explorer' from the main menu, and then docking it in another panel, the panel didn't maximize its size.
  • The methods from NDepend.CodeModel.ExtensionMethodsHelpers, To[Simple/Full]NameLikePredicate() don't require anymore the input contract that regexString must be not empty. In Certain situations this provoqued exceptions.
  • For a IType object that is a third-party interface, the types returned by IType.TypesThatImplementMe didn't contain third-party types that implement the interface.
  • In Report, the algorithm used to sort a numeric column was a textual sorting algorithm instead of a numeric sorting algorithm.
  • Hitting Ctrl-Space after a word at the start of a line just below a mono-line comment that ends up with a dot, could provoque an exception.
  • Right clicking a parent code element (type, namespace...) with a lot of direct child, now can tell instantly if there is a dependency cycle between the direct child of the code elements.
  • When installing the Reflector add-in through a code element right click -> Reflector menu, the Reflector add-in installation wasn't persisted when closing the process.
  • In VisualStudio NDepend addin light installation, when installing the Reflector add-in through a code element right click -> Reflector menu, clicking the browse file button provoked an exception.
  • When starting Reflector from NDepend, if the Reflector window was closed immediately after popup, a RemotingException occured on the NDepend side.
  • Very rarely, a NullReferenceException was thrown while the user was editing a code query.
  • Very rarely, for some obfuscated assembly a NullReferenceException could popup at analysis time.
  • Very rarely, while running a full analysis in the VisualNDepend process, a ThreadAbortException could popup.
  • Very rarely, a CannotUnloadAppDomainException could popup after loading a project.
  • Very rarely, a NullReferenceException could popup when opening a sub-result (in a row), in a CQLinq query result.



  • Version4.0.1.6475
    Date30th of May 2012
    Description
    Bug Fixes
  • Methods UsingAny() IndirectlyUsingAny() UsedByAny() IndirectlyUsedByAny() defined in ExtensionMethodsSequenceUsage class didn't return any input code element, in the output sequence of code element, even for input code elements matching the usage condition.
  • On machine without .NET Fx v3.5 SP1 installed, a MissingMethodException could be thrown because of the usage of the method System.Threading.WaitHandle.WaitOne(Int32), that has been added to .NET Fx v3.5 SP1 release!





  • Version 4.0.0.6345
    Date23th of May 2012
    Description
    Features
  • CQLinq: Code Querying and Rule over LINQ
  • NDepend.API and open-source Power Tools implemented on top of NDepend.API
  • Possibility to define the code base view JustMyCode through CQLinq queries prefixed with "notmycode", to exclude generated and unwanted code elements from CQLinq rules and queries result.
  • Possibility to compare evolution, trending (Avoid making complex methods even more complex)
  • Possibility to create custom code metrics.
  • Advanced code completion and documentation browsing for CQLinq queries edition.
  • Time out available for CQLinq queries and Query execution duration displayed
  • Query conversion from CQL query to CQLinq query. Available in Queries panel edition, Queries and Rules Explorer panel, as a Power Tool, and as an NDepend API extension method: string ConvertToCQLinq(this IQueryCompiledSuccess queryCompiledSuccess)
  • Possibility to visualize sub-query result, made of a collection of code elements for each query match.
  • NDepend integration within Visual Studio 2012
  • Support for .NET v4.5 and Silverlight v5.0.
  • Project and Analysis Result files referenced from baseline for comparison, can now be defined through relative or absolute paths.
  • NDepend.Console.exe file path and directory path arguments can now be relative to the parent directory path of the NDepend project file specified as a first argument. The NDepend project file path cannot be a relative path.
  • Mouse hovering in various panel is now less reactive. Toolips only appears when the user position the mouse over a hot spot, and flashy tooltips on mouse move are discarded.
  • Facility to reset the dependency graph and matrix with assemblies, namespaces and namespaces dependency cycles.
  • Support to plug the Visual Studio 2012 Diff tool to NDepend.


  • New Power Tools
  • Query Code with CQLinq
  • Detect Assemblies Versionning and Deployment Issues
  • Public API Changes (including API Breaking Changes)
  • Search for Duplicate Code
  • Find potential Dead Code
  • Code Base Evolution
  • Code Review Methods Changed
  • Search Types by Name
  • AppWords
  • Analyze Code on my Disk
  • Analyze Assemblies in Folder
  • Analyze all .NET Framework Assemblies
  • Convert CQL queries/rules of a project to CQLinq queries/rules
  • .NET Framework v3.5 and v4.X installed, Core Public API Changes


  • New Default Code Rules
  • Base class should not use derivatives
  • Do not hide base class methods
  • Types with disposable instance fields must be disposable
  • Disposable types with unmanaged resources should declare finalizer
  • Extension methods should not be used to extend System.Object
  • Overrides of Method() should call base.Method()
  • Methods should be declared static if possible
  • Non-static classes should be instantiated
  • Constructor should not call a virtual methods
  • Don't assign static fields from instance methods
  • Avoid types initialization cycles
  • Avoid interfaces with too many methods and property getter
  • Avoid the Singleton pattern
  • Avoid custom delegates
  • Avoid namespaces mutually dependent
  • Avoid namespaces dependency cycles
  • Avoid partitioning the code base through many small library Assemblies
  • Avoid public methods not publicly visible
  • Constructors of abstract classes should be declared as protected or private
  • Equals() should be overridden by types implementing the '==' operator
  • UI layer shouldn't use directly DB types
  • UI layer shouldn't use directly DAL layer
  • Avoid public methods not publicly visible
  • Methods that could have a lower visibility
  • Broken serializable types
  • Heuristic to find types moved from one namespace or assembly to another
  • C.R.A.P method code metric
  • Avoid decreasing code coverage by tests of types
  • Types that used to be 100% covered but not anymore
  • Avoid making complex methods even more complex
  • Avoid making large methods even larger
  • Avoid transforming immutable types into mutable types
  • Avoid adding methods to a type that already had many methods
  • Avoid adding instance fields to a type that already had many instance fields
  • Avoid transforming an immutable type into a mutable one
  • Avoid transforming an immutable field into a mutable one
  • Types tagged with ImmutableAttribute must be immutable
  • Avoid static fields with a mutable field type
  • A field must not be assigned from outside its parent hierarchy types
  • Don't use obsolete types, methods or fields
  • Don't use dangerous threading methods
  • Don't tag instance fields with ThreadStaticAttribute
  • Don't forget to implement methods that throw NotImplementedException
  • Don't call your method Dispose
  • Methods prefixed with 'Try' should return a boolean
  • Avoid having different types with same name
  • Avoid prefixing type name with parent namespace name
  • Avoid naming types and namespaces with the same identifier
  • Public methods returning a reference needs a contract to ensure that a non-null reference is returned
  • Test Methods
  • Methods directly called by test Methods
  • Methods directly and indirectly called by test Methods
  • Types directly using one or several types changed
  • Types indirectly using one or several types changed
  • Methods directly calling one or several methods changed
  • Methods indirectly calling one or several methods changed
  • Higher cohesion - lower coupling
  • Avoid referencing source file out of Visual Studio project directory
  • Avoid duplicating a type definition across assemblies
  • Namespace name should correspond to file location
  • Avoid defining multiple types in a source file
  • Types with source files stored in the same directory, should be declared in the same namespace
  • Types declared in the same namespace, should have their source files stored in the same directory


  • Enhanced Default Code Rules
  • Types with too many methods
  • Types with too many fields
  • Type should not have too many responsibilities
  • A stateless class or structure might be turned into a static type
  • Class shouldn't be too deep in inheritance tree
  • All Code Diff Summary queries are
  • API Breaking Changes: Methods
  • API Breaking Changes: Types
  • API Breaking Changes: Fields
  • API Breaking Changes: Interfaces
  • Potentially dead Types
  • Potentially dead Methods
  • Potentially dead Fields
  • Types tagged with ImmutableAttribute must be immutable
  • Methods tagged with PureAttribute must be pure
  • Property Getters should be immutable
  • Avoid methods with name too long
  • Avoid types with name too long
  • Avoid fields with name too long
  • Interface name should begin with a 'I'
  • All 30 .NET Framework Usage rules



  • Bug Fixes
  • All NDepend assemblies are now compiled in AnyCPU. This solves all incompatibility problem with Reflector and VisualStudio on machines with a x64 processor architecture.
  • Right-clicking an assembly in 'Project Properties > Code to Analyze' or in form 'Analyse a set of .NET Assemblies' didn't provoked the row selection.
  • Toolips are not flickering anymore.
  • From the menu Compare 2 versions of a code base, if the newer version was a set of assemblies and a report was generated, the report only displayed the newer version of the code base. It wasn't compared with the older version of the code base.
  • In the tree view showing code queries group, even with the vertical scrollbar down, the last item wasn't shown properly.
  • Types generated by the compiler, from an iterator method implemented as an explicit interface implementation method, were not seen as IsGeneratedByCompiler.
  • Some rare obfuscated assembly could provoke a NullReferenceException at analysis time.
  • Some memory leaks have been fixed.








  • Version3.9.0.5848
    Date17th of October 2011
    Description
    Features
  • Possibility to append to the code set to analyze, all .NET assemblies in a folder in a row (shallow or recursive).
  • In the CQL Queries Explorer panel, new context menu possibility to paste any default group.
  • Methods with too many overloads (NbOverloads) now doesn't match operator methods
  • In NDepend project .ndproj file, code queries are now persisted in a friendly way for text edition, through some CDATA XML elements.



  • Bug Fixes
  • VS2010 crashes at shutdown when hosting NDepend (or another addin) appears to be a VS2010 bug solved by the VS2010 fix KB2275326: http://archive.msdn.microsoft.com/KB2275326
  • When VS2010 was hosting the NDepend addin on a machine with a DPI different than the default 96, hovering the mouse on progress circle didn't work properly.
  • When installing or deinstalling a VS2010 extension, a NullReferenceException might popup provoked by the VS2010 NDepend Addin.
  • If the font Arial Narrow wasn't installed on the machine, an exception could pops up when starting VisualStudio with NDepend addin.
  • Some PDB files tagged with SRCSRV by the build server were seen as corrupted.
  • On some VS coverage .coveragexml files, it might appears that some methods were not seen as having coverage data.
  • In the dialog Choose VS solutions or projects, when double-clicking a DataGridView column header an exception was raised.
  • In VisualNDepend.exe standalone UI, hovering with the mouse the right side of the progress circle icon in the bottom righ of the window, could provoque the associated panel to disappear.
  • The query edition option Copy query to HTML might not transform correctly '$' character into "&".
  • The metric NbVariables defined on method now doesn't take account of compiler generated variables anymore.
  • Usage of methodof() and fieldof() operators is now taken account at analysis time to resolve dependencies.
  • The case where an analysis result loaded has been done by a higher version of NDepend than the current NDepend version, was not properly indicated to the user.
  • NDepend addin for Reflector v7 doesn't work by-design on a x64 machine. Basically NDepend has to be compiled x86 because of its VS integration, and on 64bits Reflector cannot load x86 assemblies. But one can open a Visual Studio command prompt and execute corflags /32bit+ /force C:\Users\username\XYZ\Reflector.exe to make this work (make sure to replace the path to the file Reflector.exe).
  • Selecting a type from NDepend to Reflector, when the Reflector process didn't exist yet, was buggy since Reflector 7.3.
  • Decompiling a type from NDepend with Reflector was buggy since Reflector 7.3.
  • Opening a dependency, from a dependency graph arrow to the dependency matrix, could result in an ArgumentOutOfRange exception if one of the 2 code elements involved was a type forward only assembly such as .NET 4.5 System.Runtime.dll
  • The analysis was crashing if the current analysis result was compared with an older analysis result, for which no assembly were found.
  • In Trial edition, in VisualNDepend.exe context, in the Dialog explaining the Trial edition usage that is shown when loading the project for the first time, when cliking the Exit button a NullReferenceException could be send.
  • In Trial edition, the fact that it is not possible to running NDepend.Console.exe Trial in a Windows services process, is now more clearly explained to the user.
  • After a large refactoring involving several types moving across namespaces, incremental analysis could throw a KeyNotFoundException or a NullReferenceExeption.




  • Version3.8.1.5706
    Date31th of May 2011
    Description
    Ergonomy and Responsiveness
  • NDepend addin loads 40% faster in Visual Studio (any version) at startup time.
  • From the VS Solutions chooser form, when chosing VS solutions with hundreds of assemblies to analyze, the time to fill the next dialog with .NET assemblies provoked an UI responsivness issue.
  • In NDepend Visual Studio addin, limit the number of NDepend projects listed in the NDepend global menu to 30.
  • In the Info Panel > Global Summary, an analysis result description now shows the NDepend version that produced the analysis result.
  • In the dependency graph, if the user removed some nodes and then click a graph laying out button (Horizontally or Vertically), it now reformats the graph layout only with nodes not removed.



  • Bug Fixes
  • When a new VS solution is created, the NDepend menus to attach a new NDepend project to the freshly created solution are now available.
  • When attaching a new NDepend project to a VS solution, if the NDepend project file wasn't in the same directory than the VS solution file, this situation could lead to problem.




  • Version3.8.0.5674
    Date12th of May 2011
    Description
    New Features
  • New menu in Start Page 'Select VS Solution(s) to Analyze'
  • Ergonomy of 'New NDepend Project' dialog enhanced.
  • In Build Comparison Setting form, there is a new button 'Browse VS solutions' to fill easily the assemblies list.
  • On multi-monitor machines, all NDepend dialogs and forms shown, now appear on the screen that currently contains the mouse cursor
  • The Dependency Matrix and Graph now support the mouse extra-buttons back/forward.
  • Support for Reflector v7.X
  • The default rule 'Fields should be marked as ReadOnly when possible' now discards fields generated for events (i.e fields where 'IsEventDelegateObject').
  • The flag Concurrent is now implemented by the MSBuild and NAnt tasks.
  • In CQL Explorer panel, it is now possible to export a group of queries to XML.



  • Bug Fixes
  • Regression bug: Importing coverage file live in NDepend interactive UI was not working.
  • Regression bug: Loading or re-loading NDepend addin in VS while VS was already running, provoked an exception.
  • Some rare obfuscated assemblies could provoke an exception at analysis time.
  • Attempt to create a new project with a file path equals to 'D:\' could lead to an exception.
  • When re-loading a former analysis made on some C++/CLI assemblies depedending on stdLib, an exception could occur.
  • When at analysis time no application assembly was found, an exception occured while building the Dependency Matrix for report.
  • On some very large code bases, analysis could hang because of some problem in Type and Method ranking computation.
  • On the Start Page with high DPI set, some UI elements could not be displayed properly.
  • Trying to infer .NET assemblies from a solution involving a Web Service could lead to an exception.
  • When parsing C# source file, an erroneous warning concerning an enum that would be declared wrong was emitted if some variable name were like 'enum1' or 'enum2'.
  • In C#, two consecutive generic clauses 'where' could provoke an erroneous warning from the NDepend C# source file parser.
  • A FieldAccessException could occur at analysis time if other VS addins relying on Mono.Cecil were loaded.




  • Version3.7.0.5526
    Date16th of March 2011
    Description
    Support for importing coverage data from DotCover v1.1 and above versions.


    Bug Fixes
  • When started VisualNDepend directly on a .ndproj file, an exception occured.
  • When right clicking the start page datagridview of projects, an exception occured if no project was listed.
  • When ticking/unticking the check box 'Is critical rule' while editing a CQL query, the button 'Save query' enabling state wasn't updated.
  • NCover coverage file with extension .nccov needed to be renamed with a .xml extension to be taken account.




  • Version3.6.0.5432
    Date17th of December 2010
    Description
    Analysis Performance and Features
  • Analysis execution performance increased up to 40%.
  • New analysis run option: serial vs. concurrent, where concurrent mode can run a large portion of the analysis (full and incremental) concurrently.
  • Up to 30% less memory consummed at analysis time.
  • New NDepend.Console.exe command line option: /Concurrent
  • Possibility to disable NDepend keyboard shortcuts when hosted Visual Studio (useful if there are collision with other tools).



  • Bug Fixes
  • In the panel Project Properties > Code to Analyze, when drag-and-droppig many folders or many assemblies, the UI could take time to refresh and response.
  • In VisualNDepend.exe with Ribbon mode, when editing a project that doesn't have previous analysis yet, clicking the button 'Load Previous Analysis' resulted in an exception.
  • When openeing an analysis with more than 250 assemblies for the first time, the dependency graph and dependency matrix shows only the first 250 assemblies, to avoid an arbitrary and uncontrolled computation duration.
  • Some problem could appears in dependencies involving code elements declared in a multi-modules assembly.
  • .NET assemblies generated from dump file can now be analyzed by NDepend.
  • Some C++\CLI generated PDB files were not analyzed properly, they are now.
  • The property IsCriticalRule wasn't taken account in CQL rules defined in code throug the attribute NDepend.CQL.CQLConstraint.
  • If the Windows user running the analysis didn't have access to the output directory of a NDepend project, an UnauthorizedAccessException popped up. Now a clean explanatory message is shown.
  • When changing something to the CQL queries of a project, when switching to another window and coming back to the NDepend window just after the change, NDepend asked unexpectidly for reloading the CQL queries.
  • A bug in incremental analysis where a third-party interface of a type was discarded wrongly, has been fixed.
  • When clicking 'Run Analysis' from a project in the start page, if the NDepend project had a Baseline for comparison (UI) defined, this baseline wasn't loaded in the interactive UI once the new analysis result (produced by the triggered analysis) was reloaded
  • When clicking 'Run Analysis' from a project edied without any analysis result currently loaded, if the NDepend project had a Baseline for comparison (UI) defined, this baseline wasn't loaded in the interactive UI once the new analysis result (produced by the triggered analysis) was reloaded.




  • Version3.5.0.5374
    Date 24th of November 2010
    Description Enhanced report

  • New interactive javascrip/HTML report design.
  • New sections in report: Namespace Metrics and Namespace Dependencies
  • New metrics at application levels available in the report.
  • Possibility to visualize a Dependency Matrix in report.
  • Percentage code coverage metrics available in report at application/assembly/namespace/type level.
  • Possibility to display Groups of CQL Queries in Report
  • Possibility to allow breaking long code elements names in report CQL list of matches.



  • A CQL rule can be qualified as critical rule

  • Possibility to define some CQL rules as critical, and break the Build Process if some critical rules are violated.
  • New default CQL rules:
    • Methods too complex - critical (ILCyclomaticComplexity)
    • Methods with too many parameters - critical (NbParameters)
    • Types too big - critical (NbLinesOfCode)
    • Avoid interfaces with too many methods
  • Two default rules becomes critical:
    • API Breaking Changes: Types
    • API Breaking Changes: Interfaces


  • Bug Fixes
  • When clicking 'Run Full Analysis and Build report', if the NDepend project had a Baseline for comparison (UI) defined, this baseline wasn't loaded in the interactive UI once the new analysis result (produced by the triggered analysis) was reloaded.
  • Under certain condition, check boxes of Project Properties > Report datagridview section were not visible.
  • When the user unzipped NDepend files to a flat list of files instead of a sub-folder hierarchy, the wrong-install-message shown to the user was unclear.
  • Trying to export a CQL query result that matched anonymous namespace could result in an ArgumentOutOfRangeException.
  • Analysis log warnings disabled were still shown in the Analysis Log section of report.
  • An ArgumentOutOfRangeException could be reported during analysis while parsing some C# source file using \n as line feed.




  • Version3.2.0.5097
    Date11th of October 2010
    Description
  • Context-Sensitive Help added to panels : Matrix, Graph, Treemap.
  • In the panel Project properties > Code to Analyze, when hovering a .NET assembly with the mouse, the info panel or tooltip provides a description of the assembly.
  • In the panel Project properties > Code to Analyze, if NDepend shows an error for an assembly, the info panel or tooltip provides a plain english description of the problem.
  • In the CQL Query editor, possibility to copy the CQL query to HTML formatting.
  • Replace the term 'tier' (like tier code) with the term 'third party' (like third party code).


  • Bug Fixes
  • New VS 2010 coverage result file with extension .coveragexml are now supported by NDepend.
  • NDepend wasn't taking account the new VS 2010 code coverage feature to discard methods tagged with System.Diagnostics.DebuggerNonUserCodeAttribute, System.Diagnostics.DebuggerHiddenAttribute, System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute (or declared in type tagged with this attribute).
  • NDepend wasn't taking account the NCover feature to discard methods tagged with System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute (or declared in type tagged with this attribute).
  • When NDepend was using NCover v3 to gather coverage data, and some classes declared in anonymous namespaces were involved, some discrepancies might appear in coverage metric values.
  • The window NDepend UI usage recommendation that appears once finishing an analyze triggered from UI is now bring to front of the browser window that appears to host the report.
  • When closing VisualStudio with Alt+F4, while pointing with the mouse a NDepend panel, could result in a crash of VS or in NDepend's tooltip remaining visible longer than needed.
  • On Windows XP, when showing Info tooltip or Circle tooltip, some flickering occured on the top left coordinate of the main sceen.
  • If an assembly PDB was found and parsed, but corresponding source files couldn't be parsed by NDepend, some code elements descriptions could show 0 value for source file information (like comments) instead of N/A.
  • When showing the Rebasing Form from the Class Browser top application node, if the info tooltip was visible, it remained visible while showing the form for rebasing.
  • When closing Visual Studio with NDepend addin installed, VS could crash in rare occasions.
  • When starting NDepend with a dependency matrix with the option bound headers and displays index, index cells in the horizontal headers might no displayed right code elements.
  • Some NDepend UI elements were not properly sized on machines with a DPI mode higher than 96.
  • On machine with Windows configured to Japanese or other asiatic cultures, some NDepend forms could not be well sized.




  • Version3.1.0.5016
    Date3rd of September 2010
    Description
    New Reporting Options:
  • Possibility to hide tier assemblies in the report assemblies dependencies graph.
  • Possibility to choose layer direction in the report assemblies dependencies graph.
  • Possibility to avoid too big reports by hiding section Type Metrics if more than 1000 types involved.
  • Possibility to avoid too big reports by hiding section Type Dependencies if more than 300 types involved.
  • Possibility to avoid too big reports by avoiding showing more than 100 matched items per CQL rule violated.


  • Usability Enhancement:
  • A new dialog that helps NDepend beginners about what to do after an analysis has been added.
  • If no Visual Studio addin is installed, a small animation on the NDepend Start Page explains to the user that the Visual Studio addin should be installed.
  • In NDepend properties > Code to Analyze, the horizontal splitter between folders and assemblies has been made more obvious.
  • If an Error form popups and a newer NDepend version is available for download, the Error Form fosters the user to download the most recent version that hopefully fixes bug.


  • CQL Default Rules:
  • The rule 'Fields should be marked as ReadOnly when possible' does not match anymore fields generated by compiler.
  • New default CQL rule in Design: Avoid partitioning the code base through too many Assemblies
  • Two new default CQL rules in Purity / Immutability / Side-Effects: Instance Property Getter should be immutable ; Static Property Getter should be immutable


  • Bug Fixes
  • In rare case, when a field type was a value type and a member of the field was accessed in a method, the field was incorrectly seen as written by the method and the method had one of the flag ChangesobjectState or ChangesTypeState .
  • On japanese VisualStudio, an ArgumentException could be thrown when starting VisualStudio with the NDepend addin installed.
  • Opening Source File declaration with Visual Studio could not work under certain rare circumstances.
  • When choosing to represent folders with path relatives to NDepend project file, an eventual ASP.NET MVC assemblies path remains as an absolute path.
  • When adding a .NET Framework folder to the list of folders of a NDepend project file, if the paths were represented as relatives, the .NET Framework folder path was transformed as relative instead of remaining absolute.
  • A crash might occur at analysis time in the very rare case where an enumeration value__ instance field was declared as private (C++\CLI behavior).
  • When 2 parent namespaces (namespace with name ending with .*) were dependent on each other, trying to see internal dependency could lead to an exception.
  • Very rarely, a NullReferenceException was raised when clicking a header of the dependency matrix.
  • NDepend Reflector addin provoked some unhandled exception in Reflector v6.5 because of new .NET v4 runtime behavior.
  • NDepend was not able to disassemble code through Reflector v6.5.
  • The form Baseline for Comparison Settings wasn't rendered well on machine with DPI set to higher than 96.
  • In trial edition, when activating a VisualNDepend window or a VS hosting NDepend window, if the NDepend project contained a Baseline for Comparison + the NDepend project had to be reloaded on window activation, the message box explaining that the Baseline for Comparison was N/A in trial was popping again and again.
  • When starting Visual Studio (any version) with the NDepend addin registered, rarely a NullReferenceException could popup because of a potential race condition that is now fixed.
  • When starting Visual Studio (any version) with the NDepend addin registered, rarely a VisualStudio bug prevented to register properly the NDepend menu. Now the addin initialization is discarded and an informative message appears in the VS statuBar telling to reload the addin or restart VS.
  • When downloading NDepend zip file redistributable + unzipping files with Windows Explorer zip, NDepend files are all marked as blocked. Now NDepend unblocks all its files automatically the first time an NDepend executable file is started.
  • Very rarely, clicking the button 'Select Forward Code Element' could lead to a NullReferenceException.
  • Very rarely, clicking a column header in a CQL result could lead to an IndexOutOfRangeException exception.
  • Very rarely, showing the Search Panel could lead to an ArgumentException.
  • Very rarely, browsing project through the open file dialog could end up in an exception if the open file dialog was returning a path not well formatted.
  • Very rarely, browsing a VS solution file with open file dialog could end up in an exception if the open file dialog was returning a path not well formatted.
  • Very rarely, solution attachment of an NDepend project could fail.




  • Version3.0.3.4916
    Date19th of May 2010
    Description New features
  • Support for Silverlight 4.0 applications
  • New 'NDepend WebSite' button in Visual Studio NDepend menu.
  • The default rule 'Classes that are candidate to be turned into Structures' has been modified to avoid matching classes without instance fields.
  • The default rule 'Assemblies with poor cohesion (RelationalCohesion)' has been modified to require the assembly to have at least 20 types.


  • Bug Fixes
  • SizeOfInst metric value could be wrong for types with instance fields that were pointers.
  • When a cycle existed between several structures referencing themselves through fields that were pointers, the analysis crashed.
  • If a type T had a method that was catching an exception type E, the dependency T is directly using E is now enforced (the dependency was not created in previous version if T wasn't using any member of E).
  • The mandatory condition to make the list of NDepend.Console.exe argument began with the NDepend project file path, wasn't enforced in some situation.
  • When a full analysis couldn't write the analysis result VisualNDepend.bin file, an exception was thrown. Now an informative error log is shown to the user.
  • If a file path was malformed in VS project file, an exception could be sent at analysis time.
  • Very rarely, an UnauthorizedAccessException could be sent when opening an NDepend project.
  • When loading a NDepend project, if the project file got damaged or deleted before the end of the loading, an exception could be raised.
  • Browsing a folder from NDepend might return an invalid folder absolute path, which would lead to an exception thrown. Now NDepend informs the user properly that it can't handle the invalid path.
  • In Visual Studio, when a full analysis was executed, and the NDepend addin was unloaded (or VS was closed during the analysis), and the analysis failed unexpectedly, then the Visual Studio UI was frozen.
  • When rebuilding a solution in VS, if a project build failed, NDepend analysis was triggered anyway. Now NDepend analysis is triggered only if all projects successfully build.
  • NDepend now reports properly this problem: when a VS sln file has a ndproj file attached, the ndproj file path is stored relatively to the sln file path. If the file organization is changed by the user, it might happen that the ndproj absolute path cannot be retrieved from the relative path stored in the sln file.
  • In VisualNDepend Trial, When shutdown VisualNDepend because having clicked the 'Exit VisualNDepend' button on the Trial Form, an ObjectDisposedException could be thrown.
  • VS 2010 was crashing when loading the NDepend addin while a VS solution with a NDepend project attached was already loaded.
  • A NullReferenceException was thrown whan starting VS with NDepend addin in light integration mode.
  • When showing a CQL result with elements sorted hierarchically by source file declarations, if the application snapshot was currently rebased, the source files rebasing didn't occurs in the CQL result.
  • When closing several VS instances with NDepend addin in a row, an IOException could be thrown because of concurrent writes of the VisualNDependOptions.xml file.
  • When NDepend v3 and Resharper v5 were installed, right-clicking in the Resharper template editor provoked a NDepend exception to be raised.
  • When a large Dependency Matrix was background computed, resizing the Matrix panel could provoque an exception.
  • When a new graph was generated from a right-click option on a node of the current graph, the info tooltip wasn't discarded during background computation.
  • Very rarely, NDepend professional might freeze slightly periodically.




  • Version3.0.2.4770
    Date15th of April 2010
    Description Bug Fixes
  • When installing NDepend addin for VS 2010 on Window 7 + NDepend zip file downloaded with IE + unzipped with Window zip, the NDepend.Addin.dll file was blocked and this prevented the addin to load in VS 2010. Now we unblock this dll programatically at addin install time.
  • With DPI settings different than 96, the form of NDepend.Install.VisualStudioAddin.exe wasn't well sized.
  • With DPI settings different than 96, the project chooser control in the comparison panel wasn't well sized.
  • When NDepend v3 and TestDriven.NET v3 addin were both installed, a COMException might be thrown when opening a solution with VS 2010.
  • In VS 2010, when installing some others addin while NDepend addin was installed, a NullReferenceException might be thrown.
  • If NDepend addin already installed for VS 2010, when starting VS 2010 for the first time after VS 2010 installation, an InvalidComObjectException might be thrown.
  • When closing a VS solution or when closing VS itself, if a NDepend analysis result was currently loaded, an exception could be thrown.
  • A COMException could be sent when closing VisualStudio.
  • On Windows XP, when starting an incremental analysis, a non-fatal ArgumentException involving a PictureBox might be thrown.
  • Changing Matrix cell Weigth mode or Matrix header binding from the option menu while the Matrix panel hasen't been shown yet triggered a NullReferenceException.InvalidComObjectException.
  • When the runtime version of an assembly is v4.0, it might not have been shown properly in the Project Properties -> Code to Analyze -> Assemblies dataGridView -> Runtime column.
  • When hitting the TAB key while editing a CQL query, the focus went to the next control instead of adding a space in the query
  • In VisualStudio, when hitting the ESC key while editing a CQL query, the focus went to the code window instead of just closing the CQL Query edition intellisense box and keeping the focus.
  • When having an analysis result loaded, re-analyzing while no application assemblies referenced by the NDepend project can be found, an exception was sent at the end of the analyze.
  • When failing to open a source file declaration, NDepend might advised that a source file was not available at analysis time while the real cause was that the assembly's PDB file was not available at analysis time.
  • When opening a source file declaration in a VS instance, if one of the existing VS instance had a modal dialog opened, the source file declaration opening was freezing until the modal dialog got closed.



  • Version3.0.1.4626
    Date5th of March 2010
    Description Features
  • When installing NDepend addin, button corresponding to non-uinstalled Visual Studio versions are disabled.

  • Bug Fixes
  • NDepend had some problem running on 64bits machines.
  • Installing NDepend Reflector v6 addin from NDepend could lead to problem.
  • In the presence of certain other VS addin + NDepend addin, VS 2010 RC was freezing at startup time.
  • In the presence of certain other VS addin + NDepend addin, at VS 2008 startup time, some NDepend context menus could be printed on the Window desktop.
  • Certain VS project files contained some star char '*' to match several source files in a path, and this made NDepend analysis crashed.
  • NDepend exes icon was pixelated in Windows taskbar, when displayed as 32x32.
  • The default rule: Abstract base class should be suffixed with 'Base' didn't work with on generic base class.




  • Version3.0.0.4560
    Date24th of February 2010
    Description Features
  • Possibility to export Query result to Graph, Horizontal Matrix Header, Vertical Matrix Header, from the Export to Combo Box.
  • In the NDepend circle status tooltip form, the option 'Allow showing Info as Tooltip' has been added for conveniency.

  • Bug Fixes
  • The Assembly Build Order in the report might be wrong, it is now fixed and the Assembly Build Order is valid.
  • In VisualNDepend, when some panel were closed in previous VisualNDepend sessions, an exception could occur while starting a new analysis.
  • When NDepend VisualStudio addin is loaded in Visual Studio, right clicking some C++ code elements might trigger an exception.
  • F# projects (.fsproj) files are now properly parsed by NDepend.
  • When initializing a NDepend project from a VS 2010 solution, some assemblies might not be found.
  • When saving a large graph picture, if the bitmap is too large the error is verbosely reported to the user (instead of just displaying the exception).
  • In VS 2008 with NDepend addin registered, running some VS Test might hang the VSTestHost.exe behind process.
  • In VS 2010 RC with NDepend addin loaded, an exception was raised when opening a root folder in Macro Explorer.
  • Drag and Drop coverage file from Windows Explorer was not working in the form VS : NDepend Project properties : Analysis : Coverage Files.
  • A COMException might be raised on an ASP.NET solution when right-clicking some solution project item.




  • Version3.0.0.4527 (Release Candidate 1 Professional Edition)
    Date 15th of February 2010
    Description Features: VisualStudio Integration
  • Integration of all VisualNDepend panels in VisualStudio 2010, 2008 and 2005.
  • A global NDepend menu lets access any of these panels.
  • All NDepend features are available on right-clicking anything that can be recognized as a code-elements in the Code Editor and Solution Explorer.
  • Possibility to place some NDepend menus at the first level of the code element contextual menu.
  • Heuristic to infer a namespace from a solution folder and to infer a type from a solution source file.
  • Possibility to interact across several opened VisualStudio instances, when a NDepend project is spawning several VisualStudio solutions.
  • Animated Circle Icon that informs about analysis progression, loading progression, CQL computation progression and CQL status.



  • Performance and Responsiveness:
  • Most of Analysis Execution in VisualNDepend or VisualStudio are 5 to 20 times faster thanks to new incremental Analysis. Incremental Analysis duration is proportional to the amount of code updated and requires generally from 1 to 5 seconds.
  • Full Analysis is 40% faster.
  • Loading an existing analysis result is more than 2 times faster.
  • CQL Query compilation and execution is 3 times faster (typically 50 to 200 CQL rules verified per second).
  • Dependency Matrix computation is an order of magnitude (x10) faster for most operations (noticeable only on large matrix).
  • Background and abortable computation of Dependency Matrix and Dependency Graph.



  • Features: General
  • Persistence of VisualNDepend sessions data including Matrix panel state (and undo), Graph panel state (and undo), Query Result panel state, Search panel state, code elements in the menu back/forward.
  • Possibility to disassemble the code of a method or of a type with Reflector (language supported: IL, C#, VB.NET, Delphi, MC++, Chrome).
  • Support for VS2010, .NET v4, Silverlight v3, Reflector v6.
  • In Project Properties > Code to Analyze, possibility to sort between valid and invalid assemblies.


  • Features: Compare
  • Possibility to define a Baseline for Comparison used when loading a project in VisualNDepend and VisualStudio.
  • When comparing 2 builds, possibility to disassemble the 2 versions of the code of a method or of a class where CodeWasChanged and compare them with the specified source file compare tool.
  • 2 new comparison facilities: Compare the currently loaded Analysis Result with another Analysis Result + Stop comparing and only keep the current Analysis Result


  • Features: Graph
  • When pointing a node in graph, indirect caller/callee nodes are highlighted with a soft blue for callee/green for caller/red for caller/callee that differenciate them from direct caller/callee nodes.
  • The keyboard shortcut Ctrl+Space takes a snapshot of the graph. It is useful to take snapshot with colored nodes by mouse hovering.
  • Possibility to append to the graph a set of code elements from a CQL query result.
  • Possibility to remove selected nodes in a graph and also, possibility to keep only user/used nodes of a node.


  • Features: CQL
  • Possibility to edit several queries at the same time in the new Query Edition panel.
  • New buttons: Search type by Name; Search method by Name; Create a New CQL Query
  • When displaying the query result of a query containing a METHODS WHERE ... XXXWritingField \ ...XXXDeriveFrom \ Implements \ ReturnTypeIs \ FieldIsOfType \ HasAttribute clause, the targeted code element is now displayed in the query target section of the result.
  • New CQL Keyword IsFinal, IsNewSlot, IsPInvokeImpl defined on method (with semantic according to their meaning in IL).


  • Features: NDepend Analysis and Project
  • Possibility to attach a NDepend project to a VisualStudio solution.
  • NDepend project files names have the extension .ndproj by default (extension .xml is still supported to preserve ascendant compatibility).
  • Option menu to fine-grain customize the analysis run started from VisualNDepend or VisualStudio (Incremental/Full Analysis, reporting options, how often a Full Analysis is done...).
  • When a NDepend project is modified outside of the process, the user is informed when he re-activates the VisualStudio or VisualNDepend window.
  • When currently showing the most recent analysis and a more recent analysis result is available (computed from another process), the most recent result is loaded automatically when he re-activating the VisualStudio or VisualNDepend window.
  • Option menu to Import/Export/Reset VisualNDepend Options.


  • Features: Info Panel
  • Nicer display of code elements and dependencies description in InfoPanel (with hyperlink for metrics definition).
  • By default, show Global Summary in the Info Panel.
  • Possibility to Pin\UnPin code element and dependency description in Info View.



  • Behavior change:
  • In build comparison, if the type of a field changed, NDepend considers that the code of the fields’ declaring type was changed (CQL condition CodeWasChanged).
  • When comparing 2 analysis results in VisualNDepend and then running a new analysis on one of the 2 results, once the analysis complete, VisualNDepend is still in comparison mode.
  • When comparing 2 analysis results, code elements displayed names are underlined only if the code was changed, before we underlined even if comments were changed.
  • The default CQL rule 'A stateless class or structure might be turned into a static type' has been updated to avoid matching classes that have a base class and base classes that have children subclasses.
  • The default CQL rule 'Methods that could be declared as 'internal' has been updated to avoid matching default constructors.
  • The default CQL rule 'Classes that are candidate to be turned into Structures' has been updated to avoid matching static classes.
  • Computation of the metrics LCOM and LCOM-HS defined on types no longer takes into account compiler generated members.



  • Bug Fixed:
  • In the metric view, when displaying fields with the metric set to 'Size of Instance', right clicking a rectangle representing 'Fields inherited from XXX' raised an exception.
  • After a restart of VisualNDepend, the panels could be over-sized
  • The initial location of the VisualNDepend form might not be retrieved properly from the last run in multi-monitor environment.
  • Dependency Matrix ToolTips might not be located properly in multi-monitor environment.
  • ScrollBars were not properly displayed in the NDepend StartPage.
  • When comparing 2 builds and disabling some assemblies, an exception could occur when selecting a child of a discarded assemblies in a query result.
  • An exception could be raised when selecting a code element displayed in a search result, when the search result vertical space was not large enough.
  • A '&' character in a comment of a CQL query declared in code source could raise an exception during analysis.
  • A tab character in the body of a CQL Query in the project file could prevent the CQL compiler to run properly.
  • In some cases, duplicated CQL query definition in source code could raise an exception during analysis
  • In the Browse Project Dialog, clicking a header of the grid raised an exception.
  • When comparing analysis, constructor(s) of a class which base class was changed was not considered as changed.
  • Assemblies with forwarded types can now be analyzed.
  • Method return type could not be correctly linked for abstract methods.
  • An exception could be raised while analyzing some kind of obfuscated assemblies.
  • An indirect usage path from a method to a field couldn't be exhibited from the Matrix to the Graph.
  • An indirect usage path from a namespace parent to an assembly couldn't be exhibited from the Matrix to the Graph.
  • The Visual Studio 2008 skin was disabled because several problems were caused by this particular skin.
  • Saving analysis result of a very large analyzed application could take an abnormal long duration (in minutes).
  • A System.UnauthorizedException was raised when trying to load an analysis result (VisualNDepend.bin) from a file with Read access only.
  • When comparing assemblies, CodeWasChanged wasn't set on methods with more than 4 local variables where no code was changed except the variable usage.
  • A field assigned through a 'out' or 'ref' method parameter wasn't seen as written. This could also provoke side-effect on the field IsImmutable CQL clause.
  • Source code and PDB files information could be corrupted when dealing with assemblies with more than one module file.
  • File ndependreport-ccnet.v2.xsl updated to solve the CruiseControl.NEt bug 1530: http://jira.public.thoughtworks.org/browse/CCNET-1530
  • When doing a comparison at analysis time in 'Another project' mode, the description of the analysis result against which the comparison is done could be wrong.
  • When displaying the query result of a query containing a METHODS WHERE ... XXXWritingField clause, the query targeted field was not displayed correctly.
  • When editing a CQL clause DepthOfWritingField "XXX" > XXX, when displaying the intellisense number , the upper threshold displayed wasn't correct.
  • In C#, when using the keyword 'class' or 'struct' in the context of generic parameters constraint, the NDepend C# parser could emit a warning.
  • When a query has no code element matched, it is now shown adequately in the result area.
  • CQL queries generated from dependency related menus could contains some <b> and </b> tags.







  • Version2.12.1.3122 (Trial Edition) / 2.12.1.3123 (Professional Edition)
    Date20 may 2009
    Description Bug fixed:
  • If the environment variable $APPDATA$ is not defined, NDepend reports properly this problem that prevent from installing the VisualStudio AddIn.
  • If the environment variable $APPDATA$ references a network drive, NDepend can now install the VisualStudio AddIn.
  • If the environment variable $APPDATA$ references a network drive or is not defined, VisualNDepend doesn't raise an exception at startup time.



  • Version2.12.0.3026 (Trial Edition) / 2.12.0.3027 (Professional Edition)
    Date 27 march 2009
    Description Feature:
  • Possibility to Group Code Elements in a Query Result by Assembly/Namespace Tree or Flat/Type/Directory/File.
  • New Search Panel, with numerous search options including search by: Name, Size, Complexity, Coupling, Popularity, Coverage, Visibility, Mutability, Purity, Change, Coverage of Changes
  • NDepend.Console.exe option /AnalysisResultToCompareWith to give flexibility in providing a previous analysis result to compare with.
  • Suffix \i to be case insensitive for string pattern following NameLike, FullNameLike, NameIs, FullNameIs.
  • When a code element is both pointed by the mouse and selected by the result, in Metric view it is drawn with magenta color.
  • MSBuild task is more verbose in case of failure.
  • Possibility to export to an HTML document the results of all Queries (recursive) of a CQL group.
  • Possibility to run an analysis on a project from the StartPage panel.

  • Performance:
  • VisualNDepend analysis result loading performance increased by 25%.
  • On large code bases, queries such as SELECT TOP X ... ORDER BY {several order by clauses} runs much faster.

  • Bug fixed:
  • In the report, replace \  characters with \  characters. \  white spaces could provoke some issues when used with tier CI tools.
  • An OutOfMemoryException could occurs while comparing 2 very large snapshot with VisualNDepend.
  • When sorting query result, values 0 and N/A could be mixed.
  • When minimize maximize VisualNDepend windows with the Skin set to VisualStudio2008, an exception could be raised.
  • When some structures were cyclically dependent, one referencing an other as a field array element type, a StackOverflow exception could occur at analysis time.
  • A query with a TOP clause such as SELECT TOP X where X was too high provoked an exception.
  • Regression bug fixed: coverage metrics values appeared as N/A in the report, even when the value was available.
  • An exception could be raised when changing of the headers of the dependency matrix were binded and when the matrix control height was too small.



  • Version2.11.2.2839 (Trial Edition) / 2.11.2.2840 (Professional Edition)
    Date12 december 2008
    Description Bug fixed:
  • In Trial Edition, when binding headers of the matrix, an exception could be raised when opening elements in matrix' headers.
  • After closing the Graph Panel, hovering the mouse on the Matrix Panel might not be properly taken account and vice-versa.
  • At analysis time, parsing some flawed Visual Studio project files could result in an ArgumentException.
  • Comparing some C++/CLI program's analysis result could result in a crash.
  • When the report section 'NDepend information and warning' was disabled, the Error List panel in VisualNDepend didn't display proper information.
  • In the panel 'Error List' when the Warning button was unchecked, enabling a disabled warning didn't make it disappear.
  • In the panel 'Error List' after an aborting analysis, when viewing 'Last Analysis Run' messages it was possible to enable/disable a warning.
  • When having a project opened but not an analysis result in VisualNDepend, in the panel 'Error List' it was possible to make appear messages of the mosty recent analysis by clicking checked buttons.



  • Version2.11.1.2810 (Trial Edition) / 2.11.1.2811 (Professional Edition)
    Date4 december 2008
    Description Bug fixed:
  • Some large applications analysis could crash
  • Some problems could arise on some assemblies with a special compilation (like IKVM) with duplicated setter properties.
  • Some problems could arise on some assemblies with a special compilation (like IKVM) with method without visibility (only private scope).
  • Some problems could arise on some assemblies with a special compilation (like IKVM) with some special Explicit Method Interface Implementation (2 pairs of parenthesis in name).
  • Some problems could arise on some assemblies with a special compilation (like IKVM) with some special type with a '$' character in name.



  • Version2.11.0.2776 (Trial Edition) / 2.11.0.2777 (Professional Edition)
    Date 1 december 2008
    Description Performance:
  • Analysis duration divided by 4 and memory consummed by analysis divided by 2.


  • Feature:
  • Possibility to open from VisualNDepend the source code definition of a method written in any .NET language (C#, VB.NET, F#...) as long as the PDBs files are provided the during analysis.
  • More accurate information message about source files parsing in the Error List.
  • NDepend doesn't consider anymore that a class is using directly the types of the attribute that tag its base class(es).
  • Silverlight default support for Silverlight 2.0 RTM (v2.0.31005.0).


  • Bug fixed:
  • Some signed assembly couldn't be analyzed.
  • When closing an analyses immediately after loaded it, a non-fatal NullReferenceException could occurs.
  • The CQL condition HasAttribute "System.SerializableAttribute" was always false. It is now equivalent to the CQL condition IsSerializable.
  • In the panel Error List in VisualNDepend, during an analysis clicking a cell of the row Disabled raised a NullReferenceException.
  • When choosing the metric # IL Instructions in the Metric View, the metric unit was not displayed properly when pointing code elements in the treemap.
  • Loading an analysis result that contains some obfuscated assemblies could potentially crash because of an XmlTextReader bug while reading character encoded with ISO/IEC 10646.
  • When editing a new graph, an exception was raised if the graph panel had a width or height equal to 0.
  • The values for IL Cyclomatic Complexity for methods is now increased by one to be coherent with the Cyclomatic Complexity values computed from source code.



  • Version2.10.4.2597 (Trial Edition) / 2.10.4.2598 (Professional Edition)
    Date17 october 2008
    Description Bug fixed:
  • In the report some tags might not be resolved such as $ComponentFilePluralShortUpper or $BinaryLanguageLong$.



  • Version2.10.3.2579 (Trial Edition) / 2.10.3.2580 (Professional Edition)
    Date13 october 2008
    Description Feature:
  • Possibility to remove empty row & column in Matrix.
  • Possibility to remove a node in the graph.
  • The default CQL rule 'Types should not extend System.ApplicationException' doesn't match anymore exception class defined in tier assemblie.
  • The default CQL rules 'Instance fields should be prefixed with a 'm_'' and 'Static fields should be prefixed with a 's_'' doesn't match anymore IsSpecialName and IsEventDelegateObject fields.
  • Silverlight default support for Silverlight Release Candidate 0 (v2.0.30923.0).


  • Bug fixed:
  • Since the previous 2.10.2 version, in Ribbon with VisualStudio 2008 Skin, ComboBox background was black when not hovered with the mouse.
  • When the 'Cell Weight Mode' of the Matrix and the 'Edge Thickness' of the Graph were different, right-clicking an edge of the graph and selecting 'Open this dependency on Matrix (keeping only involved elements) or by (keeping only changed elements)' could throw an exception.
  • When the 'Edge Thickness' of the Graph was set to constant, the menu displayed when right clicking an edge could contain some invalid commands in this context.
  • During build comparison, ignore assemblies name case. For example System.dll and system.dll will be compared.
  • The VisualNDepend options and most recent projects are now stored in the current user Application Data folder, to avoid some potential UnauthorizedAccessException when running on Windows Vista under non-admin account.
  • An OutOfMemoryException could be thrown from the Graph view when drawing a 1x1 pixel box.
  • After doing a Matrix View update that didn't affect the set of code elements, hovering the mouse on Matrix cells might raise an OutOfMemoryException.




  • Version2.10.2.2465 (Trial Edition) / 2.10.2.2466 (Professional Edition)
    Date25 september 2008
    Description Feature:
  • Possibility to choose the .NET Framework Targeted, v2.0, v3.5 or Silverlight v2.0 for now.
  • New clause 'DepthOfInheritance == 1 // Must derive directly from System.Object' to the default CQL Query 'Classes that are candidate to be turned into Structures'
  • New button 'Copy to ClipBoard Default CQL Queries' in the CQL Queries edition Option Panel.


  • Usability:
  • In the 'Assemblies Enabled' option panel, the assemblies list can now be sorted by clicking the column header.
  • For all forms when relevant, clicking one of a keyboard button Enter or Esc now leads to the OK or Cancel action.
  • More facilities to export Matrix' Headers' Code Elements to Graph.


  • Bug fixed:
  • In query result panel, the button 'export to graph' was not disabled when no query was selected.
  • A type generated by compiler that only contains fields (no methods) could be considered as added/removed in comparison mode.
  • When no analysis loaded, changing the query edition options could lead to a crash.
  • When a VisualNDepend panel needed to be activated on various actions, such as viewing a new graph or center a code element on metric view, a NullReferenceException could arises.
  • The shortcuts Ctrl+Alt+M (for Metric view) Ctrl+Alt+I (for Info view) Ctrl+Alt+R (for query Result view) Ctrl+Alt+Q (for CQL Query view) didn't work in Ribbon mode.
  • Under some very rare circumstance, the computation of the treemap of the Metric view could raise a DivideByZeroException.
  • In the Option menu, when using Source File Compare tool and Source File Editor tool within the same VisualNDepend session, the list of default tool displayed could be erroneous.
  • When starting an analysis from VisualNDepend, a console windows was visible dusing a few milli-seconds. Now the console windows doesn't flash anymore.
  • When closing VisualNDepend, an ErrorForm could flash because internally an exception could be thrown depending on the internal state.




  • Version2.10.1.2403 (Trial Edition) / 2.10.1.2404 (Professional Edition)
    Date15 september 2008
    Description NDepend can be executed on a machine with .NET Framework version 2.0 (or higher) installed
    (the previous NDepend release required v3.5 installed).



    Version2.10.0.2393 (Trial Edition) / 2.10.0.2394 (Professional Edition)
    Date 9 september 2008
    Description New Graph Panel:
  • Interactive graph with nodes and edge color update on mouse over.
  • Zoom/Span/Scroll on graph and Next/Previous.
  • Box Size adjustable to metrics/ Edge Thickness adjustable to metrics.
  • Graph boxes and edges edition.
  • Facilities across the product to generate graph.
  • Graph Snapshot.


  • Other Features:
  • Integration with Red-gate Reflector.
  • Non-public types and members have a grayed fore color. Public members in non-public types are considerd non-public.


  • New default CQL Rules:
  • Empty static constructor can be discarded.
  • Type/Method/Field with name too long.


  • Bug fixed:
  • Boxes & Arrows Graph generation was not available on 64 bits machines.
  • Trying to drag the header of "RecentFileList" in the RibbonUI mode raised an unhandled exception.
  • When displaying a ContextMenuStrip in the matrix, the currently pointed cell or row loose its pointed appearance.




  • Version2.9.1.2235 (Trial Edition) / 2.9.1.2236 (Professional Edition)
    Date8 august 2008
    Description Feature:
  • Possibility to choose any tier-tools to edit source files when opening the definition of a code element.
  • Possibility to rebase the source files of an analysis loaded with VisualNDepend.
  • Possibility to rebase the source files during analysis.
  • Context Menu: Go to Method Return Type
  • Context Menu: Go to Field Type


  • Performance enhanced:
  • Loading an analysis result with VisualNDepend: 3x faster
  • Dependencies Matrix computation: 5x faster
  • Treemap computation for new metric or level: 3x faster
  • When clicking Ok on Option panel on very large project, the UI could freeze a few seconds.


  • Default CQL rules:
  • Do not raise reserved exception: added more reserved exceptions type.
  • New rule: Abstract base class should be suffixed with 'Base'


  • Usability:
  • Auto-Scrollbar in Project properties 'Analysis' and 'Report' panels.
  • The VisualNDepend UI had some problem when displayed under DPI higher than 96 (default DPI value). It now works well from 96 to 200 DPI.


  • Bug Fix:
  • The name of sub-group in HTML report was not properly displayed.
  • When unselecting all node in Code Browser and then clicking an arrow key, an exception occured.
  • When setting the Metric level to Assembly, Namespace or Type and then loading a new analysis, the metric level was shown as Method on the treemap.
  • When going to reflector from VisualNDepend or VisualStudio, the UI responsivness could take a few seconds.
  • When going to reflector from VisualNDepend, an exception was raised if the assembly file path was not available.
  • The VisualStudio Add-In didn't work properly for VB.NET code elements outside every namespaces.
  • The VisualStudio Add-In might not work properly for some VB.NET methods with some Object parameters.
  • The VisualStudio Add-In didn't work properly for some localized version of VisualStudio.
  • The VisualStudio Add-In could not be properly installed on some Windows Vista installations because of the AppData/Roaming - Application Data directory confusion.
  • Methods that ReadsMutableTypeState were also considered as IsGeneratedByCompiler, no matter if it was generated or not.
  • When Visual Studio 2008 installed and no previous Visual Studio version installed, opening a source file can fail under certain circumstances.
  • Rules that didn't compile with CQL prevented following sibling rules in the same group to be displayed in the report.
  • When importing some coverage data into an analysis loaded by VisualNDepend, the set of CQL queries/rules was not refreshed.
  • When moving a project file with relative path mode, loading it with VisualNDepend could provoke a crash if the OutputDir didn't correspond to a valid absolute path.
  • If the Output dir is a relative path and cannot be infered from the NDepend project file parent dir, the error is properly reported at analysis time.
  • When using the NDepend project option 'Save As' in the Project Properties panel, the list of CQL queries was not persisted.
  • Under certain circumstances, when doing consecutively 2 short analysis within the same minutes, the Output dir content could be deleted.
  • Under certain circumstances, the vertical scroll bar of the Dependency Matrix was hidden when it should be visible.
  • In the menu displayed on right click on the Dependency Matrix, clicking a ToolStripSeparator raised an exception.
  • Copying numerous code elements (> 5K) from the Query Results to the Dependency Matrix could lead to long freeze and sometime exception.


  • Version2.9.0.2187 (Trial Edition) / 2.9.0.2188 (Professional Edition)
    Date18 june 2008
    Description CQL v1.8:
  • New condition defined on fields: IsImmutable
  • New conditions defined on methods: ReadsMutableObjectState, ReadsMutableTypeState, ReadsImmutableObjectState, ReadsImmutableTypeState,
  • New condition defined on assembly: IsFrameworkAssembly
  • New metric: NbOverloads on Method
  • New metric: NbInterfacesImplemented on Type
  • New OPTIONAL: prefix in code element identifier string, to tell the CQL compiler to not emit on error when a code element is not found.


  • Default CQL Constraints:
  • New default design constraints.
  • New default constraints relative to Test Coverage and Test Coverage summary.
  • New default constraints relative to Diff / Changes / Evolution and Diff summary.
  • New default constraints relative to Purity / Immutability / Side-Effects
  • New default constraints relative to .NET Framework usage


  • CQL Queries Organization enhanced:
  • CQL Groups can be organize as a hierarchy.
  • Drag & Drop to organize CQL Groups and CQL Queries.
  • Copy / Paste of CQL Query and Group, inter VisualNDepend.exe program instances.


  • CQL Queries Edition and Execution enhanced:
  • Immediate responsivness of the query editor, whatever the size of the query and the size of the code base analyzed.
  • Undo / Redo / Reset on query edition.
  • Options to enable/disable automatic run and intellisense while typing.
  • Much better performance on intellisense computation.
  • Highlight of query name in query edition.
  • Active Urls in query edition.


  • CQL Queries extracted from code enhanced:
  • CQL constraints extracted from source code are hierarchically organized: first level assembly, second level namespace.
  • Possibility to open the declaration from VisualNDepend of a CQL constraints extracted from source code.
  • Possibility to use the tags $Name$ and $FullName$ to reference the name or full-name of the code element tagged with a CQL constraints extracted from source.
  • Possibility to copy to clipboard the source code excerpt to define a CQL constraint as an attribute in C# or VB.NET source code.


  • Tool to compare source files:
  • Support for the tool DiffMerge from SourceGear.
  • Support for Beyond Compare 3


  • Featurette:
  • When doing an analysis that must be compared to a previous analysis, print the date of the analysis choose to compare with in the report.
  • Possibility to compare 2 builds of a given project by right clicking on the project on the Start Page.


  • Bug Fix:
  • Very scarcely, a KeyNotFoundException could occur when starting VisualNDepend because of a race condition bug.
  • There is now a dependency created from the parent type of a method that uses the 'typeof' operator, and the type referenced by the 'typeof' operator.
  • When doing build comparison, if the body of a method changed just because of an integer literal changed value, the method sometime didn't have the flag CodeWasChanged.
  • When a pure C# application has at least one assembly with just interfaces, comments' metrics of the application were deemed as not available.
  • In pro edition, during analysis if the license file is not found a warning is now emitted to warn that CQL constraints won't be executed.
  • When starting an analysis with the option 'Compare with Most Recent Analysis' it didn't worked properly.
  • When editing a CQL query on a massive code base, when switching quickly between a compiled query to a non-compilable query an exception might occured.
  • When editing a long CQL query, some flickering on the edition panel could happen.
  • When an interface only assembly had a logical name that didn't match its dll physical name, the analysis could crash.
  • System.Runtime.InteropServices.DllImportAttribute that tags methods didn't work with the CQL condition HasAttribute.
  • System.Reflection.AssemblyVersionAttribute that tags assemblies didn't work with the CQL condition HasAttribute.
  • When comparing 2 builds, the relation HasAttribute could be fake on code elements of older build.


  • Version2.8.1.1986 (Trial Edition) / 2.8.1.1987 (Professional Edition)
    Date28 april 2008
    Description
    Feature:
  • Possibility to choose any tier-tools to compare source files when doing build comparison.


  • Bug Fix:
  • In the ribbon page Dependencies, the Weight on cells combo box was sometime filled with improper data.
  • In the ribbon pages CQL and Compare, a query relative to Coverage was sometime generated when clicking on Methods/Types/Namespaces/Assemblies check button.
  • When selecting on the treemap a node matched by the current query, an exception could occur if the height of the query result DataGridView was too small.
  • Under certain circumstances of matching file names, the Source file chooser dialog showed invalid declaration.
  • Public class with at least one public derived class could be considered as CouldBeInternal but actually it cannot be declared as internal.



  • Version2.8.0.1927 (Trial Edition) / 2.8.0.1928 (Professional Edition)
    Date 8 april 2008
    Description
    CQL 1.7:
  • Support for harnessing code coverage data importing from NCover 2.x or VisualStudio TeamSystem (2005 or 2008)
    Metrics:
    - PercentageCoverage available for Assemblies Namespaces Types Methods
    - NbLinesOfCodeCovered available for Assemblies Namespaces Types Methods
    - NbLinesOfCodeNotCovered available for Assemblies Namespaces Types Methods
    - PercentageBranchCoverage available for Methods (NCover only)



  • Feature:
  • Facilities in Project Properties to import coverage data during analysis run.
  • Facilities to import coverage data while viewing an analysis with VisualNDepend.exe.
  • Possibility to use an attribute to exclude some code element from coverage statistics (uncoverable attribute)



  • Bug Fix:
  • The analysis could crahed when using multi-dimensions arrays inside some indexers.
  • The MSBuild task had a bug while using InDir argument.
  • When closing VisualNDepend, user now get warned if the underlying Windows user account doesn't have the authorization to override the VisualNDepend options file.
  • The section Assembly Build Order was sometime empty in the report.
  • When modifying project properties and directly run an analysis, new changes were saved but sometime not presented correctly.



  • Version2.7.0.1816 (Trial Edition) / 2.7.0.1817 (Professional Edition)
    Date6 march 2008
    Description
    CQL 1.6:
  • Support for Attribute: The condition HasAttribute "AttributeClassName" is now support on Assemblies, Types, Methods and Fields.
  • The metric ILNestingDepth is supported on Method.



  • Feature:
  • PDB\Symbols used to be loaded from the same director of their corresponding of assemblies file. Now, the NDepend analysis process also search in all the directory specified if the PDB file is not found in the corresponding directory of assemblies file.
  • 3 default CQL constraints added: 'Code Quality (IL Nesting Depth)' ; 'Fields should be private' ; 'Structure should be immutable'.
  • The NDepend.Console.exe process returns the exit code 0 if the analysis went well, 1 if an error occured and -1073741510 (0xc000013a) if the process is killed.



  • Performance enhancement:
  • Depending on the number of processors, the RAM (i.e the fact that an analysis overused virtual memory) and if the machine is 32 or 64 bits, the analysis process will be 30 to 400% faster and will take around 40% less memory.



  • Bug Fix:
  • Some assemblies could not be analyzed because the framework System.Reflection was unable to load them (since v2.7, NDepend doen't rely anymore on System.Reflection).
    • For certain C++\CLI or MC++ assemblies, the method Assembly.GetTypes() threw an exception.
    • When running on 64 bits the framework System.Reflection had problems loading some 64 bits assemblies.
  • Changes in the XSL file to build report because some Warning and Error messages didn't appear in the report.
  • Some corrupt-memory read exception happened rarely and randomly while analysing assemblies on multi-core machines.
  • In the the Project panel of VisualNDepend, an exception occured when trying to get an assembly from a VisualStudio project file.
  • In the the Project panel of VisualNDepend, when adding assemblies referenced by a VisualStudio project or sln file, assemblies that were already considered as tiers assemblies were not added as application assemblies.
  • When selectiong assemblies, if they were not on a well-formed drive (such as VSS drive) an exception was raised. Now a message box explains why it is not possible.
  • NDepend had problem analyzing methods that had VB optional parameter + compiled with aspnet_merge.exe.
  • When using conjointly VB.NET optional parameters and aspent_merge.exe, NDepend had problems to analyze the assemblies created.
  • When using conjointly VB.NET My namespace and aspent_merge.exe, NDepend had problems to analyze the assemblies created.
  • If the underlying Windows installation didn't have the Helvetica regular font, VisualNDepend.exe could not be started. We now use the Arial font that is supported by all Windows installation.
  • A method operator could be matched by optimal visibility CQl conditions but a method operator is always declared as public.



  • Version2.6.3.1690 (Trial Edition) / 2.6.3.1691 (Professional Edition)
    Date21 december 2007
    Description Bug fix:
    Some tier code elements were not colored properly in the Class Browser panel.


    Version2.6.2.1678 (Trial Edition) / 2.6.2.1679 (Professional Edition)
    Date19 december 2007
    Description Feature:
  • .NET assemblies dir are constantly updated to be the right one. For example, the same NDepend project can be used on a machine where the .NET framework is installed on drive C:\ and on another machine where it is on drive E:\.
  • When initializing a NDepend project, if .NET 3.0 and .NET 3.5 are installed on the current machine, the .NET framework assemblies refence dirs are included automatically in the project:
    C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0
    C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5
  • In Ribbon UI mode: hide the status label at the right when the main Windows get too shrink vertically. This way, the status of CQL queries selected remains visible in this scenario.
  • When opening an Url or a Report from VisualNDepend, VisualNDepend now use the default browser.


  • Bug fix:
  • The NDepend addins XML files for VisualStudio 2005 and 2008 are now installed under the LocalUser settings. Windows Vista refused to install them under AllUser settings.
  • When closing an analysis, the Error List might not be emptied under certain conditions.
  • On CQL intellisense, when the currently edited word was alphabetically lower than the first intellisense proposition, the intellisense proposed the last proposition instead of the first one.
  • Regression bug: When selecting a CQL query with Warning or Error status on the CQL query list, the status description was not updated in the status bar.
    In Ribbon UI mode: at the beginning, the status test on the right was erroneous.
  • With Reflector addin, when selecting a .NET Framework 3.x assemblies, the addin didn't cop with the environment variable %ProgramFiles%.
  • When editing a CQL query, 'mono-line comment' declared inside 'multi-line comments' where taken account (such as /* // */).
  • Reseting Views when exploring a big analysis result (> 100K LOC) took several seconds.
  • In Ribbon UI mode, sometime the caption in the VisualNDepend Windows task bar was erroneous.
  • When creating a 'Quick project' sometime an exception might occur on certain invalid inputed assemblies.



  • Version2.6.1.1619 (Trial Edition) / 2.6.1.1620 (Professional Edition)
    Date12 december 2007
    Description
  • Bug Fix:
  • - VisualNDepend -> Project properties -> Code to Analyze -> Add assemblies of a Visual Studio solution didn't accep VS2008 solutions.
    - When starting an analysis, if Windows was poping the unknow publisher dialog on NDepend.Console.exe, then VisualNDepend crashed.


    Version2.6.0.1607 (Trial Edition) / 2.6.0.1608 (Professional Edition)
    Date 10 december 2007
    Description
    - Addin support for Visual Studio 2008.
    - Support for .NET 3.0 and .NET 3.5 assemblies analysis.
    - Improved VisualNDepend Startup time.
    - SplashScreen at VisualNDepend startup.
    - 3 new panels in VisualNDepend with a VisualStudio look and feel:


  • StartPage panel:
    - Recent Projects list with the possibility to load project only or a previous analysis by right a click.
    - Getting Started links.
    - Addin Installation.
    - Most recent NDepend Version


  • Project Properties panel: (as a replacement for NDepend.Project.exe)
    - Automatic inference of tier assemblies from application assemblies.
    - Improved folder management.
    - Immediate responsivness with asynchronous assemblies loading.
    - Possibility to provide custom XSL sheet to build report.
    - More documentation thanks with SuperToolTip a la Office 2007.


  • Error List panel:
    - NDepend.Console.exe console hiding when analysis started from VisualNDepend.
    - View information when currently running an analysis.
    - Progress bar about currently running analysis.
    - Possibility to abort current analysis.
    - Possibility to enable\disable warnings.
    - Possibility to copy row content in clipboard.


  • Bug Fix:
  • - When visualizing a dependency on the matrix, when doing Alt-Tab to activate another window than the VisualNDepend one, the 2 dependency tooltips were still visible and top front.
    - When running 2 times an analysis on the same project within the same minute, NDepend.Console.exe crash because of a forbidden file access.
    - When executing the analysis from a non-local drive, the analysis was interrupted by a Popup windows to warn about the potentatial problems on executing the analysis on non-local drive.
    - The option panel to enable\disable assemblies took time to load on projects with a lot of assemblies, it is now immediate.
    - The assemblies compiled with 'Any CPU' were tag as 'x86' in the Project Properties assembly Window.



    Version2.5.0.1382 (Trial Edition) / 2.5.0.1383 (Professional Edition)
    Date15 october 2007
    Description
  • CQL v1.5: support for Optimal Visibility detection
  • -Following conditions are now support on Types, Methods, Fields:
       CouldBeInternal, CouldBeInternalProtected, CouldBeProtected, CouldBePrivate, ShouldBePublic
    -CouldBeInternal is also supported on Namespaces.
    -Discard of the following features from the Analysis: 'Potential Dead Code' and 'Optimal Visibility'. They are now both supported by CQL.

  • Bug Fix:
  • -Under certain circumstances, VisualNDepend couldn't be close by clicking the 'Close Window' button.
    -Some DataGridView colors were not properly displayed when running on Windows Vista.



    Version2.4.2.1306 (Trial Edition) / 2.4.2.1307 (Professional Edition)
    Date8 october 2007
    Description
  • Analysis Bug Fix
  • -The analysis crashed while analyzing Mono.Cecil v0.6 because of a special compilation issue.



    Version2.4.1.1292 (Trial Edition) / 2.4.1.1293 (Professional Edition)
    Date24 september 2007
    Description
  • VisualNDepend Bug Fix

  • -Under certain circumstances, the CQL queries panel disappeared.
    -A CQL query made of an empty string could provoke problems in the list of queries DataGridView.
    -Double clicking some button with checkstyle in Ribbon pages could provoke unexpected state.
    -Sometime, when starting Reflector from a menu Window from VisualNDepend, the menu window was sometime not being closed.
    -Under certain circumstances, a field could be considered as written by a method when it was just loaded.
    -When VisualNDepend was started from NDepend.Project, the layout saved from last session was not restored.
    -Under certain circumstances, the text 'Ready' in the status bar was associated with an irrelevant icon.

  • Analysis Bug Fix

  • -Some assemblies compiled for 64 bits processor (such as System.Printing.dll) were not deemed as proper assembly.
    -Under certain circumstances, assemblies files with a uppercase extension (.DLL .EXE) were not deemed as proper assembly.

  • Features

  • -Enhanced error form design and usability.
    -VisualNDepend warns user if she tries to build a 'boxes and arrows graph' from matrix headers with two many code elements.
    -VisualNDepend warns user if she tries to close the application while the current CQL query edited contains some unsaved changes.
    -The CQL Queries panel title contains a '*' when the query has been modifed and is not saved.




    Version2.4.0.1251 (Trial Edition) / 2.4.0.1252 (Professional Edition)
    Date7 september 2007
    Description
  • Enhanced usability of VisualNDepend

  • Use of Ribbon/ApplicationMenu/QuickStartMenu 'a la Office 2007'
    -New 'Changes Explorer' tool in the Build Comparison Ribbon page.
    -New 'CQL Queries and Constraints creator' tool in the CQL Ribbon page.
    -New 'Select Top XXX Code Elements ordered by their current Metric Value' tool in the Metric Ribbon page.

    Docking Windows and saving/restoring of Windows arrangement when shutting down/starting VisualNDepend

    Refactoring of Menus and ToolBars (aka. CommandBar) and saving/restoring of ToolBars arrangement when shutting down/starting VisualNDepend

    Contextual help organized according to main use-cases.

    Super tooltips with 2 levels of explanations and with pictures when relevant.

    Keyboard Shortcuts for main Command and to display/reset panels.

    A new Options panel that includes:
    -The possibility to choose between Ribbon UI and CommandBar UI
    -A new Skin inspired from the VisualStudio2008 one
    -The possibility to choose between 15 skins (the default is the VisualStudio2008 one, but we propose also Office 2007 Blue/Black/Silver, Office 2003...)
    -The possibility to install/uninstall VisualStudio/Reflector Add-Ins from the Option panel

    In concerned DataGridViews, it is now clearly indicated when user can use Drag&Drop of Folder or Assembly from Windows Explorer.

    Enhanced Support/About Form.

  • Bug fixes & enhancements:
    - Some C++/CLI generic types and methods were misnamed by the analysis.
    - Under very specific circumstances, the analysis pinpointed a field use where a property was used.
    - The specific .NET Framework assemblies vjslib, vjswfc, vjswfchtml couldn't be analyzed because of a regression bug.



  • Version2.3.0.1085 (Trial Edition) / 2.3.0.1086 (Professional Edition)
    Date 16 july 2007
    Description
  • NDepend add-ins for VisualStudio2005™ and Reflector

  • VisualNDepend Bug fixes & enhancements:
    -The description of an assembly now contains its full path.
    -VisualNDepend close properly with a descriptive message if the user try to load an analysis where no application assemblies were found.
    -The NbParameters value on methods that have generic type parameters could be wrong.
    -When generating a CQL query/constraint from a VisualNDepend menu, there is no more message box asking to save the currently edited CQL query if it has not been modified.
    -If NDepend quick projects (and also Newer/Older build) exists on the machine, they are automatically found and proposed in the Recent Project list.
    -A warning MessageBox is displayed if the user tries to open a dependency that would lead to a giant matrix (> 500.000 cells) that can potentially triggers an OutOfMemoryException.
    -Opening a source file failed if the path contains some space.
    -An unhandled exception was sometime raised when trying to visualize indirect dependencies box and arrow pic involving a namespace root parent (i.e Xx.Yy.*)
    -An unhandled exception was raised when trying to generate a picture from VisualNDepend and if the current picture file was read-only.
    -An unhandled exception was raised when trying to open as root a code element from a tier assembly and the dependency matrix headers were binded.

  • NDepend.Console analysis Bug fixes & enhancements:
    -Types of parameters of methods were not well named if they were generic types and also declared 'ref' or 'out'.
    -NDepend analysis warns if an application assembly is referencing an outdated version of NDepend.CQL.dll.
    -An information message is displayed to show how many CQL constraints are extracted from application assemblies.
    -When using NDepend.CQL.CQLConstraintAttribute to declare CQL constraints inside your code, the attributes were sometime not properly extracted because of some versionning issues.
    -It is now considered as a 'non-fatal error' when an application assembly cannot be analyzed because a tier assembly cannot be found.
    -The instance field 'value__' of an enumeration type is not considered anymore as an 'IsEnumValue'.
    -The analysis doesn't crash anymore if several assemblies with the same name are accidently provided.
    -The query name is available in the Queries/Query/@Name attribute in the CQLResult.xml file.

  • NDepend.Project analysis Bug fixes:
    -There is no more unexpected exceptions when trying to launch VisualNDepend on previous analysis or trying to see older reports and the NDepend project file was not created yet.
    -Some assembly could not be considered as managed under certain conditions (file extension casing, incremental compilation).


  • Version2.2.2.886 (Trial Edition) / 2.2.2.887 (Professional Edition)
    Date20 may 2007
    Description
  • VisualNDepend bug fix:
    -Dependencies Matrix tooltips were flashing on Windows Vista when Aero was activated.
    -Forbid to enable/disable CQL queries and groups extracted from code.
    -Under some particular conditions, a modified namespace was shown as non-modified.
  • NDepend.Console analysis bug fix::
    -Some non Explicit Interface Method Implementation (EMEI) were considered as EMEI.


  • Version2.2.1.841 (Trial Edition) / 2.2.1.842 (Professional Edition)
    Date7 may 2007
    Description
  • VisualNDepend feature:
    For each CQL constraint, possibility to include in the report the VisualNDepend pic with code elements selected.
  • VisualNDepend bug fix:
    -When switching from one project to another, in some rare circumstance a NullReferenceException was raised.
    -When saving CQL queries and the underlying project file was read-only, an exception was raised.
  • NDepend.Console analysis bug fix::
    -While parsing C# file, some sort of '// comments' at the end of the file were causing an exception.
    -While parsing C# file, if the type was inheriting from some generic types, its declaration in source file was not openable from VisualNDepend.
    -The analyser now tolerates application without IL instructions in order to let users analyze assemblies and application only made of interfaces.
    -Regression corrected that yielded 'assemblies cycles warning' in report even if no cycles were found.


  • Version 2.2.0.811 (Trial Edition) / 2.2.0.812 (Professional Edition)
    Date2 may 2007
    Description
  • CQL 1.4:
    - Query naming with tags <Name> and </Name>
    - Immutability on types and methods: ChangesObjectState M ; ChangesTypeState M ; IsImmutable T
    - Which method write which field: IsDirectlyWritingField M ; IsWritingField M ; DepthOfIsWritingField M
  • Ergonomy in VisualNDepend:
    - Possibility to browse back and forth previously selected code elements
  • NDepend.Project.exe / NDepend.Console.exe:
    - Possibility to do build comparison during analyses


  • Version2.1.1.766 (Trial Edition) / 2.1.1.767 (Professional Edition)
    Date12 apr 2007
    Description
  • Bugs fixed in VisualNDepend:
    - #Items was sometime false in the query result
    - Intellisense on float could raise an exception under special conditions
    - Some special characters were problematic to insert while editing CQl queries with special regex.
    - Build Comparison could yield false results on some classes and methods generated by compiler for anonymous methods under special conditions
  • Ergonomy in VisualNDepend:
    - Better ergonomy on Build Comparison Panel
  • Ergonomy in NDepend.Project:
    - Better ergonomy to handle and edit input and output folders
  • Optimized NDepend.Console analyze:
    - Reduced memory set that allows to analyze bigger applications on 32 bits machine (up to 5.5M IL instructions, around 800K LOC).


  • Version2.1.0.736 (Trial Edition) / 2.1.0.737 (Professional Edition)
    Date 28 mar 2007
    Description
  • VisualNDepend.exe:
    - Support for build comparison on tree code view, dependency view
    - Support for CQL 1.3
    - Better support for dependencies between enumeration and methods.
  • CQL 1.3:
    - New boolean conditions: IsGeneratedByCompiler, IsObsolete, IsSpecialName
    - New boolean conditions dedicated to build comparison: WasChanged, WasAdded, WasRemoved, CodeWasChanged, CommentsWereChanged, VisibilityWasChanged, BecameObsolete, IsUsedRecently, IsNotUsedAnymore, IsUsedDifferently, IsInNewerBuild, IsInOlderBuild
    - New code structure condition: ReturnType


  • Version2.0.6.676 (Trial Edition) / 2.0.6.677 (Professional Edition)
    Date21 fev 2007
    Description Bug fix : initializing a project from a Solution file that references some Web


    Version2.0.5.661 (Trial Edition) / 2.0.5.662 (Professional Edition)
    Date13 fev 2007
    Description Quick selection of assemblies to analyze from VisualNDepend.exe
    Support for Windows 64 bits
    Bug fixes.


    Version2.0.4.640 (Trial Edition) / 2.0.4.641 (Professional Edition)
    Date 01 fev 2007
    Description Availability of Trial and Professional Editions (Not in betas anymore).
    Ability to choose between relative and absolute pathes to your assemblies in NDepend project XML files.
    Minor ergonomy improvements in VisualNDepend.
    Bug fixes.


    Version2.0.3.479 (Release Candidate 1)
    Date 13 dec 2006
    Description
  • NDepend.Console.exe: - Better performance
    - Automatic detection if a new version is available for download
  • NDepend.Project.exe:
    - Possibility to initialize or complete a project from a VisualStudio 2005 solution (.sln) or project file (.csproj .vbproj)
    - Sort warnings by category
    - Open source file position corresponding to a warning
  • VisualNDepend.exe:
    - Dependencies view with many options
    - Boxes and arrows dependencies graph generation
    - Facilities to find dependency cycles at any level (namespaces/types/methods).
    - Support for C# source code metric (Lines of code, Comments, Cyclomatic Complexity)
    - Namespace Hierarchy Mode : Tree or Flat
    - Open source file position for definitions of namespaces, types, methods
    - More support for CQL query automatic generation
    - Supports CQL 1.2
    - Better ergonomy
  • CQL 1.2:
    - New metrics: CyclomaticComplexity TM, NbLinesOfComment ANTM, PercentageComment ANTM, AssemblyLevel A, NamespaceLevel N, TypeLevel T, MethodLevel M,
    - New keywords: HasLevel ANTM, ContainsNamespaceDependencyCycles A, ContainsTypeDependencyCycles N, ContainsMethodDependencyCycles T
    - Wildcard support for namespace names


  • Version2.0.2.0 (beta2)
    Date26 aug 2006
    Description
  • NDepend.Console.exe: Better performance (up to 1M IL instructions analyzed/minutes), New command line options /InDirs /OutDir /Help /Silent /XslForReport /EmitVisualNDependBinXml
  • NDepend.Project.exe: Better ergonomy
  • VisualNDepend.exe: Better ergonomy, support CQL 1.1, support framework assemblies
  • CQL 1.1: New keywords: NbLinesOfCode, IsDirectlyUsing, IsDirectlyUsedBy, TypeRank, MethodRank, IsInFrameworkAssembly, IsUsingPinning, IsExplicitInterfaceImpl, IsFinalizer, IsEntryPoint, HasFinalizer, FieldCa, MethodCe, MethodCa, NamespaceCe, NamespaceCa, Better code elements naming convention (especially for generics),

  • + warns about assemblies versionning issues
    + warns if PDB files are not in-sync with source files
    + interaction between VisualNDepend.exe and Visual Stutio .NET (2002, 2003, 2005) (double click on a method opens its source definition)
    + new NbLinesOfCode metric (require the presence of PDB files of application assemblies)
    + new MethodRank, TypeRank metrics based on Google PageRank
    + new FieldCa, MethodCe, MethodCa, NamespaceCe, NamespaceCa metrics
    + new internal code structure abstract model which will allow Java, C++ or C++/CLI analyses (a C++/CLI code structure provider is currently developped) + all known bugs fixed


    Version2.0.1.0 (beta1)
    Date 04 apr 2006
    Description Support for .NET 2.0 assemblies.
    Support for the Code Query Langage.
    Add the NDepend.Project.exe
    Add the VisualNDepend.exe UIs.
    Add the Size Of Instance metric.
    IL analyse powered by Cecil.


    Version1.3.2
    Date6 aug 2004
    DescriptionSolve a bug on multi directory application (thanks to Ole Kaare Andresen)


    Version1.3.1
    Date11 jul 2004
    DescriptionWildcard facility for member visibility filters Regression bug correction concerning assemblies instability computation (thanks to Frans Bouma).


    Version1.3.0
    Date3 jun 2004
    DescriptionNew metrics Types (CC, LCOM, RFT…). Some optimization and refactoring of source code.


    Version1.2.0
    Date13 may 2004
    DescriptionNew metrics concerning IL instructions (Total IL inst…). Analyse of optimal visibility and uselessness of a type or a member. Analyse at IL instruction level (thanks to ILReader from Lutz Roeder) Complete refactoring of source code.


    Version1.1.0
    Date28 apr 2004
    DescriptionDrawing components dependencies diagram (thanks to Jonathan de Halleux). Enhanced Application statistics (std dev…)


    Version 1.0.0
    Date26 apr 2004
    DescriptionInitial public release.