Unveiling Hybrid Cyclomatic Complexity: A Comprehensive Analysis and Evaluation as an Integral Feature in Automatic Defect Prediction Models
Laura Diana Cernau, Laura Diosan, Camelia Serban
TL;DR
The paper investigates whether Hybrid Cyclomatic Complexity (HCC), defined as the sum of a class's own complexity and the inherited complexities from its ancestors, improves automatic defect prediction in OO systems. It analyzes HCC's effectiveness relative to its components (own vs inherited) using open-source datasets and contrasts their predictive utility. The study emphasizes the distinction between class complexity and inherited complexity and seeks to determine the independence of their contributions, aiming to validate HCC as a comprehensive complexity metric for defect forecasting. The findings suggest that inherited complexity is not strongly correlated with class complexity, supporting the potential of HCC as a meaningful, disentangled feature for defect models, while highlighting that summing complexities may obscure important aspects of inheritance.
Abstract
The complex software systems developed nowadays require assessing their quality and proneness to errors. Reducing code complexity is a never-ending problem, especially in today's fast pace of software systems development. Therefore, the industry needs to find a method to determine the qualities of a software system, the degree of difficulty in developing new functionalities, or the system's proneness to errors. One way of measuring and predicting the quality attributes of a software system is to analyse the software metrics values for it and the relationships between them. More precisely, we should study the metrics that measure and determine the degree of complexity of the code. This paper aims to analyse a novel complexity metric, Hybrid Cyclomatic Complexity (HCC) and its efficiency as a feature in a defect prediction model. The main idea behind this new metric is that inherited complexity should play a role in the complexity of a class, hence the need for a metric that calculates the total complexity of a class, taking into account the complexities of its descendants. Moreover, we will present a comparative study between the HCC metric and its two components, the inherited complexity and the actual complexity of a class in the object-oriented context. Since we want this metric to be as valuable as possible, the experiments will use data from open-source projects. One of the conclusions that can be drawn from these experiments is that inherited complexity is not correlated with class complexity. Therefore, HCC can be considered a valid metric from this point of view. Moreover, the evaluation of the efficiency of the prediction models shows us a similar efficiency for HCC and the inherited complexity. Additionally, there is a need for a clear distinction between a class's complexity and its inherited complexity when defining complexity metrics.
