Unsupervised Machine Learning for Effective Code Smell Detection: A Novel Method

The quality of source code is negatively impacted by code smells. Since the term "code smell" originated, numerous attempts have been made to comprehend it by identifying it using various techniques, such as metric-based, heuristic-based, optimization-based, machine learning (ML)-based, et...

Full description

Saved in:
Bibliographic Details
Main Authors: Ruchin Gupta, Narendra Kumar, Sunil Kumar, Jitendra Kumar Seth
Format: Article
Language:English
Published: Croatian Communications and Information Society (CCIS) 2024-12-01
Series:Journal of Communications Software and Systems
Subjects:
Online Access:https://jcoms.fesb.unist.hr/10.24138/jcomss-2024-0083/
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:The quality of source code is negatively impacted by code smells. Since the term "code smell" originated, numerous attempts have been made to comprehend it by identifying it using various techniques, such as metric-based, heuristic-based, optimization-based, machine learning (ML)-based, etc. Among these, supervised machine learning (SML) has shown effectiveness in detecting code smells. However, SML techniques have significant limitations, including the dependency on expensive and high-quality labeled data, the need for representative training datasets, and the risk of introducing biases in labeled examples that lead to skewed predictions. To overcome these challenges, this study introduces a method that leverages unsupervised machine learning (UnML) along with feature engineering. Unlike SML, UnML does not require labeled data and minimizes potential biases. The proposed method was evaluated using four datasets containing different types of code smells and was compared with a previous study that used SML techniques. The results indicate that the UnML-based method is effective, achieving outcomes closely aligned with those from the SML approach. This method is especially beneficial in situations where labeled data is scarce or unavailable and can be used to identify new code smells, generate labeled data for SML and detect multiple code smells simultaneously within a codebase.
ISSN:1845-6421
1846-6079