الفهرس | Only 14 pages are availabe for public view |
Abstract Abstract--Code smells are indicators of code anomalies in poorly implemented or designed software programs. In addition to code fault-proneness and software defects, code smells may substantially hinder code maintainability in the future. The developer’s mission to read code, maintain it or add new features, which can become difficult. Automatic detection of design flaws assists developers in identifying code smells in their software programs to avoid low-quality delivery, which negatively affects software deliverable deadlines. Nevertheless, the interpretation of code smells is subjective. Artificial intelligence (AI)-based detection tools have recently attracted the attention of researchers and have succeeded in eliminating the dependency on the developers’ perception and experience and the need for their prior knowledge of code smell characteristics. However, the majority of existing tools, that are based on machine learning (ML) adopted approaches, are based on structural information and disregarded the importance of capturing code semantic features that reflect the complex semantic relationships in textual code. Fewer tools exploit deep learning (DL) based on the textual features approach. This paper proposes a detection system that exploits ML and DL techniques and compares them. The paper applies six DL techniques based on code semantics features extracted from software code abstract syntax trees (ASTs), and eleven different ML techniques based on code structural features. Furthermore, we propose a complementary refactoring tool that fixes the code smells detected in the detection stage, in order to form an end-to-end refactoring solution. The results showed that DL techniques are still comparable to ML techniques, the majority of ML classifiers, especially the Random Forest algorithm, achieve exceptional performance. |