Follow us Follow us Rss Feed
login

Kalibro Metrics

Source code metrics are not new, but they have not been fully used in software development. One reason is that most metrics does not have known thresholds. Metric tools show isolated numeric values, which are not easy to understand. Also, the interpretation of these values depends on the context.

Kalibro Metrics aims to improve the use of source code metrics. It is designed for easy integration with a metric collector tool and show the results in a friendlier way. For that, it allows a metric specialist to create a configuration of thresholds associated with qualitative evaluation, including comments and recommendations. These configurations are used to enhance metric results interpretation.

Features provided by Kalibro Metrics include:

  • Creation of configurations, i.e. a set o metrics for being used in the evaluation of a project
  • Creation of new metrics (via Javascript) based on the ones provided by the metric collector tool
  • Creation of ranges associated to a metric and a qualitative evaluation (may be plain text or HTML)
  • Calculation of statistics results for higher granularity modules (e.g. average LOC of classes inside a package)
  • Possibility of exporting results to a CSV file
  • Calculation of a grade for the project, based on given weights for metrics and grades for ranges (allows project comparisons)
  • Possibility of making interpretation more user-friendly associating colors to ranges
  • Download of source code from remote zip file, tarball or Subversion repository

 

Analizo


Kalibro Metrics is delivered with the proper configuration to run using Analizo - a free and multi-language toolkit - as the source code analysis tool. Analizo supports the extraction and calculation of a fair number of source code metrics, generation of dependency graphs, and software evolution analysis. It efficiently parses source code written in C, C++ and Java.

In order to have an easy-to-use tool which provided information for multi-language source code, Analizo was designed to support the use of external tools as extractors. Doxyparse is the main extractor and grants great performance. It is based on Doxygen, a widely used open source tool for the generation of documentation through the code comments made in many programming languages.

Analizo provides a simple YAML output containing global metrics concerning the whole project and module metrics for each module analyzed. The global metrics are divided in two subsets:

  • Statistical metrics take into account the metric values of every module to calculate average, standard-deviation, variance, maximum, minimum, median, skewness, kurtosis and sum of all of them.

  • The Non-Statistical Metrics are project-wide metrics meaning that it is calculated just considering the source code information of the entire project and not the values of module metrics. They are:

  • Total Number of Abstract Classes
  • Total Coupling Factor
  • Total Effective Lines of Code
  • Total Methods Per Abstract Class
  • Total Modules/Classes
  • Total Modules with Defined Attributes
  • Total Modules with Defined Methods
  • Total Number of Methods

As for the module metrics, Analizo computes:

  • Afferent Conexions per Class
  • Average Cyclomatic Complexity per Method
  • Average Method Lines of Code
  • Average Number of Parameters per Method
  • Coupling Between Objects
  • Depth of Inheritance Tree
  • Lack of Cohesion of Methods
  • Lines of Code
  • Maximum Method Lines of Code
  • Number of Attributes
  • Number of Children
  • Number of Methods
  • Number of Public Attributes
  • Number of Public Methods
  • Response For a Class

 

Kalibro Desktop


Kalibro Desktop is the simplest way of using Kalibro Metrics. It provides all Kalibro features with a swing user interface. In order to use it, you just need to (see installation guide for details):

  • Create a Mysql database for storing project results and configurations
  • Install Analizo or provide configuration for another collector
  • Download the runnable JAR file provided here
  • Configure Kalibro for using the collector and the database provided

Kalibro Desktop can also be used as a graphical user interface for Kalibro Service. In this case, database and metric collector installation is required only in the server side.

 

Kalibro Service


Kalibro Service provides Kalibro Metrics features through a Web Service interface. It was created for integration with Spago4Q – a free platform to measure, analyze and monitor quality of products, processes and services. Installing it has basically the same steps as Kalibro Desktop, but instead of the JAR file, a WAR file is provided for being loaded on a servlet container (tested only with Apache Tomcat).

Kalibro Service is integrated to Spago4Q through the KPI model, extractor and extraction process configuration provided here.

 

Downloads


 

Repositories


The first line is the reposirtory address and the second line is the command used to download the source code

 

Documentation


 

Free Sofware Community


This version is the Kalibro Metrics final release delivered to Qualipso project. New features will be implemented according to free software community interaction. Kalibro Metrics is part of a free software community called Mezuro. This community is comprised of multi-language code analysis and vizualization tools.

 

Authors


  • Carlos Morais
  • Fabio Kon
  • Paulo Meirelles
  • Vinícius Daros

 

License


Kalibro Metrics is Free Software and can distributed under the GNU LPGL (GNU Lesser General Public License) version 3.0. 

The license terms can be found in the GNU Project's Web site at http://www.gnu.org/copyleft/lesser.html (a copy of GPL text upon which LGPL relies is also provided).

The directory "Libraries" contains third-party libraries distributed along with Kalibro source code for convenience. Their respective licenses are indicated in the file LICENSE within the referred directory.

 

Acknowledgments


The development of these tools is supported by the Qualipso project, CNPq, and the USP FLOSS Competence Center.