Testwell CMT++/CMTJava are Verifysoft Technology tools devoted to code complexity analysis. In the last years the average application dimensions are grown up considerably in both enterprise and embedded worlds. With the increasing code line number the level of criticality is raised up too. This is why tools are needed able to analyze software complexity. These are among the main points a company has to be focused on:

  • correlating the code complexity with the application index of defectiveness and stability;
  • a complex code is difficult to be tested by means of standard methodologies ==> more errors in final results;
  • a complex code is difficult to be maintained;
  • several quality standards (such as ISO 26262) require low-complexity code.

Criticalities often increase when useless and redundant code grows. When code raws enlarges, the comprehension decreases and maintenance cost increases. Low complexity applications are then advantageous both in terms of time and cost.


What do CMT++ and CMTJava measure?

Based on code static properties, CMT++ and CMTJava provide an approximate estimation of how much the code complexity affects the amount of possible errors

, of how long the code comprehension will be, and so on. Moreover the design team often does not have enough time for checking the entire developed code: CMT++ and CMTJava help identifying only critical modules where the possibility of future problems is higher.

Testwell CMT++ and Testwell CMTJava analyze applications by means of the following metrics:

  • Line-of-codes (LOC):
    • LOCbl number of blank lines;
    • LOCcom number of commented lines;
    • LOCphy number of total lines in the project;
    • LOCpro effective number of only coded lines;
  • Halstead Metrics:
    • B error amount estimation;
    • D level of difficulty and error inclination;
    • E implementation effort;
    • L program level (application abstraction level);
    • N code length;
    • N1 variable amount;
    • N2 operation amount;
    • n dictionary size (unique variables + unique operations);
    • n1 number of unique variables;
    • n2 number of unique operators;
    • T execution time / code comprehension time;
    • V volume: size of implemented algorithm;
  • McCabe Ciclomatic number: the Cyclomatic number v(G) describes the application control flow complexity;
  • Maintainability Index: the maintainability index is evaluated by means of mathematical formulations exploiting the code line amount and the McCabe and Halstead metrics as input data. The measurement and the track of maintainability help reducing and/or inverting the natural tendency of a code towards an entropy increase and the degradation of the code integrity. The result is how much cheaper and less dangerous is ri-editing the code in comparison with modifying it.

Alarm threshold values of Testwell CMT++ and Testwell CMTJava are customizable: default values are only suggestions provided by statistical techniques based on “success codes”. CMT++ and CMTJava use metrics derived from industrial standards. Since absolute limits are not identifiable, Testwell CMT++ and CMTJava allow to customize alarm limits according to specific needs.

Main features of Testwell CMT++ and CMTJava:

  • not pre-processed original file evaluation;
  • extremely fast ==> they analyze applications in a few minutes;
  • able to handle medium and large files;
  • reports edited in HTML or TXT formats;
  • GUI integration in Visual Studio framework;
  • available for several platforms, such as Windows, Linux, HP, Solaris, etc.


Verybench is a GUI enabling managers and developers to collaborate for achieving a better source code. By means of metrics external to the personnel involved in the development, Verybench enables to write detailed reports not influenced by point of views of single software developers.