What's new in CppDepend 2017!

CppDepend v2017.2


Interactive Abstractness vs. Instability Diagram in Report

  • The Abstractness vs Instability diagram provided in the report is now a javascript interactive control.
  • Hovering over a dot shows the corresponding project name and values.
  • A search textbox lets you filter a subset of projects by name

Custom CQLinq extensions

For more flexibility, CppDepend v2017.2 provides a powerful way to develop your custom CQlinq extensions using the API.

A library CustomCQlinqExtensions can be found where CppDepend is installed, you just have to add your extensions, build the library and copy the generated dll in the lib directory. Below are some use cases:

  • Easily define your new metric by adding an extension method, Extensions can be added to Application, Project, Type, Method and Field.
  • You can also define an extension to reuse some logic of your queries.
  • You can also define an entire rule using an extension.

CppDepend v2017.1



New licensing and release scheme

  • CppDepend licensing is moving to a yearly subscription model.
  • We now plan 3 to 4 important releases per year instead of one major release every 18 months. This will provide users with more value, more often to users.
  • When purchasing this annual subscription, you will get a perpetual fallback license for the exact version available at the time of purchase. This perpetual license will allow you to continue to use the software even after the subscription ends, but without support.
  • The user will receive up to a 40% discount for continuous subscription.
  • All version 6 licenses will be entitled to a 40% upgrade discount.
  • Licenses purchased before 2015 are also eligible for an upgrade discount.

Better Issues Management

  • A new Issues menu offers actionable options to list issues to be fixed by priority, and allows you to browse debt and issues per rule or per code element.

  • Quality gates, rules and issues numbers are shown on the dashboard. All these numbers are clickable to get lists of quality gates, rules or issues.

  • A single click allows you to list issues with a particular severity, added or fixed, since the baseline.


  • New menu to list issues concerning a code element.

  • Hovering over an issue with the mouse displays a complete description.

  • Code element tooltip now shows debt and issues-related data.

Dashboard Improvements

  • Dashboards have been improved in the CppDepend UI in Visual Studio, in the generated reports section.
  • It now contains technical debt estimations, quality gates, rules and issues data.
  • For each data, a visual indicator shows the progression since baseline. Red and green coloured values are used to pinpoint progress or regression.
  • Clicking any value generates a query that drills down through corresponding data, which can be a list of code elements, debt estimations, quality gates, rules or issues.

Enhanced Visual Studio Integration

  • CppDepend analysis can be started after a build to automatically refresh CppDepend results. New settings are provided to avoid starting the CppDepend analysis when the build's purpose is to provide up-to-date compiled bits for a run session, a debug session or a unit-test session. In such a situation, it might be preferable to avoid starting the CppDepend analysis to avoid both consuming CPU cycles and distracting the developer's focus.
  • Minimal interval between the automatic refreshing of CppDepend results after a build in VS which can now also be expressed in minutes.

Code Querying Improvements

  • Thanks to the new queryable domains. QualityGates, Issues, IssuesInBaseline, and Rules queries can be written to match IQualityGate, IIssue, and IRule objects according to any criteria (rule violated or not, quality gate status that went from pass to fail, issues added since baseline, issues severity or debt, etc.).


  • New syntax to write quality gates.
  • A new button lets you run the currently edited code query against the baseline.


  • A code query can now return code elements of various kinds such as projects, namespaces, types, methods and fields.

    Thanks to this, new queryable domains are available including CodeElements ANTMF ; CodeElementParents ANT ; TypesAndMembers TMF ; Members MF ; CodeContainers ANTM ; AttributeTargets ATMF ; where Assemblies, Namespaces, Types, Methods, Fields.

  • A query can now return values of technical debt through new types: Debt, AnnualInterest, DebtRating, Severity, TrendIcon and can also return System.Version and System.TimeSpan values.
  • A colour scale is now shown on query result metric values making it easier to compare them at a glance.


  • You can now write very simple queries like Methods or JustMyCode.CodeElements or codebase.PercentageCoverage. This syntax simplifies writing quality gates and trend metrics queries.
  • Trend metrics used to only be defined with queries that return a scalar. A trend metric can now also be defined with a query that returns rows. In such a situation. The trend metric value is equal to the row count.
  • Improved query editing experience including:

    - PageUp/PageDown and dot supported on completion items list

    - Smart query results with column width auto-adjustment

    - No more flickering on query result row sorting.

Default Rules-Set Improvements

  • All default rules now include debt/interest estimation formulas that offer real-world estimations of the technical-debt, out of the box. If needed, these formulas can be easily customized.

    Typically rules related to poor coverage, poor quality and poor structure are the highest source of technical-debt.

  • The CWE rules are added to the default rules.
  • Many rules related to the memory Management,STL, and IO usage are added to the default rules.

Support for Visual Studio 2017

CppDepend 2017.1 supports Visual Studio 2017.

CppDepend 2017.1 also supports Visual Studio 2015, 2013, 2012 and 2010.

Smart Technical Debt Estimation

  • A CppDepend rule can now assign a technical debt and annual interest values to its issues.
  • The technical-debt is the estimated man-time that it would take to fix the issue.
  • The annual-interest is the estimated man-time consumed per year if the issue is left unfixed. This provides an estimate of the business impact of the issue.
  • Issues of a rule now have a severity level in the blocker, critical, major, minor, and info range.

    The annual-interest is a measure of an issues severity. The severity and the annual-interest represent the same concept where the annual-interest is a continuous measure while the severity is a discrete measure.

  • For example the rule below matches methods which are too complex. The technical debt is linear to the methods excessive complexity and the annual-interest is linear to the methods code coverage by tests (10 minutes per year for 100% coverage, 2 hours per year for 0% coverage).

    All default rules now have these debt/interest formulas which offer real-world estimations, out of the box. If needed, these formulas can be easily customized.


  • The dashboard now shows estimated Debt values and evolution since baseline.

    This dashboard is available in the CppDepend UI in Visual Studio and in generated reports.


  • Many facilities are offered on the dashboard to query,sort,filter,group the debt estimated values and the issues set.

    These facilities include sorting debt and issues per rule or per code element, focusing on new and fixed debt since baseline and issues to fix by priority heuristics.

    Customizable Quality Gates are now available to define excessive thresholds over debt estimations that might induce build failure and prevent check-in.

    Customizable trend metrics are now available to measure debt trending.

    The key is to offer comprehensive sets of actionable results.

  • The CppDepend project properties now have a Debt and Issues panel to customize all technical debt computation aspects.

    This includes estimated Debt and Interest values conversion from man-time to cost estimation.

    This also includes Debt Ratio and SQALE Debt Rating on a code element (as defined by the SQALE method). These are expressed as a percentage of the estimated technical-debt compared to the estimated effort it would take to rewrite the code element from scratch.

    Debt settings can also be shared among different CppDepend projects.


  • More info on Smart Technical Debt Estimation here

Quality Gates

  • CQLinq can now be used to write quality gates. Technically a quality gate is like a trend metric. It's a code query that returns a scalar or rows (in which case the value is the row count). In practice a quality gate is used to fail a build when some thresholds are violated. A warn threshold, a fail threshold and a unit can be provided.
  • Thanks to the new CQLinq capabilities, quality gates can be used to measure and monitor any fact concerning code, but also any fact concerning technical-debt, rules and issues.
  • Quality gates can also rely on differences since the baseline (diff), which means that they can monitor progression like new technical debt since baseline or % code coverage on new code written since baseline.

  • 11 quality gates are provided per default and LINQ queries can be written to query the quality gates status.


  • In previous CppDepend versions, a build used to fail upon critical rules failures. Now the build fails upon any quality gate failure. The critical rule concept has been kept and the default quality gate Critical Rules Violated mimics the build fail behavior of previous CppDepend versions.

Enhanced Baseline Experience

  • Any stored baseline can be applied from the dashboard through a single click.

    Code base diff, rules, issues and quality gates are then recomputed in a few seconds.


  • Any newly created project now has the baseline settings set to 30 days ago per default.

    As a consequence, the stored baseline with the date closest to 30 days ago is applied.

    The first analysis result of a project is compared with itself since no other result can be used as the baseline.

  • Rules and Quality Gates are now executed against both current and baseline analysis results. Debt estimation, issues and status differences can then be queried.

  • The search panel can now match all code elements added, refactored or removed since baseline.

    The results also show debt and issues information.

    This perspective is ideal to browse changes and issues introduced since the baseline.

Report Improvements

  • The new improved report dashboard now contains information on debt and issues.

  • The report's main section contains Quality Gates status summary.

  • The report's Rules Summary now shows the number of issues added and fixed per rule.

  • New issues since the baseline are shown first in the rule results.

    A colour scale is now shown on values making it easier to compare them at a glance.

    Different fonts are used to highlight changes in code elements since the baseline: bold font for added code, underlined for refactored code and bold striked for removed code.


  • A green/red colour scale is now shown on code coverage values.

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