What's new in CppDepend!

CppDepend v2020.1

Dependency Graph Completely Rebuilt

  • New navigation system:
    • Drag and drop from Visual Studio solution explorer
    • Expand/Collapse parent elements
    • Search elements in graphs by name
    • Call graph / Coupling graph / Inheritance graph ... generated with a single-click
    • Center selected elements
    • Undo / Redo
    • Graph can be saved / loaded as a list of actions (and not as a list of nodes) so it gets refreshed when code changes.
  • New layout options:
    • Group-By Assemblies, Namespaces, Types, Clusters
    • Filters to show or hide: third-party assemblies, code generated, non-public elements.
    • Box size proportional to element size, Edge width proportional to coupling strength
    • Color conventions instantly identify caller/callee elements
    • Complex graph simplified with Clusters
  • Export to SVG vector format or PNG bitmap format.
  • The graph shown in reports has been improved with the new Cluster feature.

Dependency Graph scales on very large Application

The architecture of large applications can be explored and navigated live.

The short GIF below shows a graph made of 15,000+ classes with a zoom on System.String and then System.Dictionary

Obtain a Coupling Graph with a single-click

Click an edge between 2 elements then click one of the links coupling graph.

A graph made of children elements involved in the coupling is shown, for example all classes involved in the dependency between two projects.

In the background a code query is generated to match elements shown within the coupling graph.

Graph of Changes since Baseline

If a baseline is available the changes map link opens the search panel to search classes, methods and fields added or modified since the baseline and exports these elements to the graph.

Source File Store Out Of The Box

  • Parsed source files are now zipped at analysis time. This behavior is out of the box and transparent for the user, no configuration needed.
  • This enables comparison of source file modifications against baseline version.
  • When opening a source file declaration, if the source file is not found locally it is fetched from the analysis result zip store.

CppDepend on Linux completely rebuilt

  • The Linux GUI is completly rebuilt to use the GTK framework for a better user experience.
  • It's possible now to analyse out of the box the Eclipse and QtCreator projects.
  • SonarQube plugin is now available on Linux.

Cuda Support

CppDepend fully supports now the analysis of the CUDA-based applications.

Improved Physical structure analysis

When you create a new CppDepend project you have the choice to use a logical view (code grouped by namespaces), or a physical view ( code grouped per file).

  • The new dependency graph gives now a powerful way to explore the dependencies between folders and files.
  • From the cqlinq queries you can now query the folders and files where many metrics are available to create advanced custom rules.
  • From the Dependency Matrix you can explore in depth the dependencies between folders and files.

Bamboo and AppVeyor Integration

CppDepend can be now integrated to Bamboo and AppVeyor.

Search in Graph

Search for elements by name on large graphs consisting of hundreds or thousands of elements in real-time.

Keep or remove matched elements.

Regex supported.

The short GIF below searches all namespaces whose names contain the string customer, selects them and then expands them to show all their children classes.

Obtain a Call Graph with a single-click

Click a code element to select it and then click one of the links: callers and callees, callers or callees

Use a combo-box to select the call depth. A call depth value N greater than one means that elements calling elements ... (N times) ...calling the element(s) selected are shown.

A call graph can be obtained from several elements selected.

In the background a code query is generated to match elements shown within the call graph.

Color Conventions to Highlight Dependents

Dependents of the selected elements and related edges, are instantly highlighted. This also works for the hovered element if no selection.

  • Green for direct callers, dark-green for callers of callers (recursive).
  • Blue for direct callees, dark-blue for callees of callees (recursive).
  • Red for mutual dependents, dark-red for non-direct mutual dependents (recursive).

A help panel is shown by default to explain the color convention and can then be discarded

Export to SVG vector format or PNG bitmap format

Click the images below to open some SVG vector graph in your browser.

Graph of Entangled Code

The cycles link edits a code query that matches cycles between namespaces.

In the GIF below, a cycle of 30 namespaces is exported to the graph. These 30 namespaces all depend on each other and together they form a super-component.

Code Diffs are now Easier to Browse

  • When editing a query or a rule that relies on diff, double-clicking a code element changed since the baseline has for effect to compare its older and newer source. This makes diff review session easier.
  • In Visual Studio 2019,2017,2015,2013 and 2012 when diffing a source file, the diff panel is opened in the current Visual Studio instance no matter if the Source File Compare Tool option is set to a different Visual Studio version.
  • New menu Visual Studio CppDepend Code Diff since Baseline now opens the Search Code Elements by Change panel. The result can be easily browsed since code elements are now expanded until the type level. Also double clicking any changed element now opens sources diff.

With CppDepend, software quality can be measured using Code Metrics, visualized using Graphs and Treemaps, and enforced using standard and custom Rules.

CppDepend offers a wide range of features. It is often described as a Swiss Army Knife for C and C++ developers.

Start Free Trial