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:
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 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):
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 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.
The first line is the reposirtory address and the second line is the command used to download the source code
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.
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.
The development of these tools is supported by the Qualipso project, CNPq, and the USP FLOSS Competence Center.